📄 filterpublic.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 + -