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

📄 uoinfo.pas

📁 这是一个门禁系统的应用程序,用 delphi编写,希望与大家交流.
💻 PAS
字号:
unit uoinfo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMenu, StdCtrls, Mask, DBCtrls, Grids, DBGrids, DB, ADODB,
  DBGridEh;

type
  TSortType = (stSort, stCap, stFolk, stLevel, stSpe);

  TfrmOInfo = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    deSName: TDBEdit;
    deDes: TDBEdit;
    btnAdd: TButton;
    btnEdit: TButton;
    btnDel: TButton;
    btnTrs: TButton;
    btnClose: TButton;
    dgInfo: TDBGridEh;
    dsInfo: TDataSource;
    aqOInfo: TADOQuery;
    rbSort: TRadioButton;
    rbCap: TRadioButton;
    rbFolk: TRadioButton;
    rbLevel: TRadioButton;
    rbSpe: TRadioButton;
    procedure btnEditClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnTrsClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure dsInfoDataChange(Sender: TObject; Field: TField);
    procedure rbSortClick(Sender: TObject);
    procedure rbCapClick(Sender: TObject);
    procedure rbFolkClick(Sender: TObject);
    procedure rbLevelClick(Sender: TObject);
    procedure rbSpeClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    procedure SetState(aState: Boolean = true);
    procedure SetSort(aSortType: TSortType = stSort);
  public
    { Public declarations }
  end;

var
  frmOInfo: TfrmOInfo;

implementation

uses udata, uglobal, ustainfo;

{$R *.dfm}

procedure TfrmOInfo.SetState(aState: Boolean);
begin
  deSName.ReadOnly := aState;
  deDes.ReadOnly := aState;
  if aState = true then
  begin
    btnadd.Caption := '添  加';
    btnEdit.Caption := '更  新';
    btnDel.Visible := true;
    
    dgInfo.Enabled := true;
    dgInfo.Color := clSkyBlue;
    dgInfo.Color := clSkyBlue;
    deSName.Color := clSkyBlue;
    deDes.Color := clSkyBlue;
  end
  else
  begin
    if aqOInfo.State = dsInsert then
      btnAdd.Caption := '提  交'
    else
      btnAdd.Caption := '确  定';
    btnEdit.Caption := '取  消';
    btnDel.Visible := false;
    dgInfo.Enabled := false;
    deSName.SetFocus;
    deSName.Color := clWindow;
    deDes.Color := clWindow;
  end;
end;

procedure TfrmOInfo.SetSort(aSortType: TSortType);
var
  sFilter: string;
begin
  if aqOInfo.State in [dsInsert, dsEdit] then
  begin
    aqOInfo.Cancel;
    aqOInfo.CancelBatch();
    SetState(true);
  end;
  case aSortType of
    stSort:
    begin
      dgInfo.Columns[0].Title.Caption := '工 种';
      Label2.Caption := '工种:';
      sFilter := 'iflag=1';
    end;
    stCap:
    begin
      dgInfo.Columns[0].Title.Caption := '职 称';
      Label2.Caption := '职称:';
      sFilter := 'iflag=2';
    end;
    stFolk:
    begin
      dgInfo.Columns[0].Title.Caption := '民 族';
      Label2.Caption := '民族:';
      sFilter := 'iflag=3';
    end;
    stLevel:
    begin
      dgInfo.Columns[0].Title.Caption := '学 历';
      Label2.Caption := '学历:';
      sFilter := 'iflag=4';
    end;
    stSpe:
    begin
      dgInfo.Columns[0].Title.Caption := '专 业';
      Label2.Caption := '专业:';
      sFilter := 'iflag=5';
    end;
  end;

  aqOInfo.Filtered := false;
  aqOInfo.Filter := sFilter;
  aqOInfo.Filtered := true;
end;

{以iflag字段标志分类: 1-工种, 2-积称, 3-民族, 4-学历, 5-专业}

procedure TfrmOInfo.FormCreate(Sender: TObject);
begin
  dmPer.OpenQuery(aqOInfo, 'select sname, des, iflag from oinfo');
  dsInfo.DataSet := aqOInfo;
  SetState(true);
  SetSort(stSort);   
end;

procedure TfrmOInfo.btnAddClick(Sender: TObject);
var
  queryc: TADOQuery;
begin
  if btnadd.Caption = '添  加' then
  begin
    aqOInfo.Append;
    SetState(false);
  end
  else
  begin
    if deSName.Text <> '' then
    begin
      if btnadd.Caption = '提  交' then
      begin
        queryc := TADOquery.Create(self);
        queryc.Connection:= dmPer.acPer;
        queryc.SQL.Text := 'select sname from oinfo where sname=' + QuotedStr(deSName.Text);
        queryc.open;
        if not queryc.Eof then
        begin
          MessageBox(self.Handle, '此项目已存在!', '提示', mb_IconInformation + mb_Ok);
          aqOInfo.Cancel;
          aqOInfo.CancelBatch();
          Abort;
        end
        else
        begin
          if rbSort.Checked then
            aqOInfo.FieldByName('iflag').AsInteger := 1
          else if rbCap.Checked then
            aqOInfo.FieldByName('iflag').AsInteger := 2
          else if rbFolk.Checked then
            aqOInfo.FieldByName('iflag').AsInteger := 3
          else if rbLevel.Checked then
            aqOInfo.FieldByName('iflag').AsInteger := 4
          else
            aqOInfo.FieldByName('iflag').AsInteger := 5;

          aqOInfo.Post;
          aqOInfo.UpdateBatch();
          SetState(true);
        end;
      end
      else
      begin
        aqOInfo.Post;
        aqOInfo.UpdateBatch();
        SetState(true);
      end;
    end
    else
    begin
      MessageBox(self.Handle, '请输入类别名!', '提示', mb_IconInformation + mb_Ok);
      deSName.SetFocus;
      Abort;
    end;
  end;
end;

procedure TfrmOInfo.btnEditClick(Sender: TObject);
begin
  if btnedit.Caption ='更  新' then
  begin
    aqOInfo.Edit;
    SetState(false);
  end
  else
  begin
    aqOInfo.Cancel;
    aqOInfo.CancelBatch();
    SetState(true);
  end;
end;

procedure TfrmOInfo.btnDelClick(Sender: TObject);
begin
  if MessageBox(handle, '真的要删除此项目么?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
  begin
    aqOInfo.Delete;
    aqOInfo.UpdateBatch();
  end;
end;

procedure TfrmOInfo.btnTrsClick(Sender: TObject);
begin
  if btntrs.Caption = '半透明' then
  begin
    self.AlphaBlend := true;
    self.AlphaBlendValue := 125;
    btntrs.Caption := '还  原';
  end
  else
  begin
    self.AlphaBlend := false;
    btntrs.Caption := '半透明';
  end;   
end;

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

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

procedure TfrmOInfo.dsInfoDataChange(Sender: TObject; Field: TField);
begin
  if not (aqOInfo.State in [dsInsert, dsEdit]) then
    btnEdit.Enabled := aqOInfo.RecordCount <> 0
  else
    btnEdit.Enabled := true;
  btnDel.Enabled := aqOInfo.RecordCount <> 0;
end;

procedure TfrmOInfo.rbSortClick(Sender: TObject);
begin
  SetSort(stSort);
end;

procedure TfrmOInfo.rbCapClick(Sender: TObject);
begin
  SetSort(stCap);
end;

procedure TfrmOInfo.rbFolkClick(Sender: TObject);
begin
  SetSort(stFolk);
end;

procedure TfrmOInfo.rbLevelClick(Sender: TObject);
begin
  SetSort(stLevel);
end;

procedure TfrmOInfo.rbSpeClick(Sender: TObject);
begin
  SetSort(stSpe);
end;

procedure TfrmOInfo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(frmStaInfo) then
    if frmStainfo.pcSta.ActivePageIndex = 0 then
    begin
      frmStainfo.FillData;
      frmStainfo.tsStainfoShow(Sender);
    end;
end;

end.

⌨️ 快捷键说明

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