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

📄 filterpublic.pas

📁 胜天财务进销存2003源代码,SQLSERVER版,目前最完整的财务进销存系统.
💻 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,
  KsControls, KsButtons, KsSkinButtons, KsHooks, KsForms, KsSkinForms,
  KsLabels, KsSkinLabels;

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 + -