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

📄 ustainfo.pas

📁 Delphi7+ado+Access2000模式开发的单机版档案管理系统
💻 PAS
📖 第 1 页 / 共 4 页
字号:
        dbeName.SetFocus;
        Abort;
      end;

      UpdateRecord;
    end;
    ssAP:
    begin
      if dbSort.Text = '' then
      begin
        MessageBox(self.Handle, '请选择类别!', '提示', mb_IconInformation + mb_Ok);
        dbSort.SetFocus;
        Abort;
      end;
      if deTopic.Text = '' then
      begin
        MessageBox(self.Handle, '请输入事件!', '提示', mb_IconInformation + mb_Ok);
        deTopic.SetFocus;
        Abort;
      end;

      UpdateRecord;
    end;
    ssTrain:
    begin
      if deCourse.Text = '' then
      begin
        MessageBox(self.Handle, '请输入培训课程!', '提示', mb_IconInformation + mb_Ok);
        deCourse.SetFocus;
        Abort;
      end;
      if deDLimit.Text = '' then
      begin
        MessageBox(self.Handle, '请输入培训期限!', '提示', mb_IconInformation + mb_Ok);
        deDLimit.SetFocus;
        Abort;
      end;

      UpdateRecord;
    end;
  end;
end;

procedure TfrmStainfo.FillData;
var
  aqFillData: TADOQuery;
  i: integer;
begin
  dmPer.OpenDep;
  aqFillData := dmPer.aqDep;
  dcbDep.Clear;
  if not aqFillData.Eof then
  begin
    for i := 0 to aqFillData.RecordCount - 1 do
    begin
      dcbDep.Items.add(aqFillData.FieldByName('dep').AsString);
      aqFillData.Next;
    end;
  end;
  dmPer.OpenSDep;
  aqFillData := dmPer.aqSDep;
  dcbSDep.Clear;
  if not aqFillData.Eof then
  begin
    for i := 0 to aqFillData.RecordCount - 1 do
    begin
      dcbSDep.Items.add(aqFillData.FieldByName('sdep').AsString);
      aqFillData.Next;
    end;
  end;
  dcbSDep.Items.Insert(0, '[不  限]');
  dcbSDep.ItemIndex := 0;
  aqFillData := TADOQuery.Create(self);
  dmPer.OpenQuery(aqFillData, 'select sname, iflag from oinfo');
  with aqFillData do
  begin
    Filtered := false;
    Filter := 'iflag = 1';
    Filtered := true;
  end;
  dcbSort.Items.Clear;
  if not aqFillData.Eof then
  begin
    for i := 0 to aqFillData.RecordCount - 1 do
    begin
      dcbSort.Items.add(aqFillData.FieldByName('sname').AsString);
      aqFillData.Next;
    end;
  end;
  with aqFillData do
  begin
    Filtered := false;
    Filter := 'iflag = 2';
    Filtered := true;
  end;
  dcbCap.Items.Clear;
  if not aqFillData.Eof then
  begin
    for i := 0 to aqFillData.RecordCount - 1 do
    begin
      dcbCap.Items.add(aqFillData.FieldByName('sname').AsString);
      aqFillData.Next;
    end;
  end;
  with aqFillData do
  begin
    Filtered := false;
    Filter := 'iflag = 3';
    Filtered := true;
  end;
  dcbFolk.Items.Clear;
  if not aqFillData.Eof then
  begin
    for i := 0 to aqFillData.RecordCount - 1 do
    begin
      dcbFolk.Items.add(aqFillData.FieldByName('sname').AsString);
      aqFillData.Next;
    end;
  end;
  with aqFillData do
  begin
    Filtered := false;
    Filter := 'iflag = 4';
    Filtered := true;
  end;
  dcbLevel.Items.Clear;
  if not aqFillData.Eof then
  begin
    for i := 0 to aqFillData.RecordCount - 1 do
    begin
      dcbLevel.Items.add(aqFillData.FieldByName('sname').AsString);
      aqFillData.Next;
    end;
  end;
  with aqFillData do
  begin
    Filtered := false;
    Filter := 'iflag = 5';
    Filtered := true;
  end;
  dcbSpecial.Items.Clear;
  if not aqFillData.Eof then
  begin
    for i := 0 to aqFillData.RecordCount - 1 do
    begin
      dcbSpecial.Items.add(aqFillData.FieldByName('sname').AsString);
      aqFillData.Next;
    end;
  end;

  if not dmPer.aqDep.Active then dmPer.OpenDep;
  aqStaInfo := dmPer.aqDep;
  aqStaInfo.First;
  if not aqStaInfo.Eof then
  begin
    aqStaInfo.First;
    dbDep.Clear;
    for i := 0 to aqStaInfo.RecordCount - 1 do
    begin
      dbDep.AddItem(aqStaInfo.FieldByName('dep').AsString, nil);
      aqStaInfo.Next;
    end;
  end;
end;

procedure TfrmStainfo.FormCreate(Sender: TObject);
begin
  dmPer.OpenStaInfo;
  dmPer.OpenExper;
  dmPer.OpenFami;
  dmPer.OpenAP;
  dmPer.OpenTrain;
  FillData;
  self.DoubleBuffered := true;
  if frmPer.WindowState <> wsMaximized then self.WindowState := wsMaximized;
end;

procedure TfrmStainfo.FormShow(Sender: TObject);
begin
  if bStaffBirth then
    meoBirth.Visible := true
  else
    meoBirth.Visible := false;

  DrawTree;
  dcbDepExit(Sender);
  pcsta.ActivePageIndex := 0;
  SetState(ssSta, true);

  meoBirth.Left := tvPer.Left;
  meoBirth.Top := tvPer.Top + tvPer.Height - meoBirth.Height;
  meoBirth.Width := tvPer.Width;
end;

procedure TfrmStainfo.tvPerCollapsed(Sender: TObject; Node: TTreeNode);
begin
  tvPer.Repaint;
end;

procedure TfrmStainfo.tvPerChange(Sender: TObject; Node: TTreeNode);
begin
  if Node.IsFirstNode then
    gbPer.Caption := Node.Text
  else if (not Node.IsFirstNode) and Node.HasChildren then
    gbPer.Caption := '部门: ' + Node.Text
  else if not Node.HasChildren then
  begin
    if Node.Data <> nil then
    begin
      gbPer.Caption := '员工: ' + Node.Parent.Text + ' --> ' + Node.Text;
      ID := Integer(Psid(Node.Data)^.ID);
      btnEditi.Enabled := true;
      btnDeli.Enabled := true;

      case pcSta.ActivePageIndex of
        0: tsStainfoShow(Sender);
        1: tsExperShow(Sender);
        2: tsFamiShow(Sender);
        3: tsAPShow(Sender);
        4: tstrainShow(Sender);
      end;
    end
    else
    begin
      btnEditi.Enabled := false;
      btnDeli.Enabled := false;
    end;
  end;
end;

procedure TfrmStainfo.tvPerClick(Sender: TObject);
begin
  if tvPer.Selected.Data <> nil then dcbDepExit(Sender);
  if not tvPer.Selected.HasChildren then
  begin
    if tvPer.Selected.Data <> nil then
    begin
      ID := Integer(Psid(tvPer.Selected.Data)^.ID);
      btnEditi.Enabled := true;
      btnDeli.Enabled := true;

      case pcSta.ActivePageIndex of
        0: tsStainfoShow(Sender);
        1: tsExperShow(Sender);
        2: tsFamiShow(Sender);
        3: tsAPShow(Sender);
        4: tstrainShow(Sender);
      end;
    end
    else
    begin
      btnEditi.Enabled := false;
      btnDeli.Enabled := false;
    end;
  end;
  if pcSta.ActivePageIndex = 5 then tsStainfo.Show;
end;

//******************************

procedure TfrmStainfo.BeforeShow;
begin
  if aqStaInfo.State in [dsEdit, dsInsert] then
  begin
    aqStaInfo.Cancel;
    aqStaInfo.CancelBatch;
  end;
end;

procedure TfrmStainfo.AfterShow(aStatType: TSetState);
begin
  if aStatType <> ssSta then
  begin
    aqStaInfo.Filtered := false;
    aqStaInfo.Filter := 'sid=' + IntToStr(ID);
    aqStaInfo.Filtered := true;
  end;

  if (btnAdd.Caption = '提  交') and (aqStaInfo.State <> dsInsert) then
  begin
    aqStaInfo.Append;
    SetState(aStatType, false);
    Exit;
  end
  else if (btnAdd.Caption = '确  定') and (aqStaInfo.State <> dsEdit) then
  begin
    aqStaInfo.Edit;
    SetState(aStatType, false);
    Exit;
  end;

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

procedure TfrmStainfo.tsStainfoShow(Sender: TObject);
begin
  BeforeShow;
  if not dmPer.aqSta.Active then dmPer.OpenStaInfo;
  aqStaInfo := dmPer.aqSta;
  if not aqStaInfo.Locate('id', IntToStr(ID), []) then Exit;

  if FileExists(sPath + 'images\' + aqStaInfo.FieldByName('image').AsString) then
    imgi.Picture.LoadFromFile(sPath + 'images\' + aqStaInfo.FieldByName('image').AsString)
  else
    imgi.Picture.LoadFromFile(sPath + 'images\imgd.jpg');
  aqStaInfo.Refresh;
  AfterShow(ssSta);
end;

procedure TfrmStainfo.tsExperShow(Sender: TObject);
begin
  BeforeShow;
  if not dmPer.aqExper.Active then dmPer.OpenExper;
  aqStaInfo := dmPer.aqExper;
  AfterShow(ssExper);
end;

procedure TfrmStainfo.tsFamiShow(Sender: TObject);
begin    
  BeforeShow;
  if not dmPer.aqFami.Active then dmPer.OpenFami;
  aqStaInfo := dmPer.aqFami;
  AfterShow(ssFami);
end;

procedure TfrmStainfo.tsAPShow(Sender: TObject);
begin
  BeforeShow;
  if not dmPer.aqAP.Active then dmPer.OpenAP;
  aqStaInfo := dmPer.aqAP;
  AfterShow(ssAP);
end;

procedure TfrmStainfo.tsTrainShow(Sender: TObject);
begin
  BeforeShow;
  if not dmPer.aqTrain.Active then dmPer.OpenTrain;
  aqStaInfo := dmPer.aqTrain;
  AfterShow(ssTrain);
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 tvPer.Items.Count = 1 then
  begin
    MessageBox(self.Handle, '请先添加部门!', '提示', mb_IconInformation + mb_Ok);
    Exit;
  end;
  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:
      begin
        AddData(ssSta);
        meoBirth.Clear;
        meoBirth.Lines.BeginUpdate;
        GetBrithStaff(true);
        GetBrithStaff(false);
        meoBirth.Lines.EndUpdate;
      end;
      1: AddData(ssExper);
      2: AddData(ssFami);
      3: AddData(ssAP);
      4: AddData(ssTrain);
    end;
  end
  else
  begin
    case pcSta.ActivePageIndex of
      0:
      begin
        UpdateData(ssSta);
        meoBirth.Clear;
        meoBirth.Lines.BeginUpdate;
        GetBrithStaff(true);
        GetBrithStaff(false);
        meoBirth.Lines.EndUpdate;
      end;
      1: UpdateData(ssExper);
      2: UpdateData(ssFami);
      3: UpdateData(ssAP);
      4: UpdateData(ssTrain);
    end;
  end;
end;

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

procedure TfrmStainfo.btnPriorClick(Sender: TObject);
begin
  if tvPer.Selected.AbsoluteIndex > 0 then
  begin
    tvPer.Selected := tvPer.Selected.GetPrev;
    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.Selected.GetNext;
    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

⌨️ 快捷键说明

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