Use DBtree's events in a similar tree, to remove redundant code. Fixes wrong node icons for routines and triggers.

This commit is contained in:
Ansgar Becker
2009-12-19 21:13:56 +00:00
parent 1bca351dd1
commit 91063382b2
2 changed files with 29 additions and 40 deletions

View File

@ -68,27 +68,36 @@ object frmSelectDBObject: TfrmSelectDBObject
Width = 216 Width = 216
Height = 184 Height = 184
Anchors = [akLeft, akTop, akRight, akBottom] Anchors = [akLeft, akTop, akRight, akBottom]
Header.AutoSizeIndex = -1 Header.AutoSizeIndex = 0
Header.DefaultHeight = 17 Header.DefaultHeight = 17
Header.Font.Charset = DEFAULT_CHARSET Header.Font.Charset = DEFAULT_CHARSET
Header.Font.Color = clWindowText Header.Font.Color = clWindowText
Header.Font.Height = -11 Header.Font.Height = -11
Header.Font.Name = 'Tahoma' Header.Font.Name = 'Tahoma'
Header.Font.Style = [] Header.Font.Style = []
Header.MainColumn = -1 Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoShowSortGlyphs]
Header.Options = [hoColumnResize, hoDrag]
Images = MainForm.PngImageListMain Images = MainForm.PngImageListMain
Indent = 16 Indent = 16
Margin = 2 Margin = 2
TabOrder = 0 TabOrder = 0
TreeOptions.PaintOptions = [toHideFocusRect, toHotTrack, toShowButtons, toShowDropmark, toShowRoot, toShowTreeLines, toThemeAware, toUseBlendedImages, toUseExplorerTheme, toHideTreeLinesIfThemed] TreeOptions.PaintOptions = [toHideFocusRect, toHotTrack, toShowButtons, toShowDropmark, toShowTreeLines, toThemeAware, toUseBlendedImages, toUseExplorerTheme, toHideTreeLinesIfThemed]
OnFocusChanged = TreeDBOFocusChanged OnFocusChanged = TreeDBOFocusChanged
OnGetText = TreeDBOGetText OnGetText = TreeDBOGetText
OnGetImageIndex = TreeDBOGetImageIndex OnGetImageIndex = TreeDBOGetImageIndex
OnGetNodeDataSize = TreeDBOGetNodeDataSize OnGetNodeDataSize = TreeDBOGetNodeDataSize
OnInitChildren = TreeDBOInitChildren OnInitChildren = TreeDBOInitChildren
OnInitNode = TreeDBOInitNode OnInitNode = TreeDBOInitNode
Columns = <> Columns = <
item
Position = 0
Width = 212
WideText = 'Name'
end
item
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coAllowFocus]
Position = 1
WideText = 'Size'
end>
end end
object btnOK: TButton object btnOK: TButton
Left = 68 Left = 68

View File

