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

📄 filterpublic.pas

📁 进销存管理 编译环境Delphi7+Win2000 用到的控件 ReportMachine2.6 InfoPower4000Pro_vcl7 RxLib2.7 SkinEngine 3
💻 PAS
字号:
unit FilterPublic;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  BaseForm, dxExEdtr, dxEdLib, dxEditor, ExtCtrls, StdCtrls, Buttons,
  dxCntner, dxDBGrid, DBData, ADODB, Db, dxTL, dxDBCtrl, dxDBTL,
  KsSkinButtons, KsSkinForms, KsSkinLabels, se_controls;

type
  TfrmFilterPublic = class(TfrmBaseForm)
    Label1: TSeSkinLabel;
    Label2: TSeSkinLabel;
    Label3: TSeSkinLabel;
    edtRow1: TdxPickEdit;
    edtComp1: TdxPickEdit;
    edtValue1: TdxEdit;
    edtAnd2: TdxPickEdit;
    edtRow2: TdxPickEdit;
    edtComp2: TdxPickEdit;
    edtValue2: TdxEdit;
    edtRow3: TdxPickEdit;
    edtComp3: TdxPickEdit;
    edtValue3: TdxEdit;
    edtRow4: TdxPickEdit;
    edtComp4: TdxPickEdit;
    edtValue4: TdxEdit;
    edtRow5: TdxPickEdit;
    edtComp5: TdxPickEdit;
    edtValue5: TdxEdit;
    edtRow6: TdxPickEdit;
    edtComp6: TdxPickEdit;
    edtValue6: TdxEdit;
    edtAnd3: TdxPickEdit;
    edtAnd4: TdxPickEdit;
    edtAnd5: TdxPickEdit;
    edtAnd6: TdxPickEdit;
    bbYes: TSeSkinButton;
    bbNo: TSeSkinButton;
    bbClear: TSeSkinButton;
    chkSensitive: TdxCheckEdit;
    chkPartial: TdxCheckEdit;
    edtFieldValue: TdxPickEdit;
    edtCompValue: TdxPickEdit;
    edtAndValue: TdxPickEdit;
    edtDate1: TdxDateEdit;
    edtDate2: TdxDateEdit;
    edtDate3: TdxDateEdit;
    edtDate4: TdxDateEdit;
    edtDate5: TdxDateEdit;
    edtDate6: TdxDateEdit;
    procedure edtValue1Change(Sender: TObject);
    procedure edtValue2Change(Sender: TObject);
    procedure edtValue3Change(Sender: TObject);
    procedure edtValue4Change(Sender: TObject);
    procedure edtValue5Change(Sender: TObject);
    procedure bbNoClick(Sender: TObject);
    procedure bbYesClick(Sender: TObject);
    procedure edtRow1Change(Sender: TObject);
    procedure edtDate1Change(Sender: TObject);
    procedure edtDate2Change(Sender: TObject);
    procedure edtDate3Change(Sender: TObject);
    procedure edtDate4Change(Sender: TObject);
    procedure edtDate5Change(Sender: TObject);
    procedure edtDate6Change(Sender: TObject);
    procedure edtRow2Change(Sender: TObject);
    procedure edtRow3Change(Sender: TObject);
    procedure edtRow4Change(Sender: TObject);
    procedure edtRow5Change(Sender: TObject);
    procedure edtRow6Change(Sender: TObject);
    procedure bbClearClick(Sender: TObject);
  private
    { Private declarations }
    bReturn: Boolean;
    gridGrid1: TCustomdxDBTreeListControl;
    DBSet1: TDataSet;
    procedure MainShow;
    procedure LoadEdit;
    procedure LoadData;
    function GetFilterType(sFilter: string): string;
    function GetFilterString: string;
  public
    { Public declarations }
  end;

function FilterPublicShow(Grid1: TCustomdxDBTreeListControl): Boolean;

implementation

uses SysPublic;

{$R *.DFM}

function FilterPublicShow(Grid1: TCustomdxDBTreeListControl): Boolean;
var
  frmFilterPublic: TfrmFilterPublic;
begin
  frmFilterPublic := TfrmFilterPublic.Create(Application);
  with frmFilterPublic do
  begin
    gridGrid1 := Grid1;
    MainShow;
    Result := bReturn;
    Free;
  end;
end;

procedure TfrmFilterPublic.MainShow;
begin
  bOperateLog := False;
  LoadEdit;
  LoadData;
  ShowModal;
end;

procedure TfrmFilterPublic.LoadEdit;
var
  lCol: Integer;
  sCaption, sField: string;
