Просмотр исходного кода

Store data (e.g. dbindex, field order) for nodes in Data property not Overlayindex, as that will change the nodes' icons.

Reinier Olislagers 11 лет назад
Родитель
Сommit
10ee69e806
1 измененных файлов с 68 добавлено и 68 удалено
  1. 68 68
      main.pas

+ 68 - 68
main.pas

@@ -311,7 +311,7 @@ begin
   with fmCreateUser do
   try
     SelNode:= tvMain.Selected;
-    dbIndex:= SelNode.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Data);
     Init(dbIndex);
     edUserName.Clear;
     edPassword.Clear;
@@ -350,7 +350,7 @@ var
   SelNode: TTreeNode;
 begin
   SelNode:= tvMain.Selected;
-  with RegisteredDatabases[tvMain.Selected.OverlayIndex].RegRec do
+  with RegisteredDatabases[PtrInt(tvMain.Selected.Data)].RegRec do
     fmBackupRestore.Init(SelNode.Text, DatabaseName, UserName, Password);
   fmBackupRestore.cbOperation.Enabled:= True;
   fmBackupRestore.Show;
@@ -366,7 +366,7 @@ begin
   if fmChangePass.ShowModal = mrOK then
   begin
     try
-       dmSysTables.Init(tvMain.Selected.Parent.Parent.OverlayIndex);
+       dmSysTables.Init(PtrInt(tvMain.Selected.Parent.Parent.Data));
        dmSysTables.sqQuery.Close;
        dmSysTables.sqQuery.SQL.Text:= 'alter user ' + tvMain.Selected.Text +
          ' password ' + QuotedStr(fmChangePass.edPassword.Text);
@@ -386,7 +386,7 @@ var
   Title: string;
   ATab: TTabSheet;
 begin
-  dbIndex:= tvMain.Selected.OverlayIndex;
+  dbIndex:= PtrInt(tvMain.Selected.Data);
 
   // Check if password is saved - it may be empty, which can be valid for
   // e.g. embedded databases
@@ -433,7 +433,7 @@ begin
   if InputQuery('Permission', 'Please type a User/Role name to copy perissions to', NewUser) then
   begin
     UserName:= tvMain.Selected.Text;
-    dbIndex:= tvMain.Selected.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(tvMain.Selected.Parent.Parent.Data);
     List:= TStringList.Create;
     try
       Scriptdb.ScriptUserAllPermissions(dbIndex, UserName, List, NewUser);
@@ -446,7 +446,7 @@ end;
 
 procedure TfmMain.lmCopyTableClick(Sender: TObject);
 begin
-  fmCopyTable.Init(tvMain.Selected.Parent.Parent.OverlayIndex, tvMain.Selected.Text);
+  fmCopyTable.Init(PtrInt(tvMain.Selected.Parent.Parent.Data), tvMain.Selected.Text);
   fmCopyTable.Show;
 end;
 
@@ -463,7 +463,7 @@ var
   dbIndex: Integer;
 begin
   Title:= 'Database information for: ' + tvMain.Selected.Text;
-  dbIndex:= tvMain.Selected.OverlayIndex;
+  dbIndex:= PtrInt(tvMain.Selected.Data);
 
   fmDBInfo:= FindCustomForm(Title, TfmDBInfo) as TfmDBInfo;
 
@@ -496,7 +496,7 @@ var
   j: Integer;
   TabSheet: TTabSheet;
 begin
-  dbIndex:= tvMain.Selected.OverlayIndex;
+  dbIndex:= PtrInt(tvMain.Selected.Data);
   RegisteredDatabases[dbIndex].IBConnection.Close;
   for i:= PageControl1.PageCount - 1 downto 0 do
     if (PageControl1.Pages[i] as TComponent).Tag = dbIndex then
@@ -524,7 +524,7 @@ var
   NotNull: Boolean;
 begin
   SelNode:= tvMain.Selected;
