Cancel grid editors early enough on main tab changes. Fixes issue #1996.

This commit is contained in:
Ansgar Becker
2010-06-09 22:22:47 +00:00
parent 0911126e05
commit 743f9aff2a
2 changed files with 8 additions and 1 deletions

View File

@ -564,6 +564,7 @@ object MainForm: TMainForm
PopupMenu = popupMainTabs PopupMenu = popupMainTabs
TabOrder = 1 TabOrder = 1
OnChange = PageControlMainChange OnChange = PageControlMainChange
OnChanging = PageControlMainChanging
OnContextPopup = PageControlMainContextPopup OnContextPopup = PageControlMainContextPopup
OnMouseUp = PageControlMainMouseUp OnMouseUp = PageControlMainMouseUp
object tabHost: TTabSheet object tabHost: TTabSheet

View File

@ -560,6 +560,7 @@ type
Sender: TObject; var CurrentInput: String; var x, y: Integer; Sender: TObject; var CurrentInput: String; var x, y: Integer;
var CanExecute: Boolean); var CanExecute: Boolean);
procedure PageControlMainChange(Sender: TObject); procedure PageControlMainChange(Sender: TObject);
procedure PageControlMainChanging(Sender: TObject; var AllowChange: Boolean);
procedure PageControlHostChange(Sender: TObject); procedure PageControlHostChange(Sender: TObject);
procedure ValidateControls(Sender: TObject); procedure ValidateControls(Sender: TObject);
procedure ValidateQueryControls(Sender: TObject); procedure ValidateQueryControls(Sender: TObject);
@ -3957,7 +3958,6 @@ end;
procedure TMainForm.PageControlMainChange(Sender: TObject); procedure TMainForm.PageControlMainChange(Sender: TObject);
var var
tab: TTabSheet; tab: TTabSheet;
Grid: TVirtualStringTree;
begin begin
tab := PageControlMain.ActivePage; tab := PageControlMain.ActivePage;
@ -3982,7 +3982,13 @@ begin
// Ensure controls are in a valid state // Ensure controls are in a valid state
ValidateControls(Sender); ValidateControls(Sender);
FixQueryTabCloseButtons; FixQueryTabCloseButtons;
end;
procedure TMainForm.PageControlMainChanging(Sender: TObject; var AllowChange: Boolean);
var
Grid: TVirtualStringTree;
begin
// Leave editing mode on tab changes so the editor does not stay somewhere // Leave editing mode on tab changes so the editor does not stay somewhere
Grid := ActiveGrid; Grid := ActiveGrid;
if Assigned(Grid) and Grid.IsEditing then if Assigned(Grid) and Grid.IsEditing then