//==============================================================================
//DBGrid.根据选择的字段过滤*****************************************************
//==============================================================================
procedure TexDockForm.DBGridSelectFilter(Sender: TObject);
var FilterStr: string;
begin
with (((Sender as TMenuItem).Owner as TPopupMenu).PopupComponent as TDBGrid) do
begin
FilterStr := SelectedField.FieldName + ' = ''' + SelectedField.AsString + '''';
if DataSource.DataSet.Filter=''
then DataSource.DataSet.Filter := FilterStr
else if Pos(FilterStr, DataSource.DataSet.Filter)<=0
then DataSource.DataSet.Filter := DataSource.DataSet.Filter + ' and ' + FilterStr
else FilterStr := '';
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DataSource.DataSet.Filtered := true;
TRowCountThread.Create(((Sender as TMenuItem).Owner as TPopupMenu).PopupComponent as TDBGrid);
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
with (Sender as TMenuItem) do
begin
if Count=0 then
begin
Add(TMenuItem.Create(Owner as TPopupMenu));
Items[Count-1].Caption := '撤销过滤';
Items[Count-1].OnClick := DBGridCancelFilter;
end;
if Length(FilterStr)>0 then
begin
Add(TMenuItem.Create(Owner as TPopupMenu));
Items[Count-1].Caption := FilterStr;
Items[Count-1].OnClick := DBGridRecedeFilter;
end;
end;
end;