RxFPC:fix show filter in RxDBGrid

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6110 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2017-12-28 08:57:47 +00:00
parent a54f29bbb6
commit 45852fa341
2 changed files with 89 additions and 47 deletions

View File

@@ -479,12 +479,12 @@
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
<TopLine Value="5975"/>
<CursorPos X="98" Y="6004"/>
<TopLine Value="6079"/>
<CursorPos Y="6098"/>
<UsageCount Value="12"/>
<Bookmarks Count="2">
<Item0 X="3" Y="7314" ID="1"/>
<Item1 X="17" Y="4353" ID="2"/>
<Item0 X="3" Y="7318" ID="1"/>
<Item1 X="17" Y="4357" ID="2"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit57>
@@ -563,123 +563,123 @@
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5975" TopLine="5967"/>
<Caret Line="5979" TopLine="5967"/>
</Position1>
<Position2>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5977" TopLine="5967"/>
<Caret Line="5980" TopLine="5967"/>
</Position2>
<Position3>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5979" TopLine="5967"/>
<Caret Line="5975" TopLine="5967"/>
</Position3>
<Position4>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5980" TopLine="5967"/>
<Caret Line="5977" TopLine="5967"/>
</Position4>
<Position5>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5975" TopLine="5967"/>
<Caret Line="5979" TopLine="5967"/>
</Position5>
<Position6>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5977" TopLine="5967"/>
<Caret Line="5980" TopLine="5967"/>
</Position6>
<Position7>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5979" TopLine="5967"/>
<Caret Line="5975" TopLine="5967"/>
</Position7>
<Position8>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5980" TopLine="5967"/>
<Caret Line="5977" TopLine="5967"/>
</Position8>
<Position9>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5975" TopLine="5967"/>
<Caret Line="5979" TopLine="5967"/>
</Position9>
<Position10>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5977" TopLine="5967"/>
<Caret Line="5982" TopLine="5967"/>
</Position10>
<Position11>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5979" TopLine="5967"/>
<Caret Line="5989" TopLine="5967"/>
</Position11>
<Position12>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5982" TopLine="5967"/>
<Caret Line="6007" TopLine="5989"/>
</Position12>
<Position13>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5989" TopLine="5967"/>
<Caret Line="6025" TopLine="5992"/>
</Position13>
<Position14>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6007" TopLine="5989"/>
<Caret Line="6018" TopLine="5992"/>
</Position14>
<Position15>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6025" TopLine="5992"/>
<Caret Line="6013" Column="57" TopLine="5992"/>
</Position15>
<Position16>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6018" TopLine="5992"/>
<Caret Line="6010" Column="15" TopLine="5995"/>
</Position16>
<Position17>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6013" Column="57" TopLine="5992"/>
<Caret Line="6018" Column="16" TopLine="5995"/>
</Position17>
<Position18>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5974" TopLine="5994"/>
<Caret Line="6012" Column="11" TopLine="5994"/>
</Position18>
<Position19>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6010" Column="15" TopLine="5995"/>
<Caret Line="6028" Column="80" TopLine="5991"/>
</Position19>
<Position20>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6018" Column="16" TopLine="5995"/>
<Caret Line="6019" TopLine="5992"/>
</Position20>
<Position21>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6012" Column="11" TopLine="5994"/>
<Caret Line="5977" TopLine="5974"/>
</Position21>
<Position22>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6028" Column="80" TopLine="5991"/>
<Caret Line="5979" TopLine="5972"/>
</Position22>
<Position23>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6019" TopLine="5992"/>
<Caret Line="5980" TopLine="5972"/>
</Position23>
<Position24>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5977" TopLine="5974"/>
<Caret Line="5981" TopLine="5972"/>
</Position24>
<Position25>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5979" TopLine="5972"/>
<Caret Line="6010" TopLine="5977"/>
</Position25>
<Position26>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5980" TopLine="5972"/>
<Caret Line="5988" Column="27" TopLine="5967"/>
</Position26>
<Position27>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5981" TopLine="5972"/>
<Caret Line="5989" TopLine="5972"/>
</Position27>
<Position28>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6010" TopLine="5977"/>
<Caret Line="6004" Column="98" TopLine="5975"/>
</Position28>
<Position29>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5988" Column="27" TopLine="5967"/>
<Caret Line="4132" Column="5" TopLine="4095"/>
</Position29>
<Position30>
<Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="5989" TopLine="5972"/>
<Caret Line="4122" Column="5" TopLine="4108"/>
</Position30>
</JumpHistory>
</ProjectOptions>
@@ -706,15 +706,6 @@
</Linking>
</CompilerOptions>
<Debugging>
<BreakPoints Count="1">
<Item1>
<Kind Value="bpkSource"/>
<WatchScope Value="wpsLocal"/>
<WatchKind Value="wpkWrite"/>
<Source Value="../../../rxdb/rxdbgrid.pas"/>
<Line Value="6094"/>
</Item1>
</BreakPoints>
<Exceptions Count="2">
<Item1>
<Name Value="RunError(216)"/>

