📄 basehandlesearch.pas
字号:
unit BaseHandleSearch;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Base_Dll, Grids, DBGridEh, ExtCtrls, StdCtrls, DB, DBClient;
const
WM_USER_SETFOOTER = WM_USER+8028;
type
TfrmHandleSearch = class(TfrmBase_DLL)
GroupBox1: TGroupBox;
Panel1: TPanel;
Grid: TDBGridEh;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
CDSBaseinfo: TClientDataSet;
DSBaseinfo: TDataSource;
procedure GridGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure GridTitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
procedure Button1Click(Sender: TObject);
procedure GridDblClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
function GetGridTitle(TableName:String):Boolean;
procedure setfooter(var setfooter:Tmessage);Message WM_USER_SETFOOTER;
{ Private declarations }
Protected
SearchTable:String;
TiaoField1,TiaoField2,TiaoField3:string;
KeyField:String;
public
{ Public declarations }
end;
var
frmHandleSearch: TfrmHandleSearch;
implementation
uses Global, DataProcess;
{$R *.dfm}
procedure TfrmHandleSearch.GridGetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
inherited;
if grid.SumList.RecNo mod 2=1 then
BackGround:=$00EAEFED
else
BackGround:=clWhite;
end;
procedure TfrmHandleSearch.Button2Click(Sender: TObject);
begin
inherited;
SearchReturnID:=0;
SearchTiao:='';
Close;
end;
procedure TfrmHandleSearch.FormDestroy(Sender: TObject);
begin
inherited;
frmHandleSearch:=nil;
end;
procedure TfrmHandleSearch.GridTitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
var
sortstring:string;
begin
inherited;
with Column do
begin
if FieldName = '' then
Exit;
case Title.SortMarker of
smNoneEh:
begin
Title.SortMarker := smDownEh;
sortstring := Column.FieldName + ' ASC';
end;
smDownEh: sortstring := Column.FieldName + ' ASC';
smUpEh: sortstring := Column.FieldName + ' DESC';
end;
try
CDSBaseinfo.IndexFieldNames:= sortstring
except
end;
end;
end;
procedure TfrmHandleSearch.Button1Click(Sender: TObject);
var
sFilter:String;
begin
inherited;
SearchTiao:='';
SearchReturnID:=0;
sFilter:='';
if edit1.Text <> '' then
if sFilter='' then
sFilter:= TiaoField1 +' like '+Vartosql('%'+Trim(edit1.text)+'%')
else
sFilter:= sFilter+' and '+TiaoField1+' like '+Vartosql('%'+Trim(edit1.text)+'%');
if edit2.Text <> '' then
if sFilter='' then
sFilter:=TiaoField2+' like '+Vartosql('%'+Trim(edit2.text)+'%')
else
sFilter:= sFilter+' and '+TiaoField2+' like '+Vartosql('%'+Trim(edit2.text)+'%');
if edit3.Text <> '' then
if sFilter='' then
sFilter:=TiaoField3+' like '+Vartosql('%'+Trim(edit3.text)+'%')
else
sFilter:= sFilter+' and '+TiaoField3+' like '+Vartosql('%'+Trim(edit3.text)+'%');
if sFilter<>'' then
Searchtiao:=sFilter
else
Searchtiao:=' fid>0 ';
try
GetSqlData(CDSBaseinfo,SearchTable,KeyField,Searchtiao,20);
GetGridTitle(SearchTable);
postmessage(handle,WM_USER_SETFOOTER,0,0);
Except
on E:Exception do
begin
messagedlg('查找失败 ! 错误原因 : '+#10#13+E.Message,mtWarning,[mbok],0);
Exit;
end;
end;
end;
function TfrmHandleSearch.GetGridTitle(TableName: String): Boolean;
var
i:integer;
TMPCDS:TclientDataset;
begin
Result:=True;
if TableName='' then
Exit;
try
CDSbaseinfo.DisableControls;
TMPCDS:=Tclientdataset.Create(nil);
TMPCDS.FetchOnDemand:=False;
GetsqlData(TMPCDS,'TTablefield','fid','ftableName='+vartosql(TableName),20);
if TMPCDS.RecordCount > 0 then
begin
for i:=0 to CDSBaseinfo.Fields.Count - 1 do
begin
TMPCDS.First;
while not TMPCDS.Eof do
begin
if UpperCase(CDSbaseinfo.fields[i].FieldName)=UpperCase(TMPCDS.FieldByName('fname').AsString) then
begin
CDSbaseinfo.Fields[i].DisplayLabel:=TMPCDS.fieldbyname('fdesc').AsString;
if (TMPCDS.FieldByName('ftype').AsString='int') or
(TMPCDS.FieldByName('ftype').AsString='bit') or
(TMPCDS.FieldByName('ftype').AsString='datetime') or
(TMPCDS.FieldByName('ftype').AsString='numeric') then
CDSbaseinfo.Fields[i].DisplayWidth := 12
else
CDSbaseinfo.Fields[i].DisplayWidth:=Trunc(TMPCDS.fieldbyname('flength').AsInteger/1.5);
if not TMPCDS.FieldByName('fisVisible').AsBoolean then
begin
CDSbaseinfo.Fields[i].Visible:=False;
end;
end;
TMPCDS.Next;
end;
CDSBaseinfo.Next;
end;
end;
finally
TMPCDS.Close;
TMPCDS.Free;
CDSbaseinfo.EnableControls;
end;
end;
procedure TfrmHandleSearch.GridDblClick(Sender: TObject);
begin
inherited;
if not CDSBaseinfo.Active then
Exit;
if CDSBaseinfo.RecordCount > 0 then
begin
SearchReturnID:=CDSBaseinfo.Fieldbyname(KeyField).AsInteger;
Self.Close;
end;
end;
procedure TfrmHandleSearch.setfooter(var setfooter: Tmessage);
var
i,j:integer;
begin
i:=Grid.Columns.Count;
if i>0 then
begin
for j:=0 to i-1 do
begin
Grid.Columns[j].Footer.ValueType:=fvtStaticText;
Grid.Columns[j].Footer.Value:='合计';
Grid.Columns[j+1].Footer.ValueType:=fvtCount;
break;
end;
end;
application.ProcessMessages;
end;
procedure TfrmHandleSearch.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
Grid.SumList.Active:=False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -