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

📄 searchunit.pas

📁 人事管理源码 Delphi+ADO+Acce
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit SearchUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ModeUnit, ExtCtrls, dxCntner, dxTL, dxDBCtrl, dxDBGrid,
  StdCtrls, Buttons, dxEditor, dxExEdtr, dxEdLib, CheckLst,INIFiles;

type
  TSearchForm = class(TModeForm)
    SearchGrid: TdxDBGrid;
    Panel1: TPanel;
    Panel2: TPanel;
    OKBtn: TBitBtn;
    CancelBtn: TBitBtn;
    TermGroup: TGroupBox;
    Termitems: TComboBox;
    OperList: TComboBox;
    stredit: TEdit;
    date1: TdxDateEdit;
    termlist: TListBox;
    AddBtn: TBitBtn;
    SubBtn: TBitBtn;
    Num1: TEdit;
    Num2: TEdit;
    date2: TdxDateEdit;
    ZZRadBtn: TRadioButton;
    NTRadBtn: TRadioButton;
    TYRadBtn: TRadioButton;
    TXRadBtn: TRadioButton;
    ItemGroup: TGroupBox;
    searchitems: TCheckListBox;
    JSRadBtn: TRadioButton;
    AllRadBtn: TRadioButton;
    AndLab: TLabel;
    betweenlab: TLabel;
    Panel3: TPanel;
    AndRadBtn: TRadioButton;
    OrRadBtn: TRadioButton;
    SearchBtn: TBitBtn;
    SaveBtn: TBitBtn;
    SaveDialog1: TSaveDialog;
    procedure ZZRadBtnClick(Sender: TObject);
    procedure NTRadBtnClick(Sender: TObject);
    procedure TYRadBtnClick(Sender: TObject);
    procedure TXRadBtnClick(Sender: TObject);
    procedure JSRadBtnClick(Sender: TObject);
    procedure AllRadBtnClick(Sender: TObject);
    procedure date1KeyPress(Sender: TObject; var Key: Char);
    procedure Num1KeyPress(Sender: TObject; var Key: Char);
    procedure OperListChange(Sender: TObject);
    procedure SubBtnClick(Sender: TObject);
    procedure AddBtnClick(Sender: TObject);
    procedure date2Enter(Sender: TObject);
    procedure Num2Enter(Sender: TObject);
    procedure TermitemsChange(Sender: TObject);
    procedure date1Enter(Sender: TObject);
    procedure OperListEnter(Sender: TObject);
    procedure termlistClick(Sender: TObject);
    procedure SearchBtnClick(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure OKBtnClick(Sender: TObject);
  private
    { Private declarations }
    function GetOper(datatype:string; keystr:string):string;
    function GetField(LB:string; ChName:string):string;
  public
    { Public declarations }
    procedure InitSearch(const LB:string);
    procedure GetItems(lst:tstrings;const flag:string);
    procedure GetOperList(datatype:string);
  end;

type
  item = record
       CHname:string[8];
       Fieldvalue:string[50];
       datatype:string[4];
       LB:string[6];
  end;
  itemfile = file of item;


var
  SearchForm : TSearchForm;

implementation

uses  dataunit,mainunit;

{$R *.dfm}

function tsearchform.GetOper(datatype:string; keystr:string):string;
var
  myini:tinifile;
begin
    myini := tinifile.Create(filepath+'logic.ini');
  try
    result := myini.ReadString(datatype,keystr,'');
  finally
    myini.Destroy;
  end;

end;

function tsearchform.GetField(LB:string; ChName:string):string;
var
  myitem : item;
  myitemfile : itemfile;
  i : Integer;
begin
  result := '';
  if fileexists(filepath+'searchitems.dat') then
  begin
    assignfile(myitemfile,filepath+'searchitems.dat');
    reset(myitemfile);
    for I := 0 to filesize(myitemfile) - 1 do    // Iterate
    begin
      read(myitemfile,myitem);
      if ((trim(myitem.LB) = LB)or(trim(myitem.LB) = 'PUBLIC'))and(trim(myitem.ChName) = ChName) then
        begin
          result := myitem.fieldvalue;
        end;
      seek(myitemfile,i);
    end;    // for
    closefile(myitemfile);
  end;

end;


procedure TSearchForm.GetOperList(datatype:string);
var
  myini:tinifile;
begin
  OperList.ItemIndex := -1;
    myini := tinifile.Create(filepath+'logic.ini');
  try
    if datatype = 'Stri' then
      myini.ReadSection('Stri',OperList.Items)
    else if datatype = 'Numb' then
      myini.ReadSection('Numb',OperList.Items)
    else if datatype = 'Date' then
      myini.ReadSection('Date',OperList.Items);
  finally
    myini.Destroy;
  end;
end;

procedure tsearchform.InitSearch(const LB:string);
var
  I: Integer;
begin
  searchitems.Items.Clear;
  Termitems.Items.Clear;
  OperList.Items.Clear;
  termlist.Clear;
  stredit.Clear;
  Num1.Clear;
  num2.Clear;
  date1.Clear;
  date2.Clear;
  Termitems.Tag := 0;
  savebtn.Enabled := false;
  searchgrid.DestroyColumns;

  if LB = 'ZZ' then
  begin
    GetItems(searchitems.Items,'ZZ');
    GetItems(Termitems.Items,'ZZ');
    ZZRadBtn.Checked := true;
    tag := 0;
  end;

  if LB = 'NT' then
  begin
    GetItems(searchitems.Items,'NT');
    GetItems(Termitems.Items,'NT');
     NTRadBtn.Checked := true;
    tag := 1;
  end;

  if LB = 'TY' then
  begin
    GetItems(searchitems.Items,'TY');
    GetItems(Termitems.Items,'TY');
    TYRadBtn.Checked := true;
    tag := 2;
  end;

  if LB = 'TX' then
  begin
    GetItems(searchitems.Items,'TX');
    GetItems(Termitems.Items,'TX');
    TXRadBtn.Checked := true;
    tag := 3;
  end;

  if LB = 'JS' then
  begin
    GetItems(searchitems.Items,'JS');
    GetItems(Termitems.Items,'JS');
    JSRadBtn.Checked := true;
    tag := 4;
  end;

  if LB = 'ALL' then
  begin
    GetItems(searchitems.Items,'');
    GetItems(Termitems.Items,'');
    AllRadBtn.Checked := true;
    tag := 5;
  end;

  for I := 0 to searchitems.Items.Count - 1 do    // Iterate
  begin
    searchitems.Checked[i] := true;
  end;    // for

end;

procedure TSearchForm.GetItems(lst:tstrings;const flag:string);
var
  I: Integer;
  myitem : item;
  myitemfile : itemfile;
begin
  if fileexists(filepath+'searchitems.dat') then
  begin
    assignfile(myitemfile,filepath+'searchitems.dat');
    reset(myitemfile);
    for I := 0 to filesize(myitemfile) - 1 do    // Iterate
    begin
      read(myitemfile,myitem);
      if ((trim(myitem.LB) = flag) or (trim(myitem.LB) = 'PUBLIC'))and
         (trim(myitem.LB) <> '') then
        lst.Add(myitem.CHname);
      seek(myitemfile,i);
    end;    // for
    closefile(myitemfile);
  end;
end;

procedure TSearchForm.ZZRadBtnClick(Sender: TObject);
begin
  inherited;
  if ZZRadBtn.Checked then InitSearch('ZZ');
end;

procedure TSearchForm.NTRadBtnClick(Sender: TObject);
begin
  inherited;
  if NTRadBtn.Checked then InitSearch('NT');
end;

procedure TSearchForm.TYRadBtnClick(Sender: TObject);
begin
  inherited;
  if TYRadBtn.Checked then InitSearch('TY');
end;

procedure TSearchForm.TXRadBtnClick(Sender: TObject);
begin
  inherited;
  if TXRadBtn.Checked then InitSearch('TX');
end;

procedure TSearchForm.JSRadBtnClick(Sender: TObject);
begin
  inherited;
  if JSRadBtn.Checked then InitSearch('JS');
end;

procedure TSearchForm.AllRadBtnClick(Sender: TObject);
begin
  inherited;
  if AllRadBtn.Checked then InitSearch('ALL');
end;

procedure TSearchForm.date1KeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  key := #0;
end;

procedure TSearchForm.Num1KeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if not(key in['0'..'9',#46]) then key := #0;

end;

procedure TSearchForm.OperListChange(Sender: TObject);
begin
  inherited;
  case Termitems.Tag of    //
    3:begin            // Date
        if trim(OperList.Text) <> '介于' then
          begin
            Num1.Visible := false;
            Num2.Visible := false;
            stredit.Visible := false;
            date1.Visible := true;
            date2.Visible := false;
            andlab.Visible := false;
            betweenlab.Visible := false;
            date1.Width := 130;
            date1.Top := 60;
            date1.Left := 8;
          end
        else
          begin
            Num1.Visible := false;
            Num2.Visible := false;
            stredit.Visible := false;
            andlab.Visible := true;
            betweenlab.Visible := true;
            date1.Visible := true;
            date2.Visible := true;
            date1.Width := 100;
            date1.Top := 48;
            date1.Left := 8;
            date2.Width := 100;
            date2.Top := 85;
            date2.Left := 8;
          end;
      end;
    2:begin              //Number
        if trim(OperList.Text) <> '介于' then
          begin
            Num1.Visible := true;
            Num2.Visible := false;
            stredit.Visible := false;
            date1.Visible := false;
            date2.Visible := false;
            andlab.Visible := false;
            betweenlab.Visible := false;
            Num1.Width := 130;
            Num1.Top := 60;
            Num1.Left := 8;
          end
        else
          begin
            Num1.Visible := true;
            Num2.Visible := true;
            stredit.Visible := false;
            andlab.Visible := true;
            betweenlab.Visible := true;
            date1.Visible := false;
            date2.Visible := false;
            Num1.Width := 100;
            Num1.Top := 48;
            Num1.Left := 8;
            num2.Width := 100;
            num2.Top := 85;
            num2.Left := 8;
          end;
      end;
    1:begin                  //String
        stredit.Visible := true;
        Num1.Visible := false;
        Num2.Visible := false;
        andlab.Visible := false;
        betweenlab.Visible := false;
        date1.Visible := false;
        date2.Visible := false;
        stredit.Width := 130;
        stredit.Top := 60;
        stredit.Left := 8;
      end;
  end;    // case
end;

procedure TSearchForm.SubBtnClick(Sender: TObject);
var
  str:string;
begin
  inherited;
  if termlist.ItemIndex > -1 then

⌨️ 快捷键说明

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