📄 filters.pas
字号:
unit Filters;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids,Common, ExtCtrls, DBCtrls, StdCtrls;
type
TFilters = class(TComponent)
ADOTable: TADOTable;
DBGrid: TDBGrid;
ParentControl:TWinControl;
procedure AddEdit;//添加过虑条件输入框
procedure GetFilter(Sender: TObject);//获取过虑条件
private
{ Private declarations }
public
{ Public declarations }
constructor Create(SADOTable: TADOTable;SDBGrid: TDBGrid;Top:integer); overload;
end;
var
Editarr:array of TEdit;
FilterTop:integer;
implementation
constructor TFilters.Create(SADOTable: TADOTable;SDBGrid: TDBGrid;Top:integer);
begin
ADOTAble:=SADOTable;
DBGrid:=SDBGrid;
ParentControl:=SDBGrid.Parent;
FilterTop:=Top;
end;
procedure TFilters.GetFilter(Sender:TObject);
var
i:integer;
begin
ADOTable.Filter:='';
for i:=Low(EditArr) to High(EditArr) do
begin
if trim(EditArr[i].Text)<>'' then
if ADOTable.Filter<>'' then
ADOTable.Filter:=ADOTable.Filter+' and '+DBGrid.Columns[i].FieldName+
' like ''%'+trim(EditArr[i].Text)+'%'''
else ADOTable.Filter:=DBGrid.Columns[i].FieldName+
' like ''%'+trim(EditArr[i].Text)+'%''';
end;
end;
procedure TFilters.AddEdit;
var
i:integer;
Labelarr:array of TLabel;
begin
SetLength(Editarr,DBGrid.Columns.Count); //设置数组长度
SetLength(Labelarr,DBGrid.Columns.Count);
for i:=low(Editarr) to High(Editarr) do
begin
Editarr[i]:=TEdit.Create(ParentControl);
Labelarr[i]:=TLabel.Create(ParentControl);
//设置字体格式
Labelarr[i].Font.Name:='宋体';
Labelarr[i].Font.Size:=10;
Editarr[i].Parent:=ParentControl;
EditArr[i].OnChange:=GetFilter;
Labelarr[i].Parent:=ParentControl;
Labelarr[i].Top:=FilterTop;
Editarr[i].Top:=Labelarr[i].Top+Labelarr[i].Height+5;
Editarr[i].Width:=DBGrid.Columns[i].Width;
Labelarr[i].Width:=DBGrid.Columns[i].Width;
Labelarr[i].Caption:=DBGrid.Columns[i].Title.Caption;
if i=low(Editarr) then
begin
Editarr[i].Left:=DBGrid.Left+15;
Labelarr[i].Left:=DBGrid.Left+15;
end
else
begin
Editarr[i].Left:=Editarr[i-1].Left+Editarr[i-1].Width;
Labelarr[i].Left:=Editarr[i-1].Left+Editarr[i-1].Width;
end;
end;
DBGrid.Top:=Editarr[0].Top+Editarr[0].Height+5;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -