Keep scroll offset when refreshing data grid. Fixes issue #2003.

This commit is contained in:
Ansgar Becker
2010-06-10 18:48:25 +00:00
parent 3476fbed01
commit 4a78cad0a9

View File

@ -3680,6 +3680,7 @@ var
KeyCols, ColWidths, WantedColumnOrgnames: TStringList; KeyCols, ColWidths, WantedColumnOrgnames: TStringList;
WantedColumns: TTableColumnList; WantedColumns: TTableColumnList;
c: TTableColumn; c: TTableColumn;
OldScrollOffset: TPoint;
procedure InitColumn(idx: Integer; TblCol: TTableColumn); procedure InitColumn(idx: Integer; TblCol: TTableColumn);
var var
@ -3741,6 +3742,7 @@ begin
// Load last view settings // Load last view settings
HandleDataGridAttributes(RefreshingData); HandleDataGridAttributes(RefreshingData);
OldScrollOffset := DataGrid.OffsetXY;
DataGridDB := SelectedTable.Database; DataGridDB := SelectedTable.Database;
DataGridTable := SelectedTable.Name; DataGridTable := SelectedTable.Name;
@ -3849,10 +3851,6 @@ begin
if not SynMemoFilter.Focused then if not SynMemoFilter.Focused then
vt.SetFocus; vt.SetFocus;
if not RefreshingData then begin
// Scroll to top left if switched to another table
vt.OffsetXY := Point(0, 0);
end;
if vt.RootNodeCount > DataGridFocusedNodeIndex then begin if vt.RootNodeCount > DataGridFocusedNodeIndex then begin
SelectNode(vt, DataGridFocusedNodeIndex); SelectNode(vt, DataGridFocusedNodeIndex);
for i:=0 to vt.Header.Columns.Count-1 do begin for i:=0 to vt.Header.Columns.Count-1 do begin
@ -3862,6 +3860,8 @@ begin
end; end;
end; end;
end; end;
if RefreshingData then
vt.OffsetXY := OldScrollOffset;
ValidateControls(Sender); ValidateControls(Sender);
DisplayRowCountStats; DisplayRowCountStats;