From 6e3b50823623bf41ce2c53e2f7d824629a5932b4 Mon Sep 17 00:00:00 2001 From: alexs75 Date: Thu, 28 Mar 2013 21:46:45 +0000 Subject: [PATCH] RxDBGrid - continue work on calc footer git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2713 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/rx/exsortzeos.pas | 15 +++++++++++++++ components/rx/rxdbgrid.pas | 29 +++++++++++++++++++---------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/components/rx/exsortzeos.pas b/components/rx/exsortzeos.pas index 0d6422fcb..591941149 100644 --- a/components/rx/exsortzeos.pas +++ b/components/rx/exsortzeos.pas @@ -43,12 +43,25 @@ var SaveState:TDataSetState; SavePos:integer; SaveActiveRecord:integer; + + SaveAfterScroll:TDataSetNotifyEvent; + SaveBeforeScroll:TDataSetNotifyEvent; begin if not Assigned(ADataSet) then exit; + if not Assigned(AGrid) then + begin + SavePos:=SavePos; + exit; + end; DHL:=THackDataLink(THackRxDBGrid(AGrid).Datalink); DHS:=THackDataSet(ADataSet); SaveState:=DHS.SetTempState(dsBrowse); + SaveAfterScroll:=ADataSet.AfterScroll; + SaveBeforeScroll:=ADataSet.BeforeScroll; + ADataSet.AfterScroll:=nil; + ADataSet.BeforeScroll:=nil; + SaveActiveRecord:=DHL.ActiveRecord; DHL.ActiveRecord:=0; SavePos:=ADataSet.RecNo; @@ -80,6 +93,8 @@ begin DHL.ActiveRecord:=SaveActiveRecord; DHS.RestoreState(SaveState); + ADataSet.AfterScroll := SaveAfterScroll; + ADataSet.BeforeScroll := SaveBeforeScroll; { RS:=THackZeosDS(ADataSet).ResultSet; CurRow:=RS.GetRow; RS.First; diff --git a/components/rx/rxdbgrid.pas b/components/rx/rxdbgrid.pas index 6fab8d126..3980fe310 100644 --- a/components/rx/rxdbgrid.pas +++ b/components/rx/rxdbgrid.pas @@ -2884,7 +2884,6 @@ var S: string; Pos: integer; begin - inherited LinkActive(Value); if Value then begin S := DataSource.DataSet.ClassName; @@ -2892,8 +2891,18 @@ begin FSortEngine := RxDBGridSortEngineList.Objects[Pos] as TRxDBGridSortEngine else 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 - else + else} begin FSortEngine := nil; if SelectedRows.Count > 0 then @@ -3538,18 +3547,18 @@ end; procedure TRxDBGrid.UpdateActive; begin -{ if FInProcessCalc > 0 then - exit;} + if FInProcessCalc > 0 then + exit; inherited UpdateActive; -{ if FInProcessCalc < 0 then + if FInProcessCalc < 0 then begin FInProcessCalc := 0; UpdateFooterRowOnUpdateActive; end - else +{ else if FFooterOptions.Active and (FFooterOptions.RowCount > 0) then - UpdateFooterRowOnUpdateActive; -} + UpdateFooterRowOnUpdateActive;} + // UpdateRowsHeight; end; @@ -4375,8 +4384,8 @@ begin exit; inherited LayoutChanged; - if DatalinkActive and (FInProcessCalc = 0) and (Datalink.DataSet.State = dsBrowse) then - CalcStatTotals; +{ if DatalinkActive and (FInProcessCalc = 0) and (Datalink.DataSet.State = dsBrowse) then + CalcStatTotals;} end; procedure TRxDBGrid.SetFocus;