📄 providerfilter.pas
字号:
unit ProviderFilter;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DailogBase, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids,
ExtCtrls, dxdbtrel;
type
TfrmProviderFilter = class(TfrmDailogBase)
QArea: TADOQuery;
QAreafID: TAutoIncField;
QAreafCode: TWideStringField;
QAreafName: TWideStringField;
QAreafParentID: TIntegerField;
dsArea: TDataSource;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
lblNO: TLabel;
Label4: TLabel;
edtCode: TEdit;
edtName: TEdit;
lktvArea: TdxDBLookupTreeView;
Panel1: TPanel;
DBGrid1: TDBGrid;
btFilter: TBitBtn;
btOk: TBitBtn;
btCancel: TBitBtn;
btClear: TBitBtn;
QProvider: TADOQuery;
dsProvider: TDataSource;
QProviderfid: TAutoIncField;
QProviderfCode: TWideStringField;
QProviderfAreaCode: TWideStringField;
QProviderfName: TWideStringField;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure btOkClick(Sender: TObject);
procedure btCancelClick(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure btClearClick(Sender: TObject);
procedure btFilterClick(Sender: TObject);
private
sSql, sFilter: string;
bClick: Boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
frmProviderFilter : TfrmProviderFilter;
implementation
{$R *.dfm}
procedure TfrmProviderFilter.FormCreate(Sender: TObject);
begin
inherited;
if not QArea.Active then QArea.Open;
sSql := 'Select fid,fCode,fAreaCode,fName from vProvider';
end;
procedure TfrmProviderFilter.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
//inherited;
//frmProviderFilter:=nil;
end;
procedure TfrmProviderFilter.FormShow(Sender: TObject);
begin
inherited;
bClick := false;
//btClearClick(Self)
end;
procedure TfrmProviderFilter.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
inherited;
CanClose := bClick;
end;
procedure TfrmProviderFilter.btOkClick(Sender: TObject);
begin
inherited;
if QProvider.Active and (QProvider.RecordCount > 0) then
begin
bClick := True;
ModalResult := QProvider.FieldbyName('fID').asInteger;
end;
end;
procedure TfrmProviderFilter.btCancelClick(Sender: TObject);
begin
inherited;
bClick := True;
ModalResult := -1;
end;
procedure TfrmProviderFilter.DBGrid1DblClick(Sender: TObject);
begin
inherited;
btOkClick(self)
end;
procedure TfrmProviderFilter.btClearClick(Sender: TObject);
begin
inherited;
lktvArea.text := '';
edtCode.text := '';
edtName.text := '';
QProvider.Close;
end;
procedure TfrmProviderFilter.btFilterClick(Sender: TObject);
begin
inherited;
sFilter := ' Where';
if Trim(lktvArea.text) <> '' then
begin
sFilter := sFilter + ' fAreaCode like ''' + QArea.FieldbyName('fCode').asString + '%''';
end;
if Trim(edtCode.text) <> '' then
begin
if sFilter <> ' Where' then sFilter := sFilter + ' and';
if pos('%', edtCode.text) > 0 then
sFilter := sFilter + ' fCode like ''' + Trim(edtCode.text) + ''''
else
sFilter := sFilter + ' fCode=''' + Trim(edtCode.text) + '''';
end;
if Trim(edtName.text) <> '' then
begin
if sFilter <> ' Where' then sFilter := sFilter + ' and';
if pos('%', edtName.text) > 0 then
sFilter := sFilter + ' fName like ''' + Trim(edtName.text) + ''''
else
sFilter := sFilter + ' fName=''' + Trim(edtName.text) + '''';
end;
with QProvider do
begin
Close;
SQL.Clear;
if sFilter <> ' Where' then
SQL.Add(sSql + sFilter)
else
SQL.Add(sSql);
Open;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -