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

📄 ustadetail.pas

📁 一个很好的员工档案管理系统源码 有无限制树
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit uStadetail;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TeEngine, Series, TeeProcs, Chart, Buttons, ToolWin, ComCtrls,
  StdCtrls, DBCtrls, Grids, DBGridEh, jpeg, DBCtrlsEh, Mask, ExtCtrls, DB,
  ADODB, DateUtils, ExtDlgs;

type
  TOperType = (otEdit, otAdd, otView);
  TStatType = (stDep, stSex, stLevel, stCap, stAge, stYear, stMonth);

  TfraStaDetail = class(TFrame)
    pcSta: TPageControl;
    tsStainfo: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label23: TLabel;
    Label22: TLabel;
    Label24: TLabel;
    Label46: TLabel;
    pnlimg: TPanel;
    imgi: TImage;
    btnEditi: TButton;
    btnDeli: TButton;
    deStano: TDBEdit;
    deName: TDBEdit;
    edtProvi: TDBEdit;
    edtCardno: TDBEdit;
    edtRecno: TDBEdit;
    edtSlevel: TDBEdit;
    edtPcode: TDBEdit;
    edtAddress: TDBEdit;
    dcbLevel: TDBComboBox;
    dcbMarried: TDBComboBox;
    edtDes: TDBEdit;
    dcbDep: TDBComboBox;
    deInDate: TDBDateTimeEditEh;
    deBarstart: TDBDateTimeEditEh;
    deBarend: TDBDateTimeEditEh;
    dcbSpecial: TDBComboBox;
    edtBarYear: TDBEdit;
    dcbSex: TDBComboBox;
    deBirth: TDBDateTimeEditEh;
    cboPoli: TDBComboBox;
    dcbFolk: TDBComboBox;
    dcbSort: TDBComboBox;
    dcbCap: TDBComboBox;
    tsExper: TTabSheet;
    dgExper: TDBGridEh;
    tsTrain: TTabSheet;
    dgTrain: TDBGridEh;
    aqStaDetail: TADOQuery;
    dsStat: TDataSource;
    spdChart: TSavePictureDialog;
    odImg: TOpenDialog;
    Label50: TLabel;
    deTel: TDBEdit;
    Label51: TLabel;
    deMobile: TDBEdit;
    Label52: TLabel;
    dcbDutyState: TDBComboBox;
    Label53: TLabel;
    deDutyDate: TDBDateTimeEditEh;
    Label54: TLabel;
    deStaDate: TDBDateTimeEditEh;
    Label55: TLabel;
    deLeftDate: TDBDateTimeEditEh;
    Label56: TLabel;
    deMail: TDBEdit;
    Label57: TLabel;
    deSchool: TDBEdit;
    Label58: TLabel;
    deGraDate: TDBEdit;
    dcbBody: TDBComboBox;
    Panel1: TPanel;
    Label25: TLabel;
    Label26: TLabel;
    deSDate: TDBDateTimeEditEh;
    deEdate: TDBDateTimeEditEh;
    Label27: TLabel;
    Label28: TLabel;
    deCom: TDBEdit;
    deDep: TDBEdit;
    Label29: TLabel;
    deDuty: TDBEdit;
    Label48: TLabel;
    deLeftr: TDBEdit;
    Panel3: TPanel;
    Label40: TLabel;
    Label43: TLabel;
    deCourse: TDBEdit;
    deDLimit: TDBEdit;
    Label41: TLabel;
    Label44: TLabel;
    dteSDate: TDBDateTimeEditEh;
    dteEDate: TDBDateTimeEditEh;
    Label42: TLabel;
    deTrcom: TDBEdit;
    Label45: TLabel;
    deCerti: TDBEdit;
    procedure btnEditiClick(Sender: TObject);
    procedure btnDeliClick(Sender: TObject);
    procedure pcStaChange(Sender: TObject);
  private
    { Private declarations }
    FID: Integer;
    procedure BeforeShow;
    procedure AfterShow(AIndex: Integer = 0);
    procedure SetID(AValue: Integer = 0);
  public
    { Public declarations }
    sWhr: string;
    procedure SetState(AIndex: Integer; ViewState: Boolean); overload;
    procedure SetState(AIndex: Integer; AOperType: TOperType); overload;
  published
    procedure FillData;
    procedure Append;
    procedure Edit;
    procedure UpdateData;
    function Delete: Boolean;
    procedure Cancel;
    procedure Print(AIds: string);
    
    property ID: Integer read FID write SetID;
  end;

implementation

uses ustainfo, uglobal, udata, uprint;

{$R *.dfm}

{ TfraStaDetail }

procedure TfraStaDetail.FillData;
  procedure FillDBComboBox(ADataSet: TADOQuery; ADBComboBox: TDBComboBox);
  begin
    ADBComboBox.Items.Clear;
    while not ADataSet.Eof do
    begin
      ADBComboBox.Items.Add(ADataSet.FieldByName('sname').AsString);
      ADataSet.Next;
    end;
  end;

var
  aqFillData: TADOQuery;