-  dbIndex:= SelNode.Parent.Parent.Parent.OverlayIndex;
+  dbIndex:= PtrInt(SelNode.Parent.Parent.Parent.Data);
   FieldName:= Copy(SelNode.Text, 1, Pos(' ', SelNode.Text) - 1);
   if dmSysTables.GetFieldInfo(dbIndex, SelNode.Parent.Text, FieldName,
     FieldType, Size, Scale, NotNull,
@@ -536,7 +536,7 @@ begin
       CharacterSet, Collation,
       DefaultValue, Description,
       Size, Scale,
-      SelNode.OverlayIndex, not NotNull,
+      PtrInt(SelNode.Data), not NotNull,
       nil);
     fmNewEditField.Show;
   end
@@ -553,7 +553,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
 
     AGenName:= SelNode.Text;
 
@@ -585,7 +585,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, SelNode.Text);
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Parent.Data), SelNode.Text);
     QWindow.meQuery.Lines.Text:= 'select * from ' + SelNode.Text;
     QWindow.bbRunClick(nil);
     QWindow.Show;
@@ -597,7 +597,7 @@ var
   SelNode: TTreeNode;
 begin
   SelNode:= tvMain.Selected;
-  if ChangeTriggerActivity(SelNode.Parent.Parent.OverlayIndex, SelNode.Text, True) then
+  if ChangeTriggerActivity(PtrInt(SelNode.Parent.Parent.Data), SelNode.Text, True) then
     MessageDlg('Trigger has been activated', mtInformation, [mbOk], 0);
 end;
 
@@ -623,7 +623,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     AProcName:= SelNode.Text;
-    Body:= GetStoredProcBody(SelNode.Parent.Parent.OverlayIndex, AProcName, SPOwner);
+    Body:= GetStoredProcBody(PtrInt(SelNode.Parent.Parent.Data), AProcName, SPOwner);
     Params:= RetrieveInputParamFromSP(Body);
     withParams:= Params <> '';
     with fmCallProc do
@@ -654,7 +654,7 @@ begin
 
       if (Called) or (not WithParams) then
       begin
-        QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Call procedure: ' + AProcName);
+        QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Parent.Data), 'Call procedure: ' + AProcName);
         QWindow.meQuery.lines.Clear;
         if Pos('suspend', LowerCase(Body)) > 0 then
           Line:= 'select * from ' + AProcName
@@ -687,7 +687,7 @@ end;
 
 procedure TfmMain.lmConnectAsClick(Sender: TObject);
 begin
-  if ConnectToDBAs(tvMain.Selected.OverlayIndex, True) then
+  if ConnectToDBAs(PtrInt(tvMain.Selected.Data), True) then
     tvMain.Selected.Expand(False)
   else
     tvMain.Selected.Collapse(False);
@@ -815,7 +815,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    InitNewGen(SelNode.Parent.Parent.OverlayIndex);
+    InitNewGen(PtrInt(SelNode.Parent.Parent.Data));
     fmNewGen.edGenName.Text:= SelNode.Text;
     fmNewGen.edGenName.Enabled:= False;
     fmNewGen.cxTrigger.Checked:= True;
@@ -835,7 +835,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   if InputQuery('Create new stored procedure', 'Please enter new procedure name', AProcName) then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new stored procedure');
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Data), 'Create new stored procedure');
     QWindow.meQuery.Lines.Clear;
  //   QWindow.meQuery.Lines.Add('SET TERM ^;');
     QWindow.meQuery.Lines.Add('CREATE PROCEDURE ' + AProcName);
@@ -919,7 +919,7 @@ var
   Count: Integer;
 begin
   SelNode:= tvMain.Selected;
-  DBIndex:= SelNode.Parent.OverlayIndex;
+  DBIndex:= PtrInt(SelNode.Parent.Data);
 
   TableNames:= dmSysTables.GetDBObjectNames(DBIndex, otTables, Count);
   fmCreateTrigger.cbTables.Items.CommaText:= TableNames;
@@ -938,7 +938,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   if InputQuery('Create new view', 'Please enter new view name', AViewName) then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new view');
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Data), 'Create new view');
     QWindow.meQuery.Lines.Clear;
     QWindow.meQuery.Lines.Add('CREATE VIEW "' + AViewName + '" (');
     QWindow.meQuery.Lines.Add('Field1Name, Field2Name) ');
@@ -954,7 +954,7 @@ var
   SelNode: TTreeNode;
 begin
   SelNode:= tvMain.Selected;
