Fix mixed up logic in Mainform.OnCloseQuery: Save dialog popped up for only one modified query content, then the form was not closed. Plus: Wrong tab captions in such cases.

This commit is contained in:
Ansgar Becker
2009-11-25 20:39:39 +00:00
parent c1855c84e7
commit 9b9442f470

View File

@ -732,7 +732,7 @@ type
procedure PlaceObjectEditor(Which: TListNodeType);
procedure SetTabCaption(PageIndex: Integer; Text: String);
function ConfirmTabClose(PageIndex: Integer): Boolean;
procedure SaveQueryMemo(Filename: String; OnlySelection: Boolean);
procedure SaveQueryMemo(Tab: TQueryTab; Filename: String; OnlySelection: Boolean);
procedure UpdateFilterPanel(Sender: TObject);
procedure DatabaseChanged(Database: WideString);
public
@ -2598,22 +2598,22 @@ begin
if SaveDialogSQLFile.Execute then begin
// Save complete content or just the selected text,
// depending on the tag of calling control
SaveQueryMemo(SaveDialogSQLFile.FileName, (Sender as TAction).Tag = 1);
SaveQueryMemo(ActiveQueryTab, SaveDialogSQLFile.FileName, (Sender as TAction).Tag = 1);
end;
end;
procedure TMainForm.SaveQueryMemo(Filename: String; OnlySelection: Boolean);
procedure TMainForm.SaveQueryMemo(Tab: TQueryTab; Filename: String; OnlySelection: Boolean);
var
Text, LB: WideString;
begin
Screen.Cursor := crHourGlass;
if OnlySelection then
Text := ActiveQueryMemo.SelText
Text := Tab.Memo.SelText
else
Text := ActiveQueryMemo.Text;
Text := Tab.Memo.Text;
LB := '';
case ActiveQueryTab.MemoLineBreaks of
case Tab.MemoLineBreaks of
lbsUnix: LB := LB_UNIX;
lbsMac: LB := LB_MAC;
lbsWide: LB := LB_WIDE;
@ -2621,9 +2621,9 @@ begin
if LB <> '' then
Text := WideStringReplace(Text, CRLF, LB, [rfReplaceAll]);
SaveUnicodeFile( Filename, Text );
SetTabCaption(PageControlMain.ActivePageIndex, ExtractFilename(Filename));
ActiveQueryTab.MemoFilename := Filename;
ActiveQueryTab.Memo.Modified := False;
SetTabCaption(Tab.Number+tabData.PageIndex, ExtractFilename(Filename));
Tab.MemoFilename := Filename;
Tab.Memo.Modified := False;
Screen.Cursor := crDefault;
end;
@ -8665,9 +8665,9 @@ begin
mrNo: Result := True;
mrYes: begin
if Tab.MemoFilename <> '' then
SaveQueryMemo(Tab.MemoFilename, False)
else
actSaveSQLExecute(actSaveSQL);
SaveQueryMemo(Tab, Tab.MemoFilename, False)
else if SaveDialogSQLFile.Execute then
SaveQueryMemo(Tab, SaveDialogSQLFile.FileName, False);
// The save dialog can be cancelled.
Result := not Tab.Memo.Modified;
end;