⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ustainfo.pas

📁 在在一原封不动硒鼓二可耕地z经理可耕地可耕地枯草杆菌二期工程二枯枯树可耕地票面苛
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  begin
    aqStaInfo.Cancel;
    aqStaInfo.CancelBatch;
  end;

  dmPer.OpenFami(IntToStr(ID));
  aqStaInfo := dmPer.aqFami;
  if (btnAdd.Caption = '提  交') and (aqStaInfo.State <> dsInsert) then
  begin
    aqStaInfo.Append;
    SetState(ssFami, false);
    Exit;
  end
  else if (btnAdd.Caption = '确  定') and (aqStaInfo.State <> dsEdit) then
  begin
    aqStaInfo.Edit;
    SetState(ssFami, false);
    Exit;
  end;

  SetState(ssFami, true);
  if aqStaInfo.RecordCount = 0 then
    btnEdit.Enabled := false
  else
    btnEdit.Enabled := true;
end;

procedure TfrmStainfo.tsAPShow(Sender: TObject);
var
  i: Integer;
begin
  if aqStaInfo.State in [dsEdit, dsInsert] then
  begin
    aqStaInfo.Cancel;
    aqStaInfo.CancelBatch;
  end;

  dmPer.OpenDep;
  aqStaInfo := dmPer.aqDep;
  if not aqStaInfo.Eof then
  begin
    dbDep.Clear;
    for i :=0 to aqStaInfo.RecordCount - 1 do
    begin
      dbDep.AddItem(aqStaInfo.FieldByName('dep').AsString, nil);
      aqStaInfo.Next;
    end;
  end;   
  dmPer.OpenAP(IntToStr(ID));
  aqStaInfo := dmPer.aqAP;
  if (btnAdd.Caption = '提  交') and (aqStaInfo.State <> dsInsert) then
  begin
    aqStaInfo.Append;
    SetState(ssAP, false);
    Exit;
  end
  else if (btnAdd.Caption = '确  定') and (aqStaInfo.State <> dsEdit) then
  begin
    aqStaInfo.Edit;
    SetState(ssAP, false);
    Exit;
  end;

  SetState(ssAP, true);
  if aqStaInfo.RecordCount = 0 then
    btnEdit.Enabled := false
  else
    btnEdit.Enabled := true;
end;

procedure TfrmStainfo.tsTrainShow(Sender: TObject);
begin
  if aqStaInfo.State in [dsEdit, dsInsert] then
  begin
    aqStaInfo.Cancel;
    aqStaInfo.CancelBatch;
  end;

  dmPer.OpenTrain(IntToStr(ID));
  aqStaInfo := dmPer.aqTrain;
  if (btnAdd.Caption = '提  交') and (aqStaInfo.State <> dsInsert) then
  begin
    aqStaInfo.Append;
    SetState(ssTrain, false);
    Exit;
  end
  else if (btnAdd.Caption = '确  定') and (aqStaInfo.State <> dsEdit) then
  begin
    aqStaInfo.Edit;
    SetState(ssTrain, false);
    Exit;
  end;

  SetState(ssTrain, true);
  if aqStaInfo.RecordCount = 0 then
    btnEdit.Enabled := false
  else
    btnEdit.Enabled := true;
end;

procedure TfrmStainfo.tsStatShow(Sender: TObject);
begin
  sbDepClick(Sender);
end;

procedure TfrmStainfo.btnEditClick(Sender: TObject);
begin
  if pcSta.ActivePageIndex = 5 then
    tsStainfo.Show;
  btnEdit.Visible := false;
  aqStaInfo.Edit;

  case pcSta.ActivePageIndex of
    0: SetState(ssSta, otEdit);
    1: SetState(ssExper, otEdit);
    2: SetState(ssFami, otEdit);
    3: SetState(ssAP, otEdit);
    4: SetState(ssTrain, otEdit);
  end;
end;

procedure TfrmStainfo.btnAddClick(Sender: TObject);
begin
  if pcSta.ActivePageIndex = 5 then
    tsStainfo.Show;
  if btnAdd.Caption = '添  加' then
  begin
    aqStaInfo.Append;
    case pcSta.ActivePageIndex of
      0: SetState(ssSta, otAdd);
      1: SetState(ssExper, otAdd);
      2: SetState(ssFami, otAdd);
      3: SetState(ssAP, otAdd);
      4: SetState(ssTrain, otAdd);
    end;
  end
  else if btnAdd.Caption = '提  交' then
  begin
    case pcSta.ActivePageIndex of
      0: AddData(ssSta);
      1: AddData(ssExper);
      2: AddData(ssFami);
      3: AddData(ssAP);
      4: AddData(ssTrain);
    end;
  end
  else
  begin
    case pcSta.ActivePageIndex of
      0: UpdateData(ssSta);
      1: UpdateData(ssExper);
      2: UpdateData(ssFami);
      3: UpdateData(ssAP);
      4: UpdateData(ssTrain);
    end;
  end;
end;

procedure TfrmStainfo.btnInquClick(Sender: TObject);
begin
  frmPer.miInqusClick(Sender);
end;

procedure TfrmStainfo.btnPriorClick(Sender: TObject);
begin
  if tvPer.Selected.AbsoluteIndex > 0 then
  begin
    tvPer.Selected := tvPer.Items[tvPer.Selected.AbsoluteIndex - 1];
    if tvPer.Selected.Data <> nil then
    begin
      tvPerClick(Sender);
      tvPer.SetFocus;
    end
    else
      btnPriorClick(Sender);
  end;
end;

procedure TfrmStainfo.btnNextClick(Sender: TObject);
begin
  if tvPer.Selected.AbsoluteIndex < tvPer.Items.Count - 1 then
  begin
    tvPer.Selected := tvPer.Items[tvPer.Selected.AbsoluteIndex + 1];
    if tvper.Selected.Data <> nil then
    begin
      tvPerClick(Sender);
      tvPer.SetFocus;
    end
    else
      btnNextClick(Sender);
  end;
end;

procedure TfrmStainfo.btnDelClick(Sender: TObject);
var
  sid: integer;
begin
  if pcSta.ActivePageIndex = 5 then
    tsStainfo.Show;
  if pcSta.ActivePageIndex = 0 then
  begin
    if MessageBox(handle, '真的要删除此员工记录么?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
      if aqStaInfo.Active = true then
      begin
        sid := tvPer.Selected.AbsoluteIndex;
        aqStaInfo.Delete;
        aqStaInfo.UpdateBatch();
        if aqStaInfo.RecordCount = 0 then
          btnEdit.Enabled := false
        else
          btnEdit.Enabled := true;
        tvPer.Selected.Delete;
        if sid - 1 > 0 then
          tvPer.Selected := tvPer.Items[sid - 1]
        else if sid < tvPer.Items.Count then
          tvPer.Selected := tvPer.Items[sid + 1]
      end
      else
        MessageBox(handle, '还没有记录!', '提示', mb_IconWarning + mb_Ok);
  end
  else
  begin
    if MessageBox(self.Handle, '真的要删除此记录么?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
    begin
      aqStaInfo.Delete;
      aqStaInfo.UpdateBatch();
      if aqStaInfo.RecordCount = 0 then
        btnEdit.Enabled := false
      else
        btnEdit.Enabled := true;
    end;
  end;
end;

procedure TfrmStainfo.btnPrintClick(Sender: TObject);
begin
  if btnPrint.Caption = '打  印' then
  begin
    if tvPer.Selected.Data <> nil then
    begin
      frmPrint := Tfrmprint.Create(self);
      frmPrint.ShowModal;
      FreeAndNil(frmPrint);
    end
    else
      MessageBox(self.Handle, '请先选择员工!', '提示', mb_IconInformation + mb_Ok);
  end
  else
  begin
    if aqStaInfo.State in [dsEdit, dsInsert] then
    begin
      aqStaInfo.Cancel;
      aqStaInfo.CancelBatch;
    end;

    case pcSta.ActivePageIndex of
      0: SetState(ssSta, otCancel);
      1: SetState(ssExper, otCancel);
      2: SetState(ssFami, otCancel);
      3: SetState(ssAP, otCancel);
      4: SetState(ssTrain, otCancel);
    end;
    if aqStaInfo.RecordCount = 0 then
      btnEdit.Enabled := false
    else
      btnEdit.Enabled := true;
  end;
end;

procedure TfrmStainfo.btnCloseClick(Sender: TObject);
begin
  Close();
end;

//******************************
procedure TfrmStainfo.FormActivate(Sender: TObject);
begin
  pcsta.ActivePage := tsStainfo;
end;

procedure TfrmStainfo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeTree;
  Action := caFree;
  frmStaInfo := nil;
  frmper.sbper.Panels[1].Text := sTopic;
end;

procedure TfrmStainfo.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  if aqStaInfo.State in [dsInsert, dsEdit] then
  begin
    if MessageBox(self.Handle, '还有信息没有保存,确定要退出吗?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
    begin
      aqStaInfo.Cancel;
      aqStaInfo.CancelBatch;
      CanClose := true;
    end
    else
      CanClose := false;
  end
  else
    CanClose := true;
end;

procedure TfrmStainfo.btnEditiClick(Sender: TObject);  
var
  aqimg: TADOQuery;
  imgstr, path: string;
begin
  if odimg.Execute then
  begin
    imgstr := ExtractFileName(odimg.FileName);
    path := ExtractFilePath(Application.ExeName);
    if not FileExists(path + 'images\' + imgstr) then
    begin
      aqImg := TADOQuery.Create(nil);
      aqImg.Connection := dmPer.acPer;
      aqImg.Close;
      aqImg.SQL.Clear;
      aqImg.SQL.Text := 'select image from stainfo where id=' + IntToStr(id);
      aqImg.open;
      if FileExists(path + 'images\' + aqImg.Fieldbyname('image').AsString) then
        DeleteFile(path + 'images\' + aqImg.Fieldbyname('image').AsString);
      CopyFile(Pchar(odimg.FileName), pchar(path + 'images\' + imgstr), false);
      aqImg.Close;
      aqImg.sql.Clear;
      aqImg.SQL.Text := 'update stainfo set [image]="' + imgstr + '" where id=' + IntToStr(id);
      aqImg.ExecSQL;
      imgi.Picture.LoadFromFile(path + 'images\' + imgstr);
      MessageBox(handle, '照片更新成功!', '提示', mb_IconInformation + mb_Ok);
      FreeAndNil(aqImg);
    end
    else
    begin
      MessageBox(handle, '此照片文件名已存在,请改名先!', '提示', mb_IconInformation + mb_Ok);
      exit;
    end;
  end;
end;

procedure TfrmStainfo.btnDeliClick(Sender: TObject);
var
  aqImg: TADOQuery;
  path: string;
begin
  if MessageBox(handle, '真的要删除此员工照片吗?', '提示', mb_IconQuestion + mb_OkCancel) = idOk then
  begin
    path := ExtractFilePath(Application.ExeName);
    aqImg := TADOQuery.Create(nil);
    aqImg.Connection := dmper.acper;
    aqImg.Close;
    aqImg.sql.Clear;
    aqImg.SQL.Text := 'select image from stainfo where id=' + IntToStr(id);
    aqImg.open;
    if FileExists(path + 'images\' + aqImg.Fieldbyname('image').AsString) then
    begin
      deletefile(path + 'images\' + aqImg.Fieldbyname('image').AsString);
      imgi.Picture.LoadFromFile(path + 'images\imgd.jpg');
      MessageBox(handle, '照片删除成功!', '提示', mb_IconInformation + mb_Ok);
    end
    else
      MessageBox(handle, '没有此员工照片!', '提示', mb_IconInformation + mb_Ok);
  end;
end;       

procedure TfrmStainfo.FormResize(Sender: TObject);
begin
  if self.WindowState = wsNormal then
  begin
    imgb.Visible := true;
    imgr.Visible := true;
  end;
end;

procedure TfrmStainfo.mnuexpandClick(Sender: TObject);
begin
  tvPer.FullExpand;
end;

procedure TfrmStainfo.mnucloseClick(Sender: TObject);
begin
  tvPer.FullCollapse;
end;

procedure TfrmStainfo.AddStatData(aStatType: TStatType);
  procedure DrawChart;
  var
    i: Integer;
    sXvalue: string;
  begin
    aqStaInfo.First;

    chrStaInfo.Series[0].Clear;
    for i := 0 to aqStaInfo.RecordCount - 1 do
    begin
      sXvalue := aqStaInfo.Fields[0].AsString;
      if aStatType = stAge then
        sXvalue := sXvalue + '岁'
      else if aStatType = stYear then
        sXvalue := sXvalue + '年';
      if sXvalue = '' then sXvalue := '未指定';
      chrStaInfo.Series[0].Add(aqStaInfo.Fields[1].AsFloat, sXvalue);
      aqStaInfo.Next;
    end;
    aqStaInfo.First;
  end;
begin
  if aqStaInfo.Active then aqStaInfo.Close;
  case aStatType of
    stDep:
    begin
      dmPer.OpenStat('dep');
      aqStaInfo := dmPer.aqStat;
      aqStaInfo.Fields[0].DisplayLabel := '部 门';
      aqStaInfo.Fields[0].DisplayWidth := 12;
      aqStaInfo.Fields[1].DisplayLabel := '人 数';
      aqStaInfo.Fields[1].DisplayWidth := 6;
      dsStat.DataSet := aqStaInfo;
      chrStaInfo.Title.Text.Text := '公司统计信息-部 门';
    end;
    stSex:
    begin
      dmPer.OpenStat('sex');
      aqStaInfo := dmPer.aqStat;
      aqStaInfo.Fields[0].DisplayLabel := '性 别';
      aqStaInfo.Fields[0].DisplayWidth := 12;
      aqStaInfo.Fields[1].DisplayLabel := '人 数';
      aqStaInfo.Fields[1].DisplayWidth := 6;
      dsStat.DataSet := aqStaInfo;
      chrStaInfo.Title.Text.Text := '公司统计信息-性 别';
    end;
    stLevel:
    begin
      dmPer.OpenStat('[level]');
      aqStaInfo := dmPer.aqStat;
      aqStaInfo.Fields[0].DisplayLabel := '学 历';
      aqStaInfo.Fields[0].DisplayWidth := 12;
      aqStaInfo.Fields[1].DisplayLabel := '人 数';
      aqStaInfo.Fields[1].DisplayWidth := 6;
      dsStat.DataSet := aqStaInfo;
      chrStaInfo.Title.Text.Text := '公司统计信息-学 历';
    end;
    stAge:
    begin
      dmPer.OpenStat('DateDiff(''yyyy'', birth, Date())');
      aqStaInfo := dmPer.aqStat;
      aqStaInfo.Fields[0].DisplayLabel := '年 龄';
      aqStaInfo.Fields[0].DisplayWidth := 12;
      aqStaInfo.Fields[1].DisplayLabel := '人 数';
      aqStaInfo.Fields[1].DisplayWidth := 6;
      dsStat.DataSet := aqStaInfo;
      chrStaInfo.Title.Text.Text := '公司统计信息-年 龄';
    end;
    stYear:
    begin
      dmPer.OpenStat('left(indate, 4)');
      aqStaInfo := dmPer.aqStat;
      aqStaInfo.Fields[0].DisplayLabel := '年 份';
      aqStaInfo.Fields[0].DisplayWidth := 12;
      aqStaInfo.Fields[1].DisplayLabel := '人 数';
      aqStaInfo.Fields[1].DisplayWidth := 6;
      dsStat.DataSet := aqStaInfo;
      chrStaInfo.Title.Text.Text := '公司统计信息-入司年份';
    end;
    stMonth:
    begin
      dmPer.OpenStat('left(indate, 7)');
      aqStaInfo := dmPer.aqStat;
      aqStaInfo.Fields[0].DisplayLabel := '月 份';
      aqStaInfo.Fields[0].DisplayWidth := 12;
      aqStaInfo.Fields[1].DisplayLabel := '人 数';
      aqStaInfo.Fields[1].DisplayWidth := 6;
      dsStat.DataSet := aqStaInfo;
      chrStaInfo.Title.Text.Text := '公司统计信息-入司年份';
    end;
  end;

  DrawChart;
end;

procedure TfrmStainfo.sbDepClick(Sender: TObject);
begin
  AddStatData(stDep);
end;

procedure TfrmStainfo.sbSexClick(Sender: TObject);
begin
  AddStatData(stSex);
end;

procedure TfrmStainfo.sbElevelClick(Sender: TObject);
begin
  AddStatData(stLevel);
end;

procedure TfrmStainfo.sbAgeClick(Sender: TObject);
begin
  AddStatData(stAge);
end;

procedure TfrmStainfo.sbYearClick(Sender: TObject);
begin
  AddStatData(stYear);
end;

procedure TfrmStainfo.sbMonthClick(Sender: TObject);
begin
  AddStatData(stMonth);
end;

procedure TfrmStainfo.sbSaveAsClick(Sender: TObject);
begin
  if spdChart.Execute then
  begin
    if FileExists(spdChart.FileName) then
    begin
      if MessageBox(self.Handle, Pchar('文件' + spdChart.FileName + '已存在,要覆盖吗?'), '提示', mb_IconQuestion + mb_YesNo) = idYes then
      begin
        chrStaInfo.SaveToBitmapFile(spdChart.FileName);
        MessageBox(self.Handle, Pchar('图表已成功导出为' + spdChart.FileName), '提示', mb_IconInformation + mb_Ok);
      end
      else
        sbSaveAsClick(Sender);
    end
    else
    begin
      chrStaInfo.SaveToBitmapFile(spdChart.FileName);
      MessageBox(self.Handle, Pchar('图表已成功导出为' + spdChart.FileName), '提示', mb_IconInformation + mb_Ok);
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -