📄 searchunit.pas
字号:
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 + -