RxDBGrid - continue work on calc footer

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2713 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2013-03-28 21:46:45 +00:00
parent 94c53ecb53
commit 6e3b508236
2 changed files with 34 additions and 10 deletions

View File

@ -43,12 +43,25 @@ var
SaveState:TDataSetState; SaveState:TDataSetState;
SavePos:integer; SavePos:integer;
SaveActiveRecord:integer; SaveActiveRecord:integer;
SaveAfterScroll:TDataSetNotifyEvent;
SaveBeforeScroll:TDataSetNotifyEvent;
begin begin
if not Assigned(ADataSet) then exit; if not Assigned(ADataSet) then exit;
if not Assigned(AGrid) then
begin
SavePos:=SavePos;
exit;
end;
DHL:=THackDataLink(THackRxDBGrid(AGrid).Datalink); DHL:=THackDataLink(THackRxDBGrid(AGrid).Datalink);
DHS:=THackDataSet(ADataSet); DHS:=THackDataSet(ADataSet);
SaveState:=DHS.SetTempState(dsBrowse); SaveState:=DHS.SetTempState(dsBrowse);
SaveAfterScroll:=ADataSet.AfterScroll;
SaveBeforeScroll:=ADataSet.BeforeScroll;
ADataSet.AfterScroll:=nil;
ADataSet.BeforeScroll:=nil;
SaveActiveRecord:=DHL.ActiveRecord; SaveActiveRecord:=DHL.ActiveRecord;
DHL.ActiveRecord:=0; DHL.ActiveRecord:=0;
SavePos:=ADataSet.RecNo; SavePos:=ADataSet.RecNo;
@ -80,6 +93,8 @@ begin
DHL.ActiveRecord:=SaveActiveRecord; DHL.ActiveRecord:=SaveActiveRecord;
DHS.RestoreState(SaveState); DHS.RestoreState(SaveState);
ADataSet.AfterScroll := SaveAfterScroll;
ADataSet.BeforeScroll := SaveBeforeScroll;
{ RS:=THackZeosDS(ADataSet).ResultSet; { RS:=THackZeosDS(ADataSet).ResultSet;
CurRow:=RS.GetRow; CurRow:=RS.GetRow;
RS.First; RS.First;

View File

@ -2884,7 +2884,6 @@ var
S: string; S: string;
Pos: integer; Pos: integer;
begin begin
inherited LinkActive(Value);
if Value then if Value then
begin begin
S := DataSource.DataSet.ClassName; S := DataSource.DataSet.ClassName;
@ -2892,8 +2891,18 @@ begin
FSortEngine := RxDBGridSortEngineList.Objects[Pos] as TRxDBGridSortEngine FSortEngine := RxDBGridSortEngineList.Objects[Pos] as TRxDBGridSortEngine
else else
FSortEngine := nil; FSortEngine := nil;
end;
inherited LinkActive(Value);
if not Value then
{ begin
S := DataSource.DataSet.ClassName;
if RxDBGridSortEngineList.Find(S, Pos) then
FSortEngine := RxDBGridSortEngineList.Objects[Pos] as TRxDBGridSortEngine
else
FSortEngine := nil;
end end
else else}
begin begin
FSortEngine := nil; FSortEngine := nil;
if SelectedRows.Count > 0 then if SelectedRows.Count > 0 then
@ -3538,18 +3547,18 @@ end;
procedure TRxDBGrid.UpdateActive; procedure TRxDBGrid.UpdateActive;
begin begin
{ if FInProcessCalc > 0 then if FInProcessCalc > 0 then
exit;} exit;
inherited UpdateActive; inherited UpdateActive;
{ if FInProcessCalc < 0 then if FInProcessCalc < 0 then
begin begin
FInProcessCalc := 0; FInProcessCalc := 0;
UpdateFooterRowOnUpdateActive; UpdateFooterRowOnUpdateActive;
end end
else { else
if FFooterOptions.Active and (FFooterOptions.RowCount > 0) then if FFooterOptions.Active and (FFooterOptions.RowCount > 0) then
UpdateFooterRowOnUpdateActive; UpdateFooterRowOnUpdateActive;}
}
// UpdateRowsHeight; // UpdateRowsHeight;
end; end;
@ -4375,8 +4384,8 @@ begin
exit; exit;
inherited LayoutChanged; inherited LayoutChanged;
if DatalinkActive and (FInProcessCalc = 0) and (Datalink.DataSet.State = dsBrowse) then { if DatalinkActive and (FInProcessCalc = 0) and (Datalink.DataSet.State = dsBrowse) then
CalcStatTotals; CalcStatTotals;}
end; end;
procedure TRxDBGrid.SetFocus; procedure TRxDBGrid.SetFocus;