📄 ffrmfilter.pas
字号:
unit FfrmFilter;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons,db, Menus;
type
TfrmFilter = class(TForm)
cmbField: TComboBox;
cmbCompare: TComboBox;
edtValue: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
cmbRelate: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
memFilter: TMemo;
SpeedButton1: TSpeedButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure AddFields(s:String);
procedure AddFieldsByDataSet(ds:TDataSet);
procedure ClearFields;
function GetFilterString():String;
end;
var
frmFilter: TfrmFilter;
SelectOption: Boolean;
FilterString: String;
implementation
uses BaseVar;
{$R *.DFM}
procedure TfrmFilter.AddFields(s:String);
begin
cmbField.Items.Add(s);
end;
procedure TfrmFilter.ClearFields;
begin
cmbField.Items.Clear;
end;
function TfrmFilter.GetFilterString():String;
var
S:String;
I:Integer;
begin
FilterString:='';
for i:=0 to memFilter.Lines.Count-1 do
FilterString:=FilterString+memFilter.Lines[i];
S:=FilterString;
for i:=0 to 5 do
begin
s:=Replacing(s,'大于','>');
s:=Replacing(s,'小于','<');
s:=Replacing(s,'大于等于','>=');
s:=Replacing(s,'小于等于','<=');
s:=Replacing(s,'等于','=');
// s:=Replacing(s,'包 含','like');
s:=Replacing(s,'并 且','AND');
s:=Replacing(s,'或 者','OR');
end;
Result:=s;
end;
procedure TfrmFilter.BitBtn2Click(Sender: TObject);
begin
SelectOption:=False;
end;
procedure TfrmFilter.FormCreate(Sender: TObject);
begin
//the Compare operator
cmbCompare.Items.Add(' 大于 ');
cmbCompare.Items.Add(' 小于 ');
cmbCompare.Items.Add(' 大于等于 ');
cmbCompare.Items.Add(' 小于等于 ');
cmbCompare.Items.Add(' 等于 ');
// cmbCompare1.Items.Add(' 包 含 ');
//the relate operator
cmbRelate.Items.Add(' 并 且 ');
cmbRelate.Items.Add(' 或 者 ');
end;
procedure TfrmFilter.FormShow(Sender: TObject);
begin
cmbField.Text:='';
cmbCompare.Text:='';
cmbRelate.Text:='' ;
edtValue.Text:='';
memFilter.Clear;
end;
procedure TfrmFilter.AddFieldsByDataSet(ds: TDataSet);
var
i:Integer;
begin
ClearFields;
if not ds.active then exit;
with ds do
begin
for i:=0 to Fields.Count-1 do
cmbField.Items.Add(Fields[i].FieldName);
end;
end;
procedure TfrmFilter.SpeedButton1Click(Sender: TObject);
begin
if (cmbField.text='') or (cmbCompare.text='') or (edtValue.text='') then
begin
MessageBox(handle,'请填写完整数据!','提示信息',mb_iconinformation);
exit;
end;
if memFilter.Lines.Count >0 then
begin
if cmbRelate.text='' then
begin
MessageBox(handle,'请选择关系!','提示信息',mb_iconinformation);
exit;
end;
memFilter.Lines.Add(cmbRelate.text+cmbField.Text+cmbCompare.Text+''''+edtValue.Text+'''');
end
else
memFilter.Lines.Add(cmbField.Text+cmbCompare.Text+''''+edtValue.Text+'''');
end;
procedure TfrmFilter.N1Click(Sender: TObject);
begin
memFilter.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -