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
TabOrder = 1
OnChange = PageControlMainChange
OnChanging = PageControlMainChanging
OnContextPopup = PageControlMainContextPopup
OnMouseUp = PageControlMainMouseUp
object tabHost: TTabSheet

View File

@ -560,6 +560,7 @@ type
Sender: TObject; var CurrentInput: String; var x, y: Integer;
var CanExecute: Boolean);
procedure PageControlMainChange(Sender: TObject);
procedure PageControlMainChanging(Sender: TObject; var AllowChange: Boolean);
procedure PageControlHostChange(Sender: TObject);
procedure ValidateControls(Sender: TObject);
procedure ValidateQueryControls(Sender: TObject);
@ -3957,7 +3958,6 @@ end;
procedure TMainForm.PageControlMainChange(Sender: TObject);
var
tab: TTabSheet;
Grid: TVirtualStringTree;
begin
tab := PageControlMain.ActivePage;
@ -3982,7 +3982,13 @@ begin
// Ensure controls are in a valid state
ValidateControls(Sender);
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
Grid := ActiveGrid;
if Assigned(Grid) and Grid.IsEditing then