* Enable close tabs

git-svn-id: trunk@63161 -
This commit is contained in:
michael 2020-05-15 11:03:40 +00:00
parent c64cd287c5
commit 0b958007c1
2 changed files with 44 additions and 16 deletions

View File

@ -261,6 +261,8 @@ object MainForm: TMainForm
Align = alRight
Images = ILMain
TabOrder = 3
OnCloseTabClicked = DoCloseTabClick
Options = [nboShowCloseButtons, nboKeyboardTabSwitch]
end
object SRecent: TSplitter
Left = 458

View File

@ -211,6 +211,7 @@ type
procedure OpenRecentDatadict(Sender: TObject);
procedure LVDictsKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure MIDataDictClick(Sender: TObject);
procedure DoCloseTabClick(Sender: TObject);
procedure PMAllPopup(Sender: TObject);
procedure SaveAsExecute(Sender: TObject);
procedure TVAllDblClick(Sender: TObject);
@ -224,8 +225,11 @@ type
procedure AddRecentConnectionList(RC: TRecentConnection; AssumeNew: Boolean);
procedure AddRecentConnectionTree(RC: TRecentConnection; AssumeNew: Boolean);
procedure CheckParams;
function CloseConnectionEditor(aTab: TConnectionEditor): TModalResult;
function CloseCurrentConnection: TModalResult;
function CloseCurrentTab(AddCancelClose: Boolean = False): TModalResult;
function CloseDataEditor(DD: TDataDictEditor; AddCancelClose: Boolean): TModalResult;
function CloseTab(aTab : TTabsheet; AddCancelClose: Boolean = False): TModalResult;
procedure DeleteRecentConnection;
procedure DeleteRecentDataDict;
procedure DoShowNewConnectionTypes(ParentMenu: TMenuItem);
@ -1304,41 +1308,57 @@ begin
Result:=CloseCurrentTab(True)<>mrCancel;
end;
function TMainForm.CloseCurrentTab(AddCancelClose: Boolean): TModalResult;
begin
If (CurrentEditor<>Nil) then
Result:=CloseCurrentEditor(AddCancelClose)
else if (CurrentConnection<>Nil) then
begin
CloseCurrentConnection;
Result:=CloseTab(PCItems.ActivePage,AddCancelClose);
end;
function TMainForm.CloseTab(aTab : TTabsheet; AddCancelClose: Boolean = False): TModalResult;
begin
If (aTab is TDataDictEditor) then
Result:=CloseDataEditor(aTab as TDataDictEditor,AddCancelClose)
else if (aTab is TConnectionEditor) then
Result:=CloseConnectionEditor(aTab as TConnectionEditor)
else
Result:=mrOK;
end;
end;
function TMainForm.CloseConnectionEditor(aTab : TConnectionEditor): TModalResult;
begin
aTab.Frame.DisConnect;
Application.ReleaseComponent(aTab);
aTab.Free;
Result:=mrOK;
end;
function TMainForm.CloseCurrentConnection: TModalResult;
Var
CE : TConnectionEditor;
begin
CE:=CurrentConnection;
CE.Frame.DisConnect;
Application.ReleaseComponent(CE);
CE.Free;
Result:=mrOK;
if CurrentConnection<>Nil then
Result:=CloseConnectionEditor(CurrentConnection)
else
Result:=mrOK;
end;
function TMainForm.CloseCurrentEditor(AddCancelClose: Boolean): TModalResult;
begin
Result:=CloseDataEditor(CurrentEditor,AddCancelClose);
end;
function TMainForm.CloseDataEditor(DD : TDataDictEditor;AddCancelClose: Boolean): TModalResult;
Var
DD : TDataDictEditor;
Msg : String;
DDF : TRecentDataDict;
begin
Result:=mrYes;
DD:=CurrentEditor;
If (DD=Nil) then
Exit;
If DD.Modified then
@ -1590,6 +1610,12 @@ begin
ShowDDImports;
end;
procedure TMainForm.DoCloseTabClick(Sender: TObject);
begin
CloseTab(Sender as TTabSheet,True);
end;
procedure TMainForm.PMAllPopup(Sender: TObject);
Type