-  if ChangeTriggerActivity(SelNode.Parent.Parent.OverlayIndex, SelNode.Text, False) then
+  if ChangeTriggerActivity(PtrInt(SelNode.Parent.Parent.Data), SelNode.Text, False) then
     MessageDlg('Trigger has been DeActivated', mtInformation, [mbOk], 0);
 end;
 
@@ -968,7 +968,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex,  'Select first 1000 from ' + SelNode.Text);
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Parent.Data),  'Select first 1000 from ' + SelNode.Text);
     QWindow.meQuery.Lines.Text:= 'select first 1000 * from "' + SelNode.Text + '"';
     QWindow.bbRunClick(nil);
     QWindow.Show;
@@ -986,7 +986,7 @@ begin
   if MessageDlg('Are you sure you want to delete ' + SelNode.Text + ' permanently', mtConfirmation,
     [mbYes, mbNo], 0) = mrYes then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Drop Exception');
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Parent.Data), 'Drop Exception');
     QWindow.meQuery.Lines.Clear;
     QWindow.meQuery.Lines.Add('DROP EXCEPTION ' + SelNode.Text + ';');
     QWindow.Show;
@@ -1006,7 +1006,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     ATableName:= SelNode.Text;
     Rec:= RegisteredDatabases[dbIndex];
     EditForm:= TfmEditDataFullRec(FindCustomForm(Rec.RegRec.Title + ': Edit Data (Form) for Table : ' +
@@ -1036,7 +1036,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     AProcName:= SelNode.Text;
-    DBIndex:= SelNode.Parent.Parent.OverlayIndex;
+    DBIndex:= PtrInt(SelNode.Parent.Parent.Data);
     SPBody:= GetStoredProcBody(DBIndex, AProcName, SPOwner);
 
     // Procedure body
@@ -1066,7 +1066,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     ATableName:= SelNode.Text;
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     Rec:= RegisteredDatabases[dbIndex];
     EditWindow:= TfmEditTable(FindCustomForm(Rec.RegRec.Title + ': Edit Data for Table : ' + ATableName, TfmEditTable));
     if EditWindow = nil then
@@ -1093,10 +1093,10 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     ATriggerName:= SelNode.Text;
-    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Edit Trigger ' + ATriggerName);
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Parent.Data), 'Edit Trigger ' + ATriggerName);
 
     QWindow.meQuery.Lines.Clear;
-    dmSysTables.ScriptTrigger(SelNode.Parent.Parent.OverlayIndex, ATriggerName, QWindow.meQuery.Lines);
+    dmSysTables.ScriptTrigger(PtrInt(SelNode.Parent.Parent.Data), ATriggerName, QWindow.meQuery.Lines);
     QWindow.Show;
   end;
 
@@ -1115,9 +1115,9 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     AViewName:= SelNode.Text;
-    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Edit view ' + AViewName);
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Parent.Data), 'Edit view ' + AViewName);
 
-    GetViewInfo(SelNode.Parent.Parent.OverlayIndex, AViewName, Columns, ViewBody);
+    GetViewInfo(PtrInt(SelNode.Parent.Parent.Data), AViewName, Columns, ViewBody);
     QWindow.meQuery.Lines.Clear;
     QWindow.meQuery.Lines.Add('DROP VIEW "' + AViewName + '";');
     QWindow.meQuery.Lines.Add('');
@@ -1251,7 +1251,7 @@ begin
   if fmNewDomain.ShowModal = mrOk then
   with QWindow do
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new domain');
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Data), 'Create new domain');
     meQuery.Lines.Clear;
     Line:= 'CREATE DOMAIN ' + fmNewDomain.edName.Text + ' AS ' + fmNewDomain.cbType.Text;
     if Pos('char', LowerCase(fmNewDomain.cbType.Text)) > 0 then
@@ -1280,7 +1280,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new Exception');
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Data), 'Create new Exception');
     QWindow.meQuery.Lines.Clear;
     QWindow.meQuery.Lines.Add('CREATE EXCEPTION Exception_name_1 ''exception message'';');
     QWindow.Show;
@@ -1537,7 +1537,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    InitNewGen(SelNode.Parent.OverlayIndex);
+    InitNewGen(PtrInt(SelNode.Parent.Data));
     fmNewGen.edGenName.Clear;
     fmNewGen.edGenName.Enabled:= True;
     fmNewGen.cxTrigger.Checked:= False;
@@ -1557,7 +1557,7 @@ var
   ATab: TTabSheet;
 begin
   SelNode:= tvMain.Selected;
-  dbIndex:= SelNode.Parent.OverlayIndex;
+  dbIndex:= PtrInt(SelNode.Parent.Data);
   Rec:= RegisteredDatabases[dbIndex];
 
   Title:= SelNode.Parent.Text + ': New Table';
@@ -1606,7 +1606,7 @@ begin
   if InputQuery('Create new function', 'Please enter module name (Library)', ModuleName) then
   if InputQuery('Create new function', 'Please enter entry point (External function name)', EntryPoint) then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new function');
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Data), 'Create new function');
     QWindow.meQuery.Lines.Clear;
     QWindow.meQuery.Lines.Add('DECLARE EXTERNAL FUNCTION "' + AFuncName + '"');
     QWindow.meQuery.Lines.Add('-- (int, varchar(100))');
@@ -1629,7 +1629,7 @@ var
   Count: Integer;
   dbIndex: Integer;
 begin
-  dbIndex:= tvMain.Selected.OverlayIndex;
+  dbIndex:= PtrInt(tvMain.Selected.Data);
   Rec:= RegisteredDatabases[dbIndex].RegRec;
   // Password form
   if (Rec.Password = '') and (not tvMain.Selected.Expanded) then
@@ -1666,7 +1666,7 @@ var
   ATab: TTabSheet;
   Title: string;
 begin
-  dbIndex:= tvMain.Selected.Parent.Parent.OverlayIndex;
+  dbIndex:= PtrInt(tvMain.Selected.Parent.Parent.Data);
   UserName:= tvMain.Selected.Text;
   List:= TStringList.Create;
   try
@@ -1768,7 +1768,7 @@ begin
   else
     ATab:= fmViewGen.Parent as TTabSheet;
   PageControl1.ActivePage:= ATab;
-  dbIndex:= tvMain.Selected.Parent.Parent.OverlayIndex;
+  dbIndex:= PtrInt(tvMain.Selected.Parent.Parent.Data);
   ATab.Tag:= dbIndex;
   fmPermissions.Init(dbIndex, '', tvMain.Selected.Text, 2);
   fmPermissions.Show;
@@ -1787,7 +1787,7 @@ var
   List: TStringList;
   dbIndex: Integer;
 begin
-  dbIndex:= tvMain.Selected.OverlayIndex;
+  dbIndex:= PtrInt(tvMain.Selected.Data);
   QueryWindow:= ShowQueryWindow(dbIndex, 'Database Script');
   Screen.Cursor:= crSQLWait;
   List:= TStringList.Create;
@@ -1902,7 +1902,7 @@ var
 begin
   SelNode:= tvMain.Selected;
   if dmSysTables.GetExceptionInfo(SelNode.Text, Msg, Desc, Script) then
-    ShowCompleteQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Script Exception ' + SelNode.Text, Script, nil);
+    ShowCompleteQueryWindow(PtrInt(SelNode.Parent.Parent.Data), 'Script Exception ' + SelNode.Text, Script, nil);
 end;
 
 (**************  Script table as Insert stored procedure ************)
@@ -1923,7 +1923,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     ATableName:= SelNode.Text;
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     QWindow:= ShowQueryWindow(dbIndex, 'Script Table as insert : ' + ATableName);
     GetFields(dbIndex, ATableName, nil);
     QWindow.meQuery.Lines.Clear;
@@ -2015,7 +2015,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     ATableName:= SelNode.Text;
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     ScriptList:= TStringList.Create;
     try
       ScriptTableAsCreate(dbIndex, ATableName, ScriptList);
@@ -2153,7 +2153,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     ATableName:= SelNode.Text;
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     QWindow:= ShowQueryWindow(dbIndex, 'Script Table as update: ' + ATableName);
     GetFields(dbIndex, ATableName, nil);
     QWindow.meQuery.Lines.Clear;
