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

📄 ufind.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMenu, StdCtrls, Buttons, ComCtrls, DBCtrls, ADODB, DB;

type
  TfrmFind = class(TForm)
    Label3: TLabel;
    gbInqus: TGroupBox;
    rbEName: TRadioButton;
    rbName: TRadioButton;
    rbStano: TRadioButton;
    edtInqu: TEdit;
    bbtnOk: TBitBtn;
    bbtnCancel: TBitBtn;
    pcFind: TPageControl;
    tcSingle: TTabSheet;
    tsMul: TTabSheet;
    gbInqum: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label6: TLabel;
    Label10: TLabel;
    cbDep: TComboBox;
    cbSort: TComboBox;
    cbLevel: TComboBox;
    xqFind: TXPMenu;
    cbSex: TComboBox;
    procedure rbStanoClick(Sender: TObject);
    procedure rbNameClick(Sender: TObject);
    procedure rbENameClick(Sender: TObject);
    procedure bbtnOkClick(Sender: TObject);
    procedure bbtnCancelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmFind: TfrmFind;

implementation

uses ustainfo, udata;

var
  fid: integer = 0;

{$R *.dfm}

procedure TfrmFind.FormCreate(Sender: TObject);
  procedure FillData;
  var
    aqFillData: TADOQuery;
    i: integer;
  begin
    aqFillData := TADOQuery.Create(self);
    dmPer.OpenQuery(aqFillData, 'select dep from dept order by ornum');
    cbDep.Clear;
    if not aqFillData.Eof then
    begin
      for i := 0 to aqFillData.RecordCount - 1 do
      begin
        cbDep.Items.add(aqFillData.FieldByName('dep').AsString);
        aqFillData.Next;
      end;
    end;
    dmPer.OpenQuery(aqFillData, 'select sname, iflag from oinfo');
    with aqFillData do
    begin
      Filtered := false;
      Filter := 'iflag = 1';
      Filtered := true;
    end;
    cbSort.Items.Clear;
    if not aqFillData.Eof then
    begin
      for i := 0 to aqFillData.RecordCount - 1 do
      begin
        cbSort.Items.add(aqFillData.FieldByName('sname').AsString);
        aqFillData.Next;
      end;
    end;
    with aqFillData do
    begin
      Filtered := false;
      Filter := 'iflag = 4';
      Filtered := true;
    end;
    cbLevel.Items.Clear;
    if not aqFillData.Eof then
    begin
      for i := 0 to aqFillData.RecordCount - 1 do
      begin
        cbLevel.Items.add(aqFillData.FieldByName('sname').AsString);
        aqFillData.Next;
      end;
    end;
  end;

begin
  FillData;
  pcFind.ActivePageIndex := 0;
  cbDep.Items.Insert(0, '不 限');
  cbDep.ItemIndex := 0;
  cbSex.Items.Insert(0, '不 限');
  cbSex.ItemIndex := 0;
  cbSort.Items.Insert(0, '不 限');
  cbSort.ItemIndex := 0;
  cbLevel.Items.Insert(0, '不 限');
  cbLevel.ItemIndex := 0;
end;

procedure TfrmFind.rbStanoClick(Sender: TObject);
begin
  label3.Caption := '请输入工号:';
  edtInqu.SetFocus;
end;

procedure TfrmFind.rbNameClick(Sender: TObject);
begin
  label3.Caption := '请输入姓名:';
  edtInqu.SetFocus;
end;

procedure TfrmFind.rbENameClick(Sender: TObject);
begin
  label3.Caption := '请输入拼音:';
  edtInqu.SetFocus;
end;

procedure TfrmFind.bbtnOkClick(Sender: TObject);
var
  i: integer;
  s, sWhr: string;
begin
  if pcFind.ActivePageIndex = 0 then
  begin
    if edtInqu.Text <> '' then
    begin
      with frmStainfo do
      begin
        tvper.SetFocus;
        if rbStano.Checked = true then
        begin
          for i := fid to tvPer.Items.Count - 1 do
          begin
            fid := fid + 1;
            if tvPer.Items[i].Data <> nil then
              if Psid(tvPer.Items[i].Data)^.sNo = edtInqu.Text then
              begin
                tvPer.Items[i].Selected := true;
                tvPer.Setfocus;
                Break;
              end;
          end;
          if i = tvPer.Items.Count then
          begin
            fid := 0;
            MessageBox(self.Handle, '已到了末尾!', '提示', mb_IconInformation + mb_Ok);
          end;
        end
        else if rbname.Checked = true then
        begin
          for i := fid to tvPer.Items.Count - 1 do
          begin
            fid := fid + 1;
            if tvPer.Items[i].Data <> nil then
              if tvPer.Items[i].Text = edtInqu.Text then
              begin
                tvPer.Items[i].Selected := true;
                tvPer.Setfocus;
                Break;
              end;
          end;
          if i = tvPer.Items.Count then
          begin
            fid := 0;
            MessageBox(self.Handle, '已到了末尾!', '提示', mb_IconInformation + mb_Ok);
          end;
        end
        else
        begin
          for i := fid to tvPer.Items.Count - 1 do
          begin
            fid := fid + 1;
            if tvPer.Items[i].Data <> nil then
              if Psid(tvPer.Items[i].Data)^.sEn = edtInqu.Text then
              begin
                tvPer.Items[i].Selected := true;
                tvPer.Setfocus;
                Break;
              end;
          end;
          if i = tvPer.Items.Count then
          begin
            fid := 0;
            MessageBox(self.Handle, '已到了末尾!', '提示', mb_IconInformation + mb_Ok);
          end;
        end;
      end;
    end
    else
    begin
      MessageBox(self.Handle, '请输入查询条件!', '提示', mb_IconInformation + mb_Ok);
      edtInqu.SetFocus;
    end;
    frmStaInfo.sWhr := '';
  end
  else
  begin
    s := 'select id, stano, [name], ename, dep, sdep from stainfo where 0=0 ';
    sWhr := '';
    if cbDep.Text <> '不 限' then sWhr := sWhr + ' and dep = ' + QuotedStr(cbDep.Text);
    if cbSex.Text <> '不 限' then sWhr := sWhr + ' and sex = ' + QuotedStr(cbSex.Text);
    if cbSort.Text <> '不 限' then sWhr := sWhr + ' and sorts = ' + QuotedStr(cbSort.Text);
    if cbLevel.Text <> '不 限' then sWhr := sWhr + ' and level = ' + QuotedStr(cbLevel.Text);
    if sWhr <> '' then s := s + sWhr else s := '';
    frmStaInfo.sWhr := sWhr;
    frmStaInfo.DrawTree(s);
  end;
end;

procedure TfrmFind.bbtnCancelClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

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