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:
Ansgar Becker
2011-02-08 22:11:43 +00:00
parent 9e8ddad470
commit deb0c1afbf
2 changed files with 24 additions and 65 deletions

View File

@@ -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

View File

@@ -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;