begin
  sCaption := '';
  DBSet1 := gridGrid1.DataLink.DataSet;
  //得到GRID的列名称
  for lCol := 0 to gridGrid1.ColumnCount - 1 do
    if gridGrid1.Columns[lCol].Visible = true then
    begin
      sCaption := sCaption + gridGrid1.Columns[lCol].Caption + #13;
      sField := sField + gridGrid1.Columns[lCol].FieldName + #13;
    end;
  edtRow1.Items.Text := sCaption;
  edtRow2.Items.Text := sCaption;
  edtRow3.Items.Text := sCaption;
  edtRow4.Items.Text := sCaption;
  edtRow5.Items.Text := sCaption;
  edtRow6.Items.Text := sCaption;

  edtFieldValue.Items.Text := sField;

  edtRow1.ItemIndex := 0;
  edtComp1.ItemIndex := 0;
end;

procedure TfrmFilterPublic.LoadData;
begin
  edtRow1Change(nil);
end;

function TfrmFilterPublic.GetFilterType(sFilter: string): string;
begin
  Result := GetFieldType(gridGrid1.ColumnByFieldName(sFilter).Field);
end;

function TfrmFilterPublic.GetFilterString: string;
var
  sFilter: string;
  sz: string;
begin
  sFilter := '';
  sz := '';
  if (edtValue1.Enabled) and (edtValue1.Text <> '') then
  begin
    if GetFilterType(edtFieldValue.Items.Strings[edtRow1.ItemIndex]) = 'Str' then
      sz := '*';
    sFilter := edtFieldValue.Items.Strings[edtRow1.ItemIndex] +
      edtCompValue.Items.Strings[edtComp1.ItemIndex] +
      #39 + sz + Trim(edtValue1.Text) + sz + #39;
  end;
  if (edtValue2.Enabled) and (edtValue2.Text <> '') then
  begin
    if GetFilterType(edtFieldValue.Items.Strings[edtRow2.ItemIndex]) = 'Str' then
      sz := '*';
    sFilter := sFilter +
      edtAndValue.Items.Strings[edtAnd2.ItemIndex] +
      edtFieldValue.Items.Strings[edtRow2.ItemIndex] +
      edtCompValue.Items.Strings[edtComp2.ItemIndex] +
      #39 + sz + Trim(edtValue2.Text) + sz + #39;
  end;
  if (edtValue3.Enabled) and (edtValue3.Text <> '') then
  begin
    if GetFilterType(edtFieldValue.Items.Strings[edtRow3.ItemIndex]) = 'Str' then
      sz := '*';
    sFilter := sFilter +
      edtAndValue.Items.Strings[edtAnd3.ItemIndex] +
      edtFieldValue.Items.Strings[edtRow3.ItemIndex] +
      edtCompValue.Items.Strings[edtComp3.ItemIndex] +
      #39 + sz + Trim(edtValue3.Text) + sz + #39;
  end;
  if (edtValue4.Enabled) and (edtValue4.Text <> '') then
  begin
    if GetFilterType(edtFieldValue.Items.Strings[edtRow4.ItemIndex]) = 'Str' then
      sz := '*';
    sFilter := sFilter +
      edtAndValue.Items.Strings[edtAnd4.ItemIndex] +
      edtFieldValue.Items.Strings[edtRow4.ItemIndex] +
      edtCompValue.Items.Strings[edtComp4.ItemIndex] +
      #39 + sz + Trim(edtValue4.Text) + sz + #39;
  end;
  if (edtValue5.Enabled) and (edtValue5.Text <> '') then
  begin
    if GetFilterType(edtFieldValue.Items.Strings[edtRow5.ItemIndex]) = 'Str' then
      sz := '*';
    sFilter := sFilter +
      edtAndValue.Items.Strings[edtAnd5.ItemIndex] +
      edtFieldValue.Items.Strings[edtRow5.ItemIndex] +
      edtCompValue.Items.Strings[edtComp5.ItemIndex] +
      #39 + sz + Trim(edtValue5.Text) + sz + #39;
  end;
  if (edtValue6.Enabled) and (edtValue6.Text <> '') then
  begin
    if GetFilterType(edtFieldValue.Items.Strings[edtRow6.ItemIndex]) = 'Str' then
      sz := '*';
    sFilter := sFilter +
      edtAndValue.Items.Strings[edtAnd6.ItemIndex] +
      edtFieldValue.Items.Strings[edtRow6.ItemIndex] +
      edtCompValue.Items.Strings[edtComp6.ItemIndex] +
      #39 + sz + Trim(edtValue6.Text) + sz + #39;
  end;

  Result := sFilter;
end;

procedure TfrmFilterPublic.edtValue1Change(Sender: TObject);
begin
  inherited;
  if Trim(edtValue1.Text) <> '' then
  begin
    edtRow2.ItemIndex := 0;
    edtComp2.ItemIndex := 0;
    edtAnd2.ItemIndex := 0;
    bbYes.Enabled := true;
    edtValue2.Enabled := true;
    edtRow2.Enabled := true;
    edtComp2.Enabled := true;
    edtAnd2.Enabled := true;
  end
  else
  begin
    bbYes.Enabled := False;
    edtValue2.Enabled := False;
    edtRow2.Enabled := False;
    edtComp2.Enabled := False;
    edtAnd2.Enabled := False;
  end;
end;

procedure TfrmFilterPublic.edtValue2Change(Sender: TObject);
begin
  inherited;
  if Trim(edtValue2.Text) <> '' then
  begin
    edtRow3.ItemIndex := 0;
    edtComp3.ItemIndex := 0;
    edtAnd3.ItemIndex := 0;
    edtValue3.Enabled := true;
    edtRow3.Enabled := true;
    edtComp3.Enabled := true;
    edtAnd3.Enabled := true;
  end
  else
  begin
    edtValue3.Enabled := False;
    edtRow3.Enabled := False;
    edtComp3.Enabled := False;
    edtAnd3.Enabled := False;
  end;
end;

procedure TfrmFilterPublic.edtValue3Change(Sender: TObject);
begin
  inherited;
  if Trim(edtValue3.Text) <> '' then
  begin
    edtRow4.ItemIndex := 0;
    edtComp4.ItemIndex := 0;
    edtAnd4.ItemIndex := 0;
    edtValue4.Enabled := true;
    edtRow4.Enabled := true;
    edtComp4.Enabled := true;
    edtAnd4.Enabled := true;
  end
  else
  begin
    edtValue4.Enabled := False;
    edtRow4.Enabled := False;
    edtComp4.Enabled := False;
    edtAnd4.Enabled := False;
  end;
end;

procedure TfrmFilterPublic.edtValue4Change(Sender: TObject);
begin
  inherited;
  if Trim(edtValue4.Text) <> '' then
  begin
    edtRow5.ItemIndex := 0;
    edtComp5.ItemIndex := 0;
    edtAnd5.ItemIndex := 0;
    edtValue5.Enabled := true;
    edtRow5.Enabled := true;
    edtComp5.Enabled := true;
    edtAnd5.Enabled := true;
  end
  else
  begin
    edtValue5.Enabled := False;
    edtRow5.Enabled := False;
    edtComp5.Enabled := False;
    edtAnd5.Enabled := False;
  end;
end;

procedure TfrmFilterPublic.edtValue5Change(Sender: TObject);
begin
  inherited;
  if Trim(edtValue5.Text) <> '' then
  begin
    edtRow6.ItemIndex := 0;
    edtComp6.ItemIndex := 0;
    edtAnd6.ItemIndex := 0;
    edtValue6.Enabled := true;
    edtRow6.Enabled := true;
    edtComp6.Enabled := true;
    edtAnd6.Enabled := true;
  end
  else
  begin
    edtValue6.Enabled := False;
    edtRow6.Enabled := False;
    edtComp6.Enabled := False;
    edtAnd6.Enabled := False;
  end;
end;

procedure TfrmFilterPublic.bbNoClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmFilterPublic.bbYesClick(Sender: TObject);
begin
  inherited;
  try
    DBSet1.Filter := GetFilterString;
  except
    Exit;
  end;
  if Trim(DBSet1.Filter) <> '' then
  try
    DBSet1.Filtered := True;
  except
  end;
  Close;
end;

procedure TfrmFilterPublic.edtDate1Change(Sender: TObject);
begin
  inherited;
  edtValue1.Text := edtDate1.Text;
  edtValue1Change(nil);
end;

procedure TfrmFilterPublic.edtDate2Change(Sender: TObject);
begin
  inherited;
  edtValue2.Text := edtDate2.Text;
  edtValue2Change(nil);
end;

procedure TfrmFilterPublic.edtDate3Change(Sender: TObject);
begin
  inherited;
  edtValue3.Text := edtDate3.Text;
  edtValue3Change(nil);
end;

procedure TfrmFilterPublic.edtDate4Change(Sender: TObject);
begin
  inherited;
  edtValue4.Text := edtDate4.Text;
  edtValue4Change(nil);
end;

procedure TfrmFilterPublic.edtDate5Change(Sender: TObject);
begin
  inherited;
  edtValue5.Text := edtDate5.Text;
  edtValue5Change(nil);
end;

procedure TfrmFilterPublic.edtDate6Change(Sender: TObject);
begin
  inherited;
  edtValue6.Text := edtDate6.Text;
