mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Enhancement: Disable the OK button in the new sorting dialog if there's no change to the old ORDER clause. Disabling that button should be the signal to the user that he didn't make any effective change yet. Helps forgetful people.
This commit is contained in:
@ -26,11 +26,13 @@ type
|
|||||||
{ Private declarations }
|
{ Private declarations }
|
||||||
ColumnNames : TStringList;
|
ColumnNames : TStringList;
|
||||||
OrderColumns : Array of TOrderCol;
|
OrderColumns : Array of TOrderCol;
|
||||||
|
reg_name, OldOrderClause : String;
|
||||||
procedure DisplaySortingControls;
|
procedure DisplaySortingControls;
|
||||||
procedure dropdownColsChange( Sender: TObject );
|
procedure dropdownColsChange( Sender: TObject );
|
||||||
procedure buttonOrderClick( Sender: TObject );
|
procedure buttonOrderClick( Sender: TObject );
|
||||||
procedure buttonDeleteClick( Sender: TObject );
|
procedure buttonDeleteClick( Sender: TObject );
|
||||||
procedure Modified;
|
procedure Modified;
|
||||||
|
function ComposeOrderClause: String;
|
||||||
public
|
public
|
||||||
{ Public declarations }
|
{ Public declarations }
|
||||||
end;
|
end;
|
||||||
@ -59,6 +61,7 @@ procedure TDataSortingForm.FormShow(Sender: TObject);
|
|||||||
var
|
var
|
||||||
i : Cardinal;
|
i : Cardinal;
|
||||||
grid: TSMDBGrid;
|
grid: TSMDBGrid;
|
||||||
|
reg : TRegistry;
|
||||||
begin
|
begin
|
||||||
// Take column names from listColumns and add here
|
// Take column names from listColumns and add here
|
||||||
ColumnNames := TStringList.Create;
|
ColumnNames := TStringList.Create;
|
||||||
@ -67,6 +70,13 @@ begin
|
|||||||
ColumnNames.Add( Mainform.Childwin.listColumns.Items[i].Caption );
|
ColumnNames.Add( Mainform.Childwin.listColumns.Items[i].Caption );
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// Read original ORDER clause from registry
|
||||||
|
reg := TRegistry.Create();
|
||||||
|
reg.OpenKey( REGPATH + '\Servers\' + Mainform.Childwin.Description, true );
|
||||||
|
reg_name := 'ORDERCLAUSE_' + Mainform.Childwin.ActualDatabase + '.' + Mainform.Childwin.ActualTable;
|
||||||
|
OldOrderClause := reg.ReadString(reg_name);
|
||||||
|
reg.CloseKey;
|
||||||
|
|
||||||
// Create one OrderColumns record for each grid.SortColumn
|
// Create one OrderColumns record for each grid.SortColumn
|
||||||
grid := Mainform.Childwin.gridData;
|
grid := Mainform.Childwin.gridData;
|
||||||
if grid.SortColumns.Count > 0 then // Avoids AV when accessing SortColumn[0] ... ??
|
if grid.SortColumns.Count > 0 then // Avoids AV when accessing SortColumn[0] ... ??
|
||||||
@ -305,41 +315,47 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
{**
|
{**
|
||||||
Gets called when any option has changed. Enables the OK button.
|
Gets called when any option has changed.
|
||||||
|
Enables the OK button if ORDER options have changed
|
||||||
}
|
}
|
||||||
procedure TDataSortingForm.Modified;
|
procedure TDataSortingForm.Modified;
|
||||||
begin
|
begin
|
||||||
btnOk.Enabled := True;
|
btnOk.Enabled := ComposeOrderClause <> OldOrderClause;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{**
|
{**
|
||||||
OK clicked
|
Concat all sort options to a ORDER clause
|
||||||
}
|
}
|
||||||
procedure TDataSortingForm.btnOKClick(Sender: TObject);
|
function TDataSortingForm.ComposeOrderClause: String;
|
||||||
var
|
var
|
||||||
reg : TRegistry;
|
|
||||||
reg_name, reg_value, sort : String;
|
|
||||||
i : Integer;
|
i : Integer;
|
||||||
|
sort : String;
|
||||||
begin
|
begin
|
||||||
// Concat all sort options to a ORDER clause
|
result := '';
|
||||||
reg_value := '';
|
|
||||||
for i := 0 to Length(OrderColumns) - 1 do
|
for i := 0 to Length(OrderColumns) - 1 do
|
||||||
begin
|
begin
|
||||||
if reg_value <> '' then
|
if result <> '' then
|
||||||
reg_value := reg_value + ', ';
|
result := result + ', ';
|
||||||
if OrderColumns[i].SortDirection = ORDER_ASC then
|
if OrderColumns[i].SortDirection = ORDER_ASC then
|
||||||
sort := TXT_ASC
|
sort := TXT_ASC
|
||||||
else
|
else
|
||||||
sort := TXT_DESC;
|
sort := TXT_DESC;
|
||||||
reg_value := reg_value + Mainform.Mask( OrderColumns[i].ColumnName ) + ' ' + sort;
|
result := result + Mainform.Mask( OrderColumns[i].ColumnName ) + ' ' + sort;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Write ORDER clause to registry
|
|
||||||
|
{**
|
||||||
|
OK clicked: Write ORDER clause to registry
|
||||||
|
}
|
||||||
|
procedure TDataSortingForm.btnOKClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
reg : TRegistry;
|
||||||
|
begin
|
||||||
reg := TRegistry.Create();
|
reg := TRegistry.Create();
|
||||||
reg.OpenKey( REGPATH + '\Servers\' + Mainform.Childwin.Description, true );
|
reg.OpenKey( REGPATH + '\Servers\' + Mainform.Childwin.Description, true );
|
||||||
reg_name := 'ORDERCLAUSE_' + Mainform.Childwin.ActualDatabase + '.' + Mainform.Childwin.ActualTable;
|
reg.WriteString( reg_name, ComposeOrderClause );
|
||||||
reg.WriteString( reg_name, reg_value );
|
|
||||||
reg.CloseKey;
|
reg.CloseKey;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user