@@ -2248,7 +2248,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     Rec:= RegisteredDatabases[dbIndex];
     SetConnection(dbIndex);
 
@@ -2275,7 +2275,7 @@ var
   Lines: string;
   s: string;
 begin
-  dbIndex:= tvMain.Selected.OverlayIndex;
+  dbIndex:= PtrInt(tvMain.Selected.Data);
   FireBirdServices:= TFirebirdServices.Create;
   try
     FireBirdServices.VerboseOutput:= True;
@@ -2322,7 +2322,7 @@ var
 begin
   try
     SelNode:= tvMain.Selected;
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
 
     Title:= RegisteredDatabases[dbIndex].RegRec.Title +  ': Management of : ' + SelNode.Text;
     // Fields
@@ -2415,7 +2415,7 @@ begin
       ATab:= ADomainForm.Parent as TTabSheet;
     PageControl1.ActivePage:= ATab;
 
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     dmSysTables.GetDomainInfo(dbIndex, ADomainName, DomainType, DomainSize, DefaultValue, CheckConstraint, CharacterSet, Collation);
     ATab.Tag:= dbIndex;
     if Pos('default', LowerCase(DefaultValue)) = 1 then
@@ -2856,7 +2856,7 @@ var
   Count: Integer;
   ANodeText: string;
 begin
-  DBIndex:= Node.Parent.OverlayIndex;
+  DBIndex:= PtrInt(Node.Parent.Data);
   Rec:= RegisteredDatabases[DBIndex].RegRec;
   Screen.Cursor:= crSQLWait;
   Objects:= TStringList.Create;
@@ -3160,7 +3160,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     Rec:= RegisteredDatabases[dbIndex];
     AViewName:= SelNode.Text;
 
@@ -3205,7 +3205,7 @@ var
 begin
   try
     Node:= tvMain.Selected;
-    dbIndex:= Node.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(Node.Parent.Parent.Data);
     Node.DeleteChildren;
 
     // Primary Keys
@@ -3242,7 +3242,7 @@ begin
           SQLQuery1.FieldByName('field_scale').AsInteger) +
           ' ' + LenStr;
         FieldNode:= tvMain.Items.AddChild(Node, FieldTitle);
-        FieldNode.OverlayIndex:= i;
+        FieldNode.Data:= Pointer(i); //store field order in node's data property
 
         // Visually distinguish primary keys
         if PKFieldsList.IndexOf(AFieldname) <> -1 then
@@ -3284,7 +3284,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     Rec:= RegisteredDatabases[dbIndex];
     SQLQuery1.Close;
     SetConnection(dbIndex);
@@ -3342,7 +3342,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     AProcName:= SelNode.Text;
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     SPBody:= GetStoredProcBody(dbIndex, AProcName, SPOwner);
     Title:= SelNode.Parent.Parent.Text +  ': StoredProcedure : ' + AProcName;
     // Fill SProc Parameters
@@ -3403,7 +3403,7 @@ begin
   begin
     ATriggerName:= SelNode.Text;
     Title:= SelNode.Parent.Parent.Text +  ': Trigger : ' + ATriggerName;
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
     dmSysTables.GetTriggerInfo(dbIndex, ATriggerName, BeforeAfter, OnTable,
       Event, Body, TriggerEnabled, TriggerPosition);
 
@@ -3468,7 +3468,7 @@ begin
   begin
     AFuncName:= SelNode.Text;
     Title:= SelNode.Parent.Parent.Text + ': UDF: ' + AFuncName;
-    dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+    dbIndex:= PtrInt(SelNode.Parent.Parent.Data);
 
     if GetUDFInfo(dbIndex, AFuncName, ModuleName, EntryPoint, Params) then
     with fmUDFINfo do
@@ -3515,7 +3515,7 @@ begin
     // Move selection to tables above so object is not in use when deleting it
     SelNode.Collapse(true);
     SelNode.Parent.Selected:=true;
-    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Drop Table');
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Parent.Data), 'Drop Table');
     QWindow.meQuery.Lines.Clear;
     QWindow.meQuery.Lines.Add('DROP TABLE ' + SelNode.Text + ';');
     QWindow.Show;
@@ -3565,9 +3565,9 @@ begin
   begin
     fmReg.NewReg:= False;
     fmReg.bbReg.Caption:= 'Save';
-    fmreg.RecPos:= RegisteredDatabases[SelNode.OverlayIndex].Index;
+    fmreg.RecPos:= RegisteredDatabases[PtrInt(SelNode.Data)].Index;
 
-    Rec:= RegisteredDatabases[SelNode.OverlayIndex].OrigRegRec;
+    Rec:= RegisteredDatabases[PtrInt(SelNode.Data)].OrigRegRec;
     fmReg.edDatabaseName.Text:= Rec.DatabaseName;
     fmReg.edTitle.Text:= Rec.Title;
     fmReg.edUserName.Text:= Rec.UserName;
@@ -3596,7 +3596,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) and (SelNode.Parent.Parent = nil) then
   if MessageDlg('Are you sure you want to Unregister this database', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
   begin
-    DeleteRegistration(RegisteredDatabases[SelNode.OverlayIndex].Index);
+    DeleteRegistration(RegisteredDatabases[PtrInt(SelNode.Data)].Index);
     LoadRegisteredDatabases;
   end;
   SelNode:= nil;
@@ -3612,7 +3612,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.Parent.OverlayIndex, 'Select first 1000 from ' + SelNode.Text);
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Parent.Data), 'Select first 1000 from ' + SelNode.Text);
     QWindow.meQuery.Lines.Text:= 'select first 1000 * from "' + SelNode.Text + '"';
     QWindow.bbRunClick(nil);
     QWindow.Show;
@@ -3629,7 +3629,7 @@ begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
-    QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new Role');
+    QWindow:= ShowQueryWindow(PtrInt(SelNode.Parent.Data), 'Create new Role');
     QWindow.meQuery.Lines.Clear;
     QWindow.meQuery.Lines.Add('CREATE ROLE role_name;');
     QWindow.Show;
@@ -3804,13 +3804,13 @@ begin
       begin
         if tvMain.Selected.Text = 'Query Window' then
         begin
-          QWindow:= ShowQueryWindow(tvMain.Selected.Parent.OverlayIndex, 'Query Window');
+          QWindow:= ShowQueryWindow(PtrInt(tvMain.Selected.Parent.Data), 'Query Window');
           QWindow.Show;
         end
         else  // Expand object
         begin
           tvMainExpanded(nil, Node);
-          Rec:= RegisteredDatabases[Node.Parent.OverlayIndex].RegRec;
+          Rec:= RegisteredDatabases[PtrInt(Node.Parent.Data)].RegRec;
         end;
       end;
       3: // Object Item Level, like tables, procedures....
@@ -3863,12 +3863,12 @@ begin
   if (Node <> nil) then
   if (Node.Parent <> nil) and (Node.Parent.Parent = nil) then   // Expand database
   begin
-    Rec:= RegisteredDatabases[Node.OverlayIndex].RegRec;
-    RegisteredDatabases[Node.OverlayIndex].RegRec.LastOpened:= Now;
-    RegisteredDatabases[Node.OverlayIndex].OrigRegRec.LastOpened:= Now;
+    Rec:= RegisteredDatabases[PtrInt(Node.Data)].RegRec;
+    RegisteredDatabases[PtrInt(Node.Data)].RegRec.LastOpened:= Now;
+    RegisteredDatabases[PtrInt(Node.Data)].OrigRegRec.LastOpened:= Now;
     // Password form
     if Rec.Password = '' then
-    if ConnectToDBAs(Node.OverlayIndex) then
+    if ConnectToDBAs(PtrInt(Node.Data)) then
       Node.Expand(False)
     else
       Node.Collapse(False);
@@ -3963,7 +3963,7 @@ begin
           MainNode:= tvMain.Items.AddChild(ServerNode, Rec.Title);
           MainNode.ImageIndex:= 0;
           MainNode.SelectedIndex:= 3;
-          MainNode.OverlayIndex:= i;
+          MainNode.Data:= Pointer(i);
           tvMain.PopupMenu:= pmDatabase;
 
           CNode:= tvMain.Items.AddChild(MainNode, 'Query Window');