end;

procedure TfrmFilterPublic.edtRow1Change(Sender: TObject);
begin
  inherited;
  edtDate1.Text := '';
  if (edtRow1.ItemIndex >= 0) and
    (GetFilterType(edtFieldValue.Items.Strings[edtRow1.ItemIndex]) = 'Date') then
  begin
    edtDate1.Visible := true;
    edtValue1.visible := false;
  end
  else
  begin
    edtDate1.Visible := false;
    edtValue1.visible := True;
    if GetFilterType(edtFieldValue.Items.Strings[edtRow1.ItemIndex]) = 'Str' then
    begin
      edtComp1.ItemIndex := 0;
      edtComp1.Enabled := False;
    end
    else
      edtComp1.Enabled := True;
  end;
end;

procedure TfrmFilterPublic.edtRow2Change(Sender: TObject);
begin
  inherited;
  edtDate2.Text := '';
  if GetFilterType(edtFieldValue.Items.Strings[edtRow2.ItemIndex]) = 'Date' then
  begin
    edtDate2.Visible := true;
    edtValue2.visible := false;
  end
  else
  begin
    edtDate2.Visible := false;
    edtValue2.visible := True;
    if GetFilterType(edtFieldValue.Items.Strings[edtRow2.ItemIndex]) = 'Str' then
    begin
      edtComp2.ItemIndex := 0;
      edtComp2.Enabled := False;
    end
    else
      edtComp2.Enabled := True;
  end;
end;

procedure TfrmFilterPublic.edtRow3Change(Sender: TObject);
begin
  inherited;
  edtDate3.Text := '';
  if GetFilterType(edtFieldValue.Items.Strings[edtRow3.ItemIndex]) = 'Date' then
  begin
    edtDate3.Visible := true;
    edtValue3.visible := false;
  end
  else
  begin
    edtDate3.Visible := false;
    edtValue3.visible := True;
    if GetFilterType(edtFieldValue.Items.Strings[edtRow4.ItemIndex]) = 'Str' then
    begin
      edtComp3.ItemIndex := 0;
      edtComp3.Enabled := False;
    end
    else
      edtComp3.Enabled := True;
  end;
end;

procedure TfrmFilterPublic.edtRow4Change(Sender: TObject);
begin
  inherited;
  edtDate4.Text := '';
  if GetFilterType(edtFieldValue.Items.Strings[edtRow4.ItemIndex]) = 'Date' then
  begin
    edtDate4.Visible := true;
    edtValue4.visible := false;
  end
  else
  begin
    edtDate4.Visible := false;
    edtValue4.visible := True;
    if GetFilterType(edtFieldValue.Items.Strings[edtRow4.ItemIndex]) = 'Str' then
    begin
      edtComp4.ItemIndex := 0;
      edtComp4.Enabled := False;
    end
    else
      edtComp4.Enabled := True;
  end;
end;

procedure TfrmFilterPublic.edtRow5Change(Sender: TObject);
begin
  inherited;
  edtDate5.Text := '';
  if GetFilterType(edtFieldValue.Items.Strings[edtRow5.ItemIndex]) = 'Date' then
  begin
    edtDate5.Visible := true;
    edtValue5.visible := false;
  end
  else
  begin
    edtDate5.Visible := false;
    edtValue5.visible := True;
    if GetFilterType(edtFieldValue.Items.Strings[edtRow5.ItemIndex]) = 'Str' then
    begin
      edtComp5.ItemIndex := 0;
      edtComp5.Enabled := False;
    end
    else
      edtComp5.Enabled := True;
  end;
end;

procedure TfrmFilterPublic.edtRow6Change(Sender: TObject);
begin
  inherited;
  edtDate6.Text := '';
  if GetFilterType(edtFieldValue.Items.Strings[edtRow6.ItemIndex]) = 'Date' then
  begin
    edtDate6.Visible := true;
    edtValue6.visible := false;
  end
  else
  begin
    edtDate6.Visible := false;
    edtValue6.visible := True;
    if GetFilterType(edtFieldValue.Items.Strings[edtRow6.ItemIndex]) = 'Str' then
    begin
      edtComp6.ItemIndex := 0;
      edtComp6.Enabled := False;
    end
    else
      edtComp6.Enabled := True;
  end;
end;

procedure TfrmFilterPublic.bbClearClick(Sender: TObject);
begin
  inherited;
  DBSet1.Filter := '';
  edtValue1.Text := '';
  edtValue2.Text := '';
  edtValue3.Text := '';
  edtValue4.Text := '';
  edtValue5.Text := '';
  edtValue6.Text := '';
  bbYes.Enabled := True;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -