mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2026-03-13 09:24:25 +08:00
User manager: Turn custom object editors into one single editor for a wildcard database. Enhances what r3681 did for issue #2299.
This commit is contained in:
@@ -16,7 +16,6 @@ object frmSelectDBObject: TfrmSelectDBObject
|
||||
Position = poOwnerFormCenter
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
OnResize = FormResize
|
||||
OnShow = FormShow
|
||||
DesignSize = (
|
||||
232
|
||||
@@ -33,10 +32,10 @@ object frmSelectDBObject: TfrmSelectDBObject
|
||||
object lblCustom: TLabel
|
||||
Left = 8
|
||||
Top = 239
|
||||
Width = 174
|
||||
Width = 210
|
||||
Height = 13
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'Custom, wildcards % and _ allowed:'
|
||||
Caption = '... or wildcard database (% and _ allowed):'
|
||||
end
|
||||
object TreeDBO: TVirtualStringTree
|
||||
Left = 8
|
||||
@@ -57,6 +56,7 @@ object frmSelectDBObject: TfrmSelectDBObject
|
||||
Margin = 2
|
||||
TabOrder = 0
|
||||
TreeOptions.PaintOptions = [toHideFocusRect, toHotTrack, toShowButtons, toShowDropmark, toShowTreeLines, toThemeAware, toUseBlendedImages, toUseExplorerTheme, toHideTreeLinesIfThemed]
|
||||
OnEnter = ValidateControls
|
||||
OnFocusChanged = TreeDBOFocusChanged
|
||||
OnGetText = TreeDBOGetText
|
||||
OnGetImageIndex = TreeDBOGetImageIndex
|
||||
@@ -85,7 +85,7 @@ object frmSelectDBObject: TfrmSelectDBObject
|
||||
Default = True
|
||||
Enabled = False
|
||||
ModalResult = 1
|
||||
TabOrder = 4
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnCancel: TButton
|
||||
Left = 149
|
||||
@@ -96,36 +96,18 @@ object frmSelectDBObject: TfrmSelectDBObject
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 5
|
||||
TabOrder = 3
|
||||
end
|
||||
object editDb: TEdit
|
||||
Left = 8
|
||||
Top = 255
|
||||
Width = 58
|
||||
Width = 216
|
||||
Height = 21
|
||||
Anchors = [akBottom]
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
TabOrder = 1
|
||||
Text = 'editDb'
|
||||
TextHint = 'database'
|
||||
end
|
||||
object editTable: TEdit
|
||||
Left = 72
|
||||
Top = 255
|
||||
Width = 71
|
||||
Height = 21
|
||||
Anchors = [akBottom]
|
||||
TabOrder = 2
|
||||
Text = 'editTable'
|
||||
TextHint = 'all tables'
|
||||
end
|
||||
object editColumn: TEdit
|
||||
Left = 149
|
||||
Top = 255
|
||||
Width = 75
|
||||
Height = 21
|
||||
Anchors = [akBottom]
|
||||
TabOrder = 3
|
||||
Text = 'editColumn'
|
||||
TextHint = 'all columns'
|
||||
OnChange = ValidateControls
|
||||
OnEnter = ValidateControls
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,7 +3,7 @@ unit selectdbobject;
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Classes, Controls, Forms, StdCtrls, VirtualTrees,
|
||||
Windows, Classes, Controls, Forms, StdCtrls, VirtualTrees, Graphics,
|
||||
mysql_connection;
|
||||
|
||||
type
|
||||
@@ -14,8 +14,6 @@ type
|
||||
lblSelect: TLabel;
|
||||
lblCustom: TLabel;
|
||||
editDb: TEdit;
|
||||
editTable: TEdit;
|
||||
editColumn: TEdit;
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
@@ -32,7 +30,7 @@ type
|
||||
ChildCount: Cardinal);
|
||||
procedure TreeDBOInitNode(Sender: TBaseVirtualTree; ParentNode, Node:
|
||||
PVirtualNode; var InitialStates: TVirtualNodeInitStates);
|
||||
procedure FormResize(Sender: TObject);
|
||||
procedure ValidateControls(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
FColumns: Array of Array of TStringList;
|
||||
@@ -78,19 +76,16 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmSelectDBObject.FormResize(Sender: TObject);
|
||||
var
|
||||
EditWidth: Integer;
|
||||
const
|
||||
Spacing=4;
|
||||
procedure TfrmSelectDBObject.ValidateControls(Sender: TObject);
|
||||
begin
|
||||
// Adjust dimensions of edit boxes
|
||||
EditWidth := (TreeDBO.Width - 2*Spacing) div 3;
|
||||
editDb.Width := EditWidth;
|
||||
editTable.Width := EditWidth;
|
||||
editTable.Left := editDb.Left + editDb.Width + Spacing;
|
||||
editColumn.Width := EditWidth;
|
||||
editColumn.Left := editTable.Left + editTable.Width + Spacing;
|
||||
// Signalize if tree or edit box is used
|
||||
if editDb.Modified then begin
|
||||
TreeDBO.Color := clBtnFace;
|
||||
editDb.Color := clWindow;
|
||||
end else begin
|
||||
TreeDBO.Color := clWindow;
|
||||
editDb.Color := clBtnFace;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@@ -109,17 +104,10 @@ var
|
||||
begin
|
||||
// Return currently selected object, either from tree node or from edit boxes
|
||||
Result := nil;
|
||||
if editDb.Modified or editTable.Modified or editColumn.Modified then begin
|
||||
if editDb.Modified then begin
|
||||
Result := TDBObject.Create(MainForm.ActiveConnection);
|
||||
Result.Database := editDb.Text;
|
||||
Result.Name := editTable.Text;
|
||||
Result.Column := editColumn.Text;
|
||||
if Result.Column <> '' then
|
||||
Result.NodeType := lntColumn
|
||||
else if Result.Name <> '' then
|
||||
Result.NodeType := lntTable
|
||||
else
|
||||
Result.NodeType := lntDb;
|
||||
Result.NodeType := lntDb;
|
||||
end else if Assigned(TreeDBO.FocusedNode) then begin
|
||||
DBObj := TreeDBO.GetNodeData(TreeDBO.FocusedNode);
|
||||
Result := TDBObject.Create(DBObj.Connection);
|
||||
@@ -142,29 +130,18 @@ var
|
||||
begin
|
||||
// Overtake node text into lower edit boxes
|
||||
editDb.Clear;
|
||||
editTable.Clear;
|
||||
editColumn.Clear;
|
||||
Tree := Sender as TVirtualStringTree;
|
||||
btnOK.Enabled := Assigned(Node);
|
||||
if btnOK.Enabled then begin
|
||||
case Sender.GetNodeLevel(Node) of
|
||||
0: editDb.Text := '%';
|
||||
1: editDb.Text := esc(Tree.Text[Node, 0], True);
|
||||
2: begin
|
||||
editDb.Text := Tree.Text[Node.Parent, 0];
|
||||
editTable.Text := Tree.Text[Node, 0];
|
||||
end;
|
||||
3: begin
|
||||
editDb.Text := Tree.Text[Node.Parent.Parent, 0];
|
||||
editTable.Text := Tree.Text[Node.Parent, 0];
|
||||
editColumn.Text := Tree.Text[Node, 0];
|
||||
end;
|
||||
2: editDb.Text := esc(Tree.Text[Node.Parent, 0], True);
|
||||
3: editDb.Text := esc(Tree.Text[Node.Parent.Parent, 0], True);
|
||||
end;
|
||||
end;
|
||||
// Indicate automatic changes only
|
||||
editDb.Modified := False;
|
||||
editTable.Modified := False;
|
||||
editColumn.Modified := False;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user