View File

@@ -867,6 +867,7 @@ type
procedure OnDataSetScrolled(aDataSet:TDataSet; Distance: Integer);
function GetFieldDisplayText(AField:TField; ACollumn:TRxColumn):string;
procedure FillFilterData;
protected
FRxDbGridLookupComboEditor: TCustomControl;
FRxDbGridDateEditor: TWinControl;
@@ -3214,6 +3215,7 @@ begin
UseXORFeatures := rdgXORColSizing in AValue;
if (rdgFilter in AValue) and not (rdgFilter in OldOpt) then
begin
FillFilterData;
LayoutChanged;
end
else
@@ -4095,6 +4097,49 @@ begin
end
end;
procedure TRxDBGrid.FillFilterData;
var
i: Integer;
C: TRxColumn;
FBS, FAS: TDataSetNotifyEvent;
begin
for i := 0 to Columns.Count - 1 do
begin
C := TRxColumn(Columns[i]);
C.Filter.ValueList.Clear;
C.Filter.CurrentValues.Clear;
C.Filter.ManulEditValue:='';
C.Filter.ItemIndex := -1;
C.Filter.ValueList.Add(C.Filter.EmptyValue);
C.Filter.ValueList.Add(C.Filter.AllValue);
end;
if DatalinkActive then
begin
DataSource.DataSet.DisableControls;
DataSource.DataSet.Filtered := True;
FBS:=DataSource.DataSet.BeforeScroll;
FAS:=DataSource.DataSet.AfterScroll;
DataSource.DataSet.BeforeScroll:=nil;
DataSource.DataSet.AfterScroll:=nil;
DataSource.DataSet.First;
while not DataSource.DataSet.EOF do
begin
for i := 0 to Columns.Count - 1 do
begin
C := TRxColumn(Columns[i]);
if C.Filter.Enabled and (C.Field <> nil) and (C.Filter.ValueList.IndexOf(C.Field.DisplayText) < 0) then
C.Filter.ValueList.Add(C.Field.DisplayText);
end;
DataSource.DataSet.Next;
end;
DataSource.DataSet.First;
DataSource.DataSet.BeforeScroll:=FBS;
DataSource.DataSet.AfterScroll:=FAS;
DataSource.DataSet.EnableControls;
end;
end;
procedure TRxDBGrid.DefaultDrawCellA(aCol, aRow: integer; aRect: TRect;
aState: TGridDrawState);
begin
@@ -4617,7 +4662,10 @@ begin
end;
CalcStatTotals;
if rdgFilter in OptionsRx then
OnFilter(nil);
begin
FillFilterData;
//OnFilter(nil);
end;
end
else
begin
@@ -4634,7 +4682,10 @@ begin
DataSource.DataSet.OnPostError := F_EventOnPostError;
F_EventOnPostError := nil;
if rdgFilter in OptionsRx then
OnFilter(nil);
begin
FillFilterData;
//OnFilter(nil);
end;
end;
F_LastFilter.Clear;
end;
@@ -6129,7 +6180,7 @@ var
begin
BeginUpdate;
OptionsRx := OptionsRx + [rdgFilter];
{
for i := 0 to Columns.Count - 1 do
begin
C := TRxColumn(Columns[i]);
@@ -6165,7 +6216,7 @@ begin
DataSource.DataSet.AfterScroll:=FAS;
DataSource.DataSet.EnableControls;
end;
}
EndUpdate;
end;