@@ -5023,18 +5023,37 @@ procedure TMainForm.actSaveSQLAsExecute(Sender: TObject);
50235023procedure TMainForm.actSaveSQLExecute(Sender: TObject);
50245024var
50255025 i: Integer;
5026+ ObjEditor: TDBObjectEditor;
5027+ Handled: Boolean;
50265028begin
5027- if QueryTabs.ActiveTab.MemoFilename <> '' then begin
5028- QueryTabs.ActiveTab.SaveContents(QueryTabs.ActiveTab.MemoFilename, False);
5029- for i:=0 to QueryTabs.Count-1 do begin
5030- if QueryTabs[i] = QueryTabs.ActiveTab then
5031- continue;
5032- if QueryTabs[i].MemoFilename = QueryTabs.ActiveTab.MemoFilename then
5033- QueryTabs[i].Memo.Modified := True;
5029+ Handled := False;
5030+ if QueryTabs.HasActiveTab then begin
5031+ // Save SQL tab contents to file
5032+ if QueryTabs.ActiveTab.MemoFilename <> '' then begin
5033+ QueryTabs.ActiveTab.SaveContents(QueryTabs.ActiveTab.MemoFilename, False);
5034+ for i:=0 to QueryTabs.Count-1 do begin
5035+ if QueryTabs[i] = QueryTabs.ActiveTab then
5036+ continue;
5037+ if QueryTabs[i].MemoFilename = QueryTabs.ActiveTab.MemoFilename then
5038+ QueryTabs[i].Memo.Modified := True;
5039+ end;
5040+ ValidateQueryControls(Sender);
5041+ end else
5042+ actSaveSQLAsExecute(Sender);
5043+ Handled := True;
5044+ end
5045+ else if PageControlMain.ActivePage = tabEditor then begin
5046+ // Save table, procedure, etc.
5047+ ObjEditor := ActiveObjectEditor;
5048+ if Assigned(ObjEditor) and ObjEditor.Modified then begin
5049+ ObjEditor.ApplyModifications;
5050+ Handled := True;
50345051 end;
5035- ValidateQueryControls(Sender);
5036- end else
5037- actSaveSQLAsExecute(Sender);
5052+ end;
5053+ if not Handled then begin
5054+ MessageBeep(MB_ICONASTERISK);
5055+ end;
5056+
50385057end;
50395058
50405059
@@ -6585,7 +6604,7 @@ procedure TMainForm.ValidateQueryControls(Sender: TObject);
65856604 NotEmpty, HasSelection, HasConnection: Boolean;
65866605 Tab: TQueryTab;
65876606 cap: String;
6588- InQueryTab: Boolean;
6607+ InQueryTab, InEditorTab : Boolean;
65896608 Conn: TDBConnection;
65906609begin
65916610 // Enable/disable TActions, according to the current window/connection state
@@ -6604,6 +6623,7 @@ procedure TMainForm.ValidateQueryControls(Sender: TObject);
66046623 SetTabCaption(Tab.TabSheet.PageIndex, cap);
66056624 end;
66066625 InQueryTab := QueryTabs.HasActiveTab;
6626+ InEditorTab := PageControlMain.ActivePage = tabEditor;
66076627 Tab := QueryTabs.ActiveTab;
66086628 NotEmpty := InQueryTab and (Tab.Memo.GetTextLen > 0);
66096629 HasSelection := InQueryTab and Tab.Memo.SelAvail;
@@ -6614,7 +6634,7 @@ procedure TMainForm.ValidateQueryControls(Sender: TObject);
66146634 actExecuteCurrentQuery.Enabled := actExecuteQuery.Enabled;
66156635 actExplainCurrentQuery.Enabled := actExecuteQuery.Enabled and (Conn.Parameters.NetTypeGroup in [ngMySQL, ngPgSQL, ngSQLite]);
66166636 actSaveSQLAs.Enabled := InQueryTab and NotEmpty;
6617- actSaveSQL.Enabled := actSaveSQLAs.Enabled and Tab.Memo.Modified;
6637+ actSaveSQL.Enabled := ( actSaveSQLAs.Enabled and Tab.Memo.Modified) or InEditorTab ;
66186638 actSaveSQLselection.Enabled := InQueryTab and HasSelection;
66196639 actSaveSQLSnippet.Enabled := InQueryTab and NotEmpty;
66206640 actSaveSQLSelectionSnippet.Enabled := InQueryTab and HasSelection;
0 commit comments