@ -106,7 +106,7 @@ end;
procedure TfrmSelectDBObject.FormShow(Sender: TObject); procedure TfrmSelectDBObject.FormShow(Sender: TObject);
begin begin
TreeDBO.Clear; TreeDBO.Clear;
TreeDBO.RootNodeCount := Mainform.Databases.Count; TreeDBO.RootNodeCount := Mainform.DBtree.RootNodeCount;
SetLength(FColumns, Mainform.Databases.Count); SetLength(FColumns, Mainform.Databases.Count);
// TreeDBO.OnFocusChanged(TreeDBO, TreeDBO.FocusedNode, 0); // TreeDBO.OnFocusChanged(TreeDBO, TreeDBO.FocusedNode, 0);
editDB.Clear; editDB.Clear;
@ -135,12 +135,12 @@ begin
editTable.Clear; editTable.Clear;
editCol.Clear; editCol.Clear;
if Assigned(Node) then case TreeDBO.GetNodeLevel(Node) of if Assigned(Node) then case TreeDBO.GetNodeLevel(Node) of
0: editDB.Text := TreeDBO.Text[Node, 0]; 1: editDB.Text := TreeDBO.Text[Node, 0];
1: begin 2: begin
editDB.Text := TreeDBO.Text[Node.Parent, 0]; editDB.Text := TreeDBO.Text[Node.Parent, 0];
editTable.Text := TreeDBO.Text[Node, 0]; editTable.Text := TreeDBO.Text[Node, 0];
end; end;
2: begin 3: begin
editDB.Text := TreeDBO.Text[Node.Parent.Parent, 0]; editDB.Text := TreeDBO.Text[Node.Parent.Parent, 0];
editTable.Text := TreeDBO.Text[Node.Parent, 0]; editTable.Text := TreeDBO.Text[Node.Parent, 0];
editCol.Text := TreeDBO.Text[Node, 0]; editCol.Text := TreeDBO.Text[Node, 0];
@ -162,21 +162,10 @@ end;
procedure TfrmSelectDBObject.TreeDBOGetImageIndex(Sender: TBaseVirtualTree; procedure TfrmSelectDBObject.TreeDBOGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted:
Boolean; var ImageIndex: Integer); Boolean; var ImageIndex: Integer);
var
DBObjects: TDBObjectList;
begin begin
case Sender.GetNodeLevel(Node) of Mainform.DBtreeGetImageIndex(Sender, Node, Kind, Column, Ghosted, ImageIndex);
0: ImageIndex := ICONINDEX_DB; if Sender.GetNodeLevel(Node) = 3 then
1: begin ImageIndex := ICONINDEX_FIELD;
DBObjects := Mainform.Connection.GetDBObjects(Mainform.Databases[Node.Parent.Index]);
case DBObjects[Node.Index].NodeType of
lntCrashedTable: ImageIndex := ICONINDEX_CRASHED_TABLE;
lntTable: ImageIndex := ICONINDEX_TABLE;
lntView: ImageIndex := ICONINDEX_VIEW;
end;
end;
2: ImageIndex := ICONINDEX_FIELD;
end;
end; end;
@ -194,13 +183,10 @@ var
cols: TWideStringList; cols: TWideStringList;
begin begin
// Fetch sub nodes // Fetch sub nodes
Mainform.DBtreeInitChildren(Sender, Node, ChildCount);
case Sender.GetNodeLevel(Node) of case Sender.GetNodeLevel(Node) of
0: begin // DB expanding 1: SetLength(FColumns[Node.Index], ChildCount);
DBObjects := Mainform.Connection.GetDBObjects(Mainform.Databases[Node.Index]); 2: begin // Table expanding
ChildCount := DBObjects.Count;
SetLength(FColumns[Node.Index], DBObjects.Count);
end;
1: begin // Table expanding
DBObjects := Mainform.Connection.GetDBObjects(Mainform.Databases[Node.Parent.Index]); DBObjects := Mainform.Connection.GetDBObjects(Mainform.Databases[Node.Parent.Index]);
cols := Mainform.Connection.GetCol('SHOW COLUMNS FROM ' cols := Mainform.Connection.GetCol('SHOW COLUMNS FROM '
+ Mainform.mask(Mainform.Databases[Node.Parent.Index])+'.' + Mainform.mask(Mainform.Databases[Node.Parent.Index])+'.'
@ -216,17 +202,10 @@ end;
procedure TfrmSelectDBObject.TreeDBOGetText(Sender: TBaseVirtualTree; Node: procedure TfrmSelectDBObject.TreeDBOGetText(Sender: TBaseVirtualTree; Node:
PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText:
WideString); WideString);
var
DBObjects: TDBObjectList;
begin begin
case Sender.GetNodeLevel(Node) of Mainform.DBtreeGetText(Sender, Node, Column, TextType, CellText);
0: CellText := Mainform.Databases[Node.Index]; if Sender.GetNodeLevel(Node) = 3 then
1: begin CellText := FColumns[Node.Parent.Parent.Index][Node.Parent.Index][Node.Index];
DBObjects := Mainform.Connection.GetDBObjects(Mainform.Databases[Node.Parent.Index]);
CellText := DBObjects[Node.Index].Name
end;
2: CellText := FColumns[Node.Parent.Parent.Index][Node.Parent.Index][Node.Index];
end;
end; end;
@ -234,7 +213,8 @@ procedure TfrmSelectDBObject.TreeDBOInitNode(Sender: TBaseVirtualTree;
ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates); ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin begin
// Ensure plus sign is visible for dbs and tables // Ensure plus sign is visible for dbs and tables
if Sender.GetNodeLevel(Node) in [0,1] then Mainform.DBtreeInitNode(Sender, ParentNode, Node, InitialStates);
if Sender.GetNodeLevel(Node) = 2 then
InitialStates := InitialStates + [ivsHasChildren]; InitialStates := InitialStates + [ivsHasChildren];
end; end;