begin
  if not DM.aqDept.Active then DM.OpenDept;
  aqFillData := TADOQuery.Create(Self);
  aqFillData.Clone(DM.aqDept, ltReadOnly);
  dcbDep.Clear;

  while not aqFillData.Eof do
  begin
    dcbDep.Items.add(aqFillData.FieldByName('dep').AsString);
    
    aqFillData.Next;
  end;

  DM.OpenQuery(aqFillData, 'select sname, iflag from oinfo');
  FilterData(aqFillData, 'iflag = 1');
  FillDBComboBox(aqFillData, dcbSort);

  FilterData(aqFillData, 'iflag = 2');
  FillDBComboBox(aqFillData, dcbCap);

  FilterData(aqFillData, 'iflag = 3');
  FillDBComboBox(aqFillData, dcbFolk);

  FilterData(aqFillData, 'iflag = 4');
  FillDBComboBox(aqFillData, dcbLevel);

  FilterData(aqFillData, 'iflag = 5');
  FillDBComboBox(aqFillData, dcbSpecial);
end;

procedure TfraStaDetail.SetID(AValue: Integer);
begin
  if (AValue = 0) or (FID = AValue) or (pcSta.ActivePageIndex = 5) then Exit;
  FID := AValue;
  pcStaChange(pcSta);
  if pcSta.ActivePageIndex = 0 then
  begin
    aqStaDetail.Locate('id', IntToStr(ID), []);
    if FileExists(MyApp.Path + 'images\' + aqStaDetail.FieldByName('image').AsString) then
      imgi.Picture.LoadFromFile(MyApp.Path + 'images\' + aqStaDetail.FieldByName('image').AsString)
   else imgi.Picture.LoadFromFile(MyApp.Path + 'images\nophoto_f.jpg');
  end
  else FilterData(aqStaDetail, 'sid=' + IntToStr(ID));
end;

procedure TfraStaDetail.SetState(AIndex: Integer; ViewState: Boolean);
var
  i: Integer;
  tsCur: TTabSheet;
begin
  tsCur := pcSta.Pages[AIndex];
  if ViewState then
  begin
    for i := 0 to tsCur.ControlCount - 1 do
      if tsCur.Controls[i] is TDBEdit then
      begin
        TDBEdit(tsCur.Controls[i]).ReadOnly := True;
        TDBEdit(tsCur.Controls[i]).Color := ViewColor;
      end
      else if tsCur.Controls[i] is TDBComboBox then
      begin
        TDBComboBox(tsCur.Controls[i]).ReadOnly := True;
        TDBComboBox(tsCur.Controls[i]).Color := ViewColor;
      end
      else if tsCur.Controls[i] is TDBDateTimeEditEh then
      begin
        TDBDateTimeEditEh(tsCur.Controls[i]).ReadOnly := True;
        TDBDateTimeEditEh(tsCur.Controls[i]).Color := ViewColor;
      end
      else if tsCur.Controls[i] is TDBMemo then
      begin
        TDBMemo(tsCur.Controls[i]).ReadOnly := True;
        TDBMemo(tsCur.Controls[i]).Color := ViewColor;
      end;
  end
  else
    for i := 0 to tsCur.ControlCount - 1 do
      if tsCur.Controls[i] is TDBEdit then
      begin
        TDBEdit(tsCur.Controls[i]).ReadOnly := False;
        TDBEdit(tsCur.Controls[i]).Color := clWindow;
      end
      else if tsCur.Controls[i] is TDBComboBox then
      begin
        TDBComboBox(tsCur.Controls[i]).ReadOnly := False;
        TDBComboBox(tsCur.Controls[i]).Color := clWindow;
      end
      else if tsCur.Controls[i] is TDBDateTimeEditEh then
      begin
        TDBDateTimeEditEh(tsCur.Controls[i]).ReadOnly := False;
        TDBDateTimeEditEh(tsCur.Controls[i]).Color := clWindow;
      end
      else if tsCur.Controls[i] is TDBMemo then
      begin
        TDBMemo(tsCur.Controls[i]).ReadOnly := False;
        TDBMemo(tsCur.Controls[i]).Color := clWindow;
      end;

  case AIndex of
    0:
    begin
      if ViewState then
      begin
        btnEditi.Enabled := True;
        btnDeli.Enabled := True;
      end
      else
      begin
        if aqStaDetail.State = dsInsert then
        begin
          deStano.SetFocus;
          deBirth.Value := IncYear(Date, -20);
          deInDate.Value := Date;
          deBarstart.Value := Date;
          deBarend.Value := IncYear(Date, 1);
        end
        else
        begin
          deStano.ReadOnly := True;
          deStano.Color := ViewColor;
          deName.SetFocus;
        end;
      end;
    end;
    1:
    begin
      dgExper.Enabled := ViewState;
      if not ViewState and (aqStaDetail.State = dsInsert) then
      begin
        deSDate.Value := IncYear(Date, -1);
        deEdate.Value := Date;
      end;
    end;
    

    2:
    begin
      dgTrain.Enabled := ViewState;
      if not ViewState then
      begin
        deCourse.SetFocus;
        if aqStaDetail.State = dsInsert then
        begin
          dteSDate.Value := IncYear(Date, -1);
          dteEDate.Value := IncYear(Date, -1);
        end;
      end;
    end;
  end;
end;

procedure TfraStaDetail.SetState(AIndex: Integer; AOperType: TOperType);
begin
  case AOperType of
    otAdd, otEdit:
      SetState(AIndex, False);
    otView:
    begin
      SetState(AIndex, True);

⌨️ 快捷键说明

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