Update row count in data tab top label after deletion and update actions. Fixes issue #2039.

This commit is contained in:
Ansgar Becker
2010-08-21 13:28:00 +00:00
parent 360152740a
commit c93c8ffdb0

View File

@ -840,7 +840,7 @@ type
FSnippetFilenames: TStringList; FSnippetFilenames: TStringList;
procedure ParseCommandLineParameters(Parameters: TStringlist); procedure ParseCommandLineParameters(Parameters: TStringlist);
procedure SetDelimiter(Value: String); procedure SetDelimiter(Value: String);
procedure DisplayRowCountStats; procedure DisplayRowCountStats(Sender: TBaseVirtualTree);
procedure insertFunction(Sender: TObject); procedure insertFunction(Sender: TObject);
function GetActiveDatabase: String; function GetActiveDatabase: String;
function GetSelectedTable: TDBObject; function GetSelectedTable: TDBObject;
@ -2771,6 +2771,7 @@ begin
FocusAfterDelete := Grid.GetLast; FocusAfterDelete := Grid.GetLast;
if Assigned(FocusAfterDelete) then if Assigned(FocusAfterDelete) then
SelectNode(Grid, FocusAfterDelete); SelectNode(Grid, FocusAfterDelete);
DisplayRowCountStats(Grid);
ValidateControls(Sender); ValidateControls(Sender);
end; end;
except on E:EDatabaseError do begin except on E:EDatabaseError do begin
@ -3541,6 +3542,7 @@ begin
// Node needs a repaint to remove red triangles // Node needs a repaint to remove red triangles
if Assigned(Grid.FocusedNode) then if Assigned(Grid.FocusedNode) then
Grid.InvalidateNode(Grid.FocusedNode); Grid.InvalidateNode(Grid.FocusedNode);
DisplayRowCountStats(Grid);
end; end;
procedure TMainForm.actRemoveFilterExecute(Sender: TObject); procedure TMainForm.actRemoveFilterExecute(Sender: TObject);
@ -3935,7 +3937,7 @@ begin
vt.OffsetXY := OldScrollOffset; vt.OffsetXY := OldScrollOffset;
ValidateControls(Sender); ValidateControls(Sender);
DisplayRowCountStats; DisplayRowCountStats(vt);
actDataShowNext.Enabled := (vt.RootNodeCount = DatagridWantedRowCount) and (DatagridWantedRowCount < prefGridRowcountMax); actDataShowNext.Enabled := (vt.RootNodeCount = DatagridWantedRowCount) and (DatagridWantedRowCount < prefGridRowcountMax);
actDataShowAll.Enabled := actDataShowNext.Enabled; actDataShowAll.Enabled := actDataShowNext.Enabled;
EnumerateRecentFilters; EnumerateRecentFilters;
@ -3967,13 +3969,16 @@ end;
Calculate + display total rowcount and found rows matching to filter Calculate + display total rowcount and found rows matching to filter
in data-tab in data-tab
} }
procedure TMainForm.DisplayRowCountStats; procedure TMainForm.DisplayRowCountStats(Sender: TBaseVirtualTree);
var var
DBObject: TDBObject; DBObject: TDBObject;
IsFiltered, IsLimited: Boolean; IsFiltered, IsLimited: Boolean;
cap: String; cap: String;
RowsTotal: Int64; RowsTotal: Int64;
begin begin
if Sender <> DataGrid then
Exit; // Only data tab has a top label
DBObject := SelectedTable; DBObject := SelectedTable;
cap := ActiveDatabase + '.' + DBObject.Name; cap := ActiveDatabase + '.' + DBObject.Name;
IsLimited := DataGridWantedRowCount <= Datagrid.RootNodeCount; IsLimited := DataGridWantedRowCount <= Datagrid.RootNodeCount;
@ -7040,9 +7045,10 @@ begin
if Assigned(OldNode) and (OldNode <> NewNode) then begin if Assigned(OldNode) and (OldNode <> NewNode) then begin
RowNum := Sender.GetNodeData(OldNode); RowNum := Sender.GetNodeData(OldNode);
Results.RecNo := RowNum^; Results.RecNo := RowNum^;
if Results.Modified then if Results.Modified then begin
Allowed := Results.SaveModifications Allowed := Results.SaveModifications;
else if Results.Inserted then begin DisplayRowCountStats(Sender);
end else if Results.Inserted then begin
Results.DiscardModifications; Results.DiscardModifications;
Sender.DeleteNode(OldNode); Sender.DeleteNode(OldNode);
end; end;
@ -7464,8 +7470,10 @@ begin
Grid.GetHitTestInfoAt(X, Y, False, Hit); Grid.GetHitTestInfoAt(X, Y, False, Hit);
if (Hit.HitNode = nil) or (Hit.HitColumn = NoColumn) or (Hit.HitColumn = InvalidColumn) then begin if (Hit.HitNode = nil) or (Hit.HitColumn = NoColumn) or (Hit.HitColumn = InvalidColumn) then begin
Results := GridResult(Grid); Results := GridResult(Grid);
if Results.Modified then if Results.Modified then begin
Results.SaveModifications; Results.SaveModifications;
DisplayRowCountStats(Grid);
end;
end; end;
end; end;