mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2026-03-13 09:24:25 +08:00
Implement automatic closing of data sorting + column selection dialogs when clicking elsewhere by catching the FormDeactivate event. (rfe #562 and rfe #579)
This commit is contained in:
@@ -5281,11 +5281,8 @@ begin
|
||||
frm.Top := btn.ClientOrigin.Y + btn.Height;
|
||||
frm.Left := btn.ClientOrigin.X;
|
||||
|
||||
// Display form and refresh data if needed
|
||||
if frm.ShowModal = mrOK then
|
||||
ViewData(self);
|
||||
|
||||
btn.Down := False;
|
||||
// Display form
|
||||
frm.Show;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ object ColumnSelectionForm: TColumnSelectionForm
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
OnClose = FormClose
|
||||
OnDeactivate = FormDeactivate
|
||||
OnShow = FormShow
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
@@ -32,6 +34,7 @@ object ColumnSelectionForm: TColumnSelectionForm
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 3
|
||||
OnClick = btnCancelClick
|
||||
end
|
||||
object btnOK: TButton
|
||||
Left = 4
|
||||
|
||||
@@ -14,11 +14,14 @@ type
|
||||
chkSelectAll: TCheckBox;
|
||||
chklistColumns: TCheckListBox;
|
||||
chkSort: TCheckBox;
|
||||
procedure btnCancelClick(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure chklistColumnsClickCheck(Sender: TObject);
|
||||
procedure chkSelectAllClick(Sender: TObject);
|
||||
procedure btnOKClick(Sender: TObject);
|
||||
procedure chkSortClick(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure FormDeactivate(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
public
|
||||
@@ -122,10 +125,9 @@ begin
|
||||
|
||||
// Signalizes childwin to refresh grid-data
|
||||
if reg_oldvalue <> reg_newvalue then
|
||||
ModalResult := mrOk
|
||||
else
|
||||
ModalResult := mrCancel;
|
||||
Mainform.Childwin.viewdata(Sender);
|
||||
|
||||
btnCancel.OnClick(Sender);
|
||||
end;
|
||||
|
||||
|
||||
@@ -208,4 +210,30 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TColumnSelectionForm.btnCancelClick(Sender: TObject);
|
||||
begin
|
||||
Mainform.Childwin.btnColumnSelection.Down := False;
|
||||
Close;
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Cancel this dialog if the user clicks elsewhere on childwin
|
||||
}
|
||||
procedure TColumnSelectionForm.FormDeactivate(Sender: TObject);
|
||||
begin
|
||||
btnCancel.OnClick(Sender);
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Be sure the form is destroyed after closing.
|
||||
}
|
||||
procedure TColumnSelectionForm.FormClose(Sender: TObject; var Action:
|
||||
TCloseAction);
|
||||
begin
|
||||
Action := caFree;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
@@ -12,6 +12,8 @@ object DataSortingForm: TDataSortingForm
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
OnClose = FormClose
|
||||
OnDeactivate = FormDeactivate
|
||||
OnShow = FormShow
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
@@ -49,6 +51,7 @@ object DataSortingForm: TDataSortingForm
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 1
|
||||
OnClick = btnCancelClick
|
||||
end
|
||||
object btnAddCol: TButton
|
||||
Left = 134
|
||||
|
||||
@@ -14,7 +14,10 @@ type
|
||||
btnCancel: TButton;
|
||||
btnAddCol: TButton;
|
||||
procedure btnAddColClick(Sender: TObject);
|
||||
procedure btnCancelClick(Sender: TObject);
|
||||
procedure btnOKClick(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure FormDeactivate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
@@ -302,6 +305,33 @@ begin
|
||||
reg.WriteString( reg_name, Mainform.Childwin.ComposeOrderClause(OrderColumns) );
|
||||
reg.CloseKey;
|
||||
FreeAndNil(reg);
|
||||
Mainform.Childwin.viewdata(Sender);
|
||||
btnCancel.OnClick(Sender);
|
||||
end;
|
||||
|
||||
|
||||
procedure TDataSortingForm.btnCancelClick(Sender: TObject);
|
||||
begin
|
||||
Mainform.Childwin.btnDataSorting.Down := False;
|
||||
Close;
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Be sure the form is destroyed after closing.
|
||||
}
|
||||
procedure TDataSortingForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
begin
|
||||
Action := caFree;
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Cancel this dialog if the user clicks elsewhere on childwin
|
||||
}
|
||||
procedure TDataSortingForm.FormDeactivate(Sender: TObject);
|
||||
begin
|
||||
btnCancel.OnClick(Sender);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user