⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ffrmfilter.pas

📁 财务软件:功能尚可,基于UML设计开发的delphi系统,文档齐全
💻 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 + -