2
0
Эх сурвалжийг харах

Comparison: UDFs, Domains
modified: TurboBird.lpi
modified: TurboBird.lpr
modified: comparison.lfm
modified: comparison.pas
modified: enterpass.lfm
modified: enterpass.lrs
modified: enterpass.pas
modified: main.lfm
modified: main.lrs

motaz 13 жил өмнө
parent
commit
425299ab2a
15 өөрчлөгдсөн 2449 нэмэгдсэн , 506 устгасан
  1. 149 152
      TurboBird.lpi
  2. 2 3
      TurboBird.lpr
  3. 13 2
      comparison.lfm
  4. 312 81
      comparison.pas
  5. 4 4
      enterpass.lfm
  6. 17 17
      enterpass.lrs
  7. 6 4
      enterpass.pas
  8. 787 35
      main.lfm
  9. 983 72
      main.lrs
  10. 115 95
      main.pas
  11. 23 9
      newtable.lfm
  12. 16 13
      newtable.lrs
  13. 16 13
      newtable.pas
  14. 2 2
      permissionmanage.lfm
  15. 4 4
      permissionmanage.lrs

+ 149 - 152
TurboBird.lpi

@@ -60,7 +60,7 @@
         <Filename Value="TurboBird.lpr"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="TurboBird"/>
-        <EditorIndex Value="1"/>
+        <EditorIndex Value="0"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="26" Y="5"/>
@@ -73,10 +73,11 @@
         <ComponentName Value="fmMain"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="main"/>
-        <EditorIndex Value="7"/>
+        <IsVisibleTab Value="True"/>
+        <EditorIndex Value="8"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="926"/>
-        <CursorPos X="22" Y="941"/>
+        <TopLine Value="3675"/>
+        <CursorPos X="19" Y="3698"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
@@ -108,7 +109,7 @@
         <UnitName Value="Buttons"/>
         <TopLine Value="125"/>
         <CursorPos X="25" Y="141"/>
-        <UsageCount Value="29"/>
+        <UsageCount Value="28"/>
       </Unit4>
       <Unit5>
         <Filename Value="querywindow.pas"/>
@@ -116,7 +117,7 @@
         <ComponentName Value="fmQueryWindow"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="QueryWindow"/>
-        <EditorIndex Value="8"/>
+        <EditorIndex Value="6"/>
         <WindowIndex Value="0"/>
         <TopLine Value="669"/>
         <CursorPos X="17" Y="677"/>
@@ -129,13 +130,13 @@
         <UnitName Value="Dialogs"/>
         <TopLine Value="530"/>
         <CursorPos X="10" Y="489"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit6>
       <Unit7>
         <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/include/messagedialogs.inc"/>
         <TopLine Value="152"/>
         <CursorPos X="6" Y="159"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit7>
       <Unit8>
         <Filename Value="tableinfo.pas"/>
@@ -145,7 +146,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="67"/>
         <CursorPos X="6" Y="97"/>
-        <UsageCount Value="190"/>
+        <UsageCount Value="189"/>
       </Unit8>
       <Unit9>
         <Filename Value="viewview.pas"/>
@@ -197,10 +198,10 @@
         <ComponentName Value="fmNewTable"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="NewTable"/>
-        <EditorIndex Value="0"/>
+        <EditorIndex Value="4"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="211"/>
-        <CursorPos X="33" Y="228"/>
+        <TopLine Value="13"/>
+        <CursorPos X="13" Y="20"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
@@ -222,10 +223,13 @@
         <ComponentName Value="fmEnterPass"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="EnterPass"/>
+        <EditorIndex Value="9"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="6"/>
-        <CursorPos X="45" Y="28"/>
+        <TopLine Value="22"/>
+        <CursorPos X="17" Y="46"/>
         <UsageCount Value="200"/>
+        <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
       </Unit15>
       <Unit16>
         <Filename Value="about.pas"/>
@@ -243,19 +247,19 @@
         <UnitName Value="Interfaces"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit17>
       <Unit18>
         <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/sysutils/datih.inc"/>
         <TopLine Value="101"/>
         <CursorPos X="10" Y="130"/>
-        <UsageCount Value="6"/>
+        <UsageCount Value="5"/>
       </Unit18>
       <Unit19>
         <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/sysutils/dati.inc"/>
         <TopLine Value="53"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="4"/>
+        <UsageCount Value="3"/>
       </Unit19>
       <Unit20>
         <Filename Value="createtrigger.pas"/>
@@ -273,33 +277,33 @@
         <UnitName Value="sqldb"/>
         <TopLine Value="1643"/>
         <CursorPos X="17" Y="1647"/>
-        <UsageCount Value="5"/>
+        <UsageCount Value="4"/>
       </Unit21>
       <Unit22>
         <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/sqlscript.pp"/>
         <UnitName Value="sqlscript"/>
         <TopLine Value="472"/>
         <CursorPos X="23" Y="401"/>
-        <UsageCount Value="5"/>
+        <UsageCount Value="4"/>
       </Unit22>
       <Unit23>
         <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/db.pas"/>
         <UnitName Value="db"/>
         <TopLine Value="1759"/>
         <CursorPos X="15" Y="1783"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit23>
       <Unit24>
         <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/datasource.inc"/>
         <TopLine Value="467"/>
         <CursorPos X="26" Y="471"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit24>
       <Unit25>
         <Filename Value="/usr/share/fpcsrc/2.2.4/packages/fcl-db/src/base/dsparams.inc"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit25>
       <Unit26>
         <Filename Value="indices.pas"/>
@@ -309,14 +313,14 @@
         <WindowIndex Value="0"/>
         <TopLine Value="27"/>
         <CursorPos X="1" Y="127"/>
-        <UsageCount Value="146"/>
+        <UsageCount Value="145"/>
       </Unit26>
       <Unit27>
         <Filename Value="/usr/lib/lazarus/0.9.28.2/components/cgi/ide/cgilazideintf.pas"/>
         <UnitName Value="CGILazIDEIntf"/>
         <TopLine Value="131"/>
         <CursorPos X="13" Y="138"/>
-        <UsageCount Value="9"/>
+        <UsageCount Value="8"/>
       </Unit27>
       <Unit28>
         <Filename Value="../spidercgi/freespiderideintf.pas"/>
@@ -324,14 +328,14 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="18" Y="21"/>
-        <UsageCount Value="85"/>
+        <UsageCount Value="84"/>
       </Unit28>
       <Unit29>
         <Filename Value="/usr/lib/lazarus/0.9.28.2/components/cgi/cgimodules.pas"/>
         <UnitName Value="cgiModules"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="9"/>
+        <UsageCount Value="8"/>
       </Unit29>
       <Unit30>
         <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/actionseditor.pas"/>
@@ -341,28 +345,28 @@
         <UnitName Value="ActionsEditor"/>
         <TopLine Value="1"/>
         <CursorPos X="30" Y="7"/>
-        <UsageCount Value="3"/>
+        <UsageCount Value="2"/>
       </Unit30>
       <Unit31>
         <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/formeditingintf.pas"/>
         <UnitName Value="FormEditingIntf"/>
         <TopLine Value="14"/>
         <CursorPos X="55" Y="25"/>
-        <UsageCount Value="3"/>
+        <UsageCount Value="2"/>
       </Unit31>
       <Unit32>
         <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/projectintf.pas"/>
         <UnitName Value="ProjectIntf"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="3"/>
+        <UsageCount Value="2"/>
       </Unit32>
       <Unit33>
         <Filename Value="/usr/lib/lazarus/0.9.28.2/ideintf/lazideintf.pas"/>
         <UnitName Value="LazIDEIntf"/>
         <TopLine Value="14"/>
         <CursorPos X="24" Y="26"/>
-        <UsageCount Value="3"/>
+        <UsageCount Value="2"/>
       </Unit33>
       <Unit34>
         <Filename Value="edittable.pas"/>
@@ -380,7 +384,7 @@
         <UnitName Value="CustApp"/>
         <TopLine Value="231"/>
         <CursorPos X="11" Y="234"/>
-        <UsageCount Value="26"/>
+        <UsageCount Value="25"/>
       </Unit35>
       <Unit36>
         <Filename Value="callproc.pas"/>
@@ -442,7 +446,7 @@
         <UnitName Value="SynEdit"/>
         <TopLine Value="1075"/>
         <CursorPos X="14" Y="1097"/>
-        <UsageCount Value="13"/>
+        <UsageCount Value="12"/>
       </Unit41>
       <Unit42>
         <Filename Value="systables.pas"/>
@@ -450,7 +454,7 @@
         <ComponentName Value="dmSysTables"/>
         <ResourceBaseClass Value="DataModule"/>
         <UnitName Value="SysTables"/>
-        <EditorIndex Value="2"/>
+        <EditorIndex Value="1"/>
         <WindowIndex Value="0"/>
         <TopLine Value="229"/>
         <CursorPos X="1" Y="257"/>
@@ -463,7 +467,7 @@
         <UnitName Value="SynEditMiscClasses"/>
         <TopLine Value="89"/>
         <CursorPos X="14" Y="111"/>
-        <UsageCount Value="6"/>
+        <UsageCount Value="5"/>
       </Unit43>
       <Unit44>
         <Filename Value="constraints.pas"/>
@@ -473,7 +477,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="73"/>
         <CursorPos X="1" Y="95"/>
-        <UsageCount Value="98"/>
+        <UsageCount Value="97"/>
       </Unit44>
       <Unit45>
         <Filename Value="newconstraint.pas"/>
@@ -502,20 +506,20 @@
         <UnitName Value="DBGrids"/>
         <TopLine Value="510"/>
         <CursorPos X="16" Y="526"/>
-        <UsageCount Value="16"/>
+        <UsageCount Value="15"/>
       </Unit47>
       <Unit48>
         <Filename Value="/usr/lib/lazarus/0.9.28.2/lcl/controls.pp"/>
         <UnitName Value="Controls"/>
         <TopLine Value="859"/>
         <CursorPos X="5" Y="875"/>
-        <UsageCount Value="16"/>
+        <UsageCount Value="15"/>
       </Unit48>
       <Unit49>
         <Filename Value="/usr/share/fpcsrc/2.2.4/rtl/objpas/classes/classesh.inc"/>
         <TopLine Value="104"/>
         <CursorPos X="3" Y="120"/>
-        <UsageCount Value="16"/>
+        <UsageCount Value="15"/>
       </Unit49>
       <Unit50>
         <Filename Value="calen.pas"/>
@@ -532,9 +536,9 @@
         <Filename Value="scriptdb.pas"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="Scriptdb"/>
-        <EditorIndex Value="10"/>
+        <EditorIndex Value="7"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="149"/>
+        <TopLine Value="148"/>
         <CursorPos X="3" Y="148"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
@@ -546,7 +550,7 @@
         <UnitName Value="ConnectAs"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="15"/>
+        <UsageCount Value="14"/>
       </Unit52>
       <Unit53>
         <Filename Value="userpermissions.pas"/>
@@ -565,7 +569,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="40" Y="18"/>
-        <UsageCount Value="14"/>
+        <UsageCount Value="13"/>
       </Unit54>
       <Unit55>
         <Filename Value="tablemanage.pas"/>
@@ -573,13 +577,10 @@
         <ComponentName Value="fmTableManage"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="TableManage"/>
-        <EditorIndex Value="5"/>
         <WindowIndex Value="0"/>
         <TopLine Value="67"/>
         <CursorPos X="7" Y="15"/>
-        <UsageCount Value="187"/>
-        <Loaded Value="True"/>
-        <LoadedDesigner Value="True"/>
+        <UsageCount Value="193"/>
       </Unit55>
       <Unit56>
         <Filename Value="/usr/lib/lazarus/0.9.29/lcl/grids.pas"/>
@@ -587,7 +588,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="11"/>
+        <UsageCount Value="10"/>
       </Unit56>
       <Unit57>
         <Filename Value="/usr/lib/lazarus/0.9.29/components/synedit/synedit.pp"/>
@@ -595,7 +596,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="783"/>
         <CursorPos X="30" Y="804"/>
-        <UsageCount Value="6"/>
+        <UsageCount Value="5"/>
       </Unit57>
       <Unit58>
         <Filename Value="/usr/lib/lazarus/0.9.29/components/synedit/synedittypes.pp"/>
@@ -603,7 +604,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="18" Y="38"/>
-        <UsageCount Value="6"/>
+        <UsageCount Value="5"/>
       </Unit58>
       <Unit59>
         <Filename Value="/usr/lib/lazarus/0.9.29/lcl/dialogs.pp"/>
@@ -611,7 +612,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="346"/>
         <CursorPos X="33" Y="369"/>
-        <UsageCount Value="6"/>
+        <UsageCount Value="5"/>
       </Unit59>
       <Unit60>
         <Filename Value="backuprestore.pas"/>
@@ -622,7 +623,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="13"/>
         <CursorPos X="22" Y="54"/>
-        <UsageCount Value="173"/>
+        <UsageCount Value="179"/>
       </Unit60>
       <Unit61>
         <Filename Value="unitfirebirdservices.pas"/>
@@ -630,7 +631,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="24"/>
+        <UsageCount Value="23"/>
       </Unit61>
       <Unit62>
         <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/sqldb/interbase/ibconnection.pp"/>
@@ -638,7 +639,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="435"/>
         <CursorPos X="19" Y="447"/>
-        <UsageCount Value="4"/>
+        <UsageCount Value="3"/>
       </Unit62>
       <Unit63>
         <Filename Value="ibconnection.pp"/>
@@ -646,7 +647,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="141"/>
         <CursorPos X="71" Y="165"/>
-        <UsageCount Value="27"/>
+        <UsageCount Value="26"/>
       </Unit63>
       <Unit64>
         <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/sqldb/sqldb.pp"/>
@@ -654,7 +655,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="44" Y="23"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit64>
       <Unit65>
         <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/db.pas"/>
@@ -662,7 +663,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1293"/>
         <CursorPos X="15" Y="1310"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit65>
       <Unit66>
         <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/sqlscript.pp"/>
@@ -670,14 +671,14 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="4"/>
+        <UsageCount Value="3"/>
       </Unit66>
       <Unit67>
         <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-db/src/base/dataset.inc"/>
         <WindowIndex Value="0"/>
         <TopLine Value="21"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="4"/>
+        <UsageCount Value="3"/>
       </Unit67>
       <Unit68>
         <Filename Value="createuser.pas"/>
@@ -688,7 +689,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="3"/>
         <CursorPos X="71" Y="7"/>
-        <UsageCount Value="143"/>
+        <UsageCount Value="149"/>
       </Unit68>
       <Unit69>
         <Filename Value="changepass.pas"/>
@@ -699,7 +700,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="3"/>
         <CursorPos X="88" Y="14"/>
-        <UsageCount Value="142"/>
+        <UsageCount Value="148"/>
       </Unit69>
       <Unit70>
         <Filename Value="permissionmanage.pas"/>
@@ -707,11 +708,11 @@
         <ComponentName Value="fmPermissionManage"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="PermissionManage"/>
-        <EditorIndex Value="4"/>
+        <EditorIndex Value="3"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="440"/>
-        <CursorPos X="5" Y="442"/>
-        <UsageCount Value="140"/>
+        <TopLine Value="341"/>
+        <CursorPos X="54" Y="343"/>
+        <UsageCount Value="146"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit70>
@@ -721,27 +722,24 @@
         <ComponentName Value="fmSQLHistory"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="SQLHistory"/>
-        <EditorIndex Value="9"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="35" Y="66"/>
-        <UsageCount Value="125"/>
-        <Loaded Value="True"/>
-        <LoadedDesigner Value="True"/>
+        <UsageCount Value="131"/>
       </Unit71>
       <Unit72>
         <Filename Value="../../lazarus/lazarus/lcl/include/menuitem.inc"/>
         <WindowIndex Value="0"/>
         <TopLine Value="57"/>
         <CursorPos X="1" Y="77"/>
-        <UsageCount Value="9"/>
+        <UsageCount Value="8"/>
       </Unit72>
       <Unit73>
         <Filename Value="../../lazarus/lazarus/lcl/include/menu.inc"/>
         <WindowIndex Value="0"/>
         <TopLine Value="241"/>
         <CursorPos X="1" Y="273"/>
-        <UsageCount Value="9"/>
+        <UsageCount Value="8"/>
       </Unit73>
       <Unit74>
         <Filename Value="copytable.pas"/>
@@ -752,7 +750,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="18"/>
         <CursorPos X="1" Y="44"/>
-        <UsageCount Value="96"/>
+        <UsageCount Value="102"/>
       </Unit74>
       <Unit75>
         <Filename Value="/usr/lib/lazarus/0.9.30/lcl/comctrls.pp"/>
@@ -760,14 +758,14 @@
         <WindowIndex Value="0"/>
         <TopLine Value="2685"/>
         <CursorPos X="3" Y="2707"/>
-        <UsageCount Value="7"/>
+        <UsageCount Value="6"/>
       </Unit75>
       <Unit76>
         <Filename Value="/usr/lib/lazarus/0.9.30/lcl/include/menuitem.inc"/>
         <WindowIndex Value="0"/>
         <TopLine Value="53"/>
         <CursorPos X="1" Y="75"/>
-        <UsageCount Value="7"/>
+        <UsageCount Value="6"/>
       </Unit76>
       <Unit77>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/lazconf.pp"/>
@@ -775,7 +773,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit77>
       <Unit78>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/definetemplates.pas"/>
@@ -783,7 +781,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit78>
       <Unit79>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/codetoolsstrconsts.pas"/>
@@ -791,7 +789,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit79>
       <Unit80>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/expreval.pas"/>
@@ -799,7 +797,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit80>
       <Unit81>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/buildlazdialog.pas"/>
@@ -807,7 +805,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit81>
       <Unit82>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/laz2_xmlread.pas"/>
@@ -815,7 +813,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit82>
       <Unit83>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/registersdf.pas"/>
@@ -823,7 +821,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit83>
       <Unit84>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/printer4lazarus.pas"/>
@@ -831,7 +829,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit84>
       <Unit85>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/printersdlgs.pp"/>
@@ -839,7 +837,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit85>
       <Unit86>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/osprinters.pas"/>
@@ -847,7 +845,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="29"/>
         <CursorPos X="8" Y="49"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit86>
       <Unit87>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/lazcontrols.pas"/>
@@ -855,7 +853,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit87>
       <Unit88>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/runtimetypeinfocontrols.pas"/>
@@ -863,7 +861,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit88>
       <Unit89>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/rttictrls.pas"/>
@@ -871,7 +869,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="7"/>
+        <UsageCount Value="6"/>
       </Unit89>
       <Unit90>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/rttigrids.pas"/>
@@ -879,7 +877,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="7"/>
+        <UsageCount Value="6"/>
       </Unit90>
       <Unit91>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/sourceprinter.pas"/>
@@ -887,7 +885,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="7"/>
+        <UsageCount Value="6"/>
       </Unit91>
       <Unit92>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/memdslaz.pas"/>
@@ -895,7 +893,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="7"/>
+        <UsageCount Value="6"/>
       </Unit92>
       <Unit93>
         <Filename Value="/usr/lib/lazarus/0.9.30/ide/frmselectdataset.pp"/>
@@ -903,7 +901,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="156"/>
         <CursorPos X="4" Y="193"/>
-        <UsageCount Value="7"/>
+        <UsageCount Value="6"/>
       </Unit93>
       <Unit94>
         <Filename Value="../../lazarus/lazarus/lcl/controls.pp"/>
@@ -911,14 +909,14 @@
         <WindowIndex Value="0"/>
         <TopLine Value="139"/>
         <CursorPos X="23" Y="163"/>
-        <UsageCount Value="7"/>
+        <UsageCount Value="6"/>
       </Unit94>
       <Unit95>
         <Filename Value="../../lazarus/lazarus/lcl/include/control.inc"/>
         <WindowIndex Value="0"/>
         <TopLine Value="2262"/>
         <CursorPos X="1" Y="2286"/>
-        <UsageCount Value="12"/>
+        <UsageCount Value="11"/>
       </Unit95>
       <Unit96>
         <Filename Value="../../lazarus/lazarus/lcl/forms.pp"/>
@@ -926,14 +924,14 @@
         <WindowIndex Value="0"/>
         <TopLine Value="559"/>
         <CursorPos X="23" Y="600"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit96>
       <Unit97>
         <Filename Value="../../lazarus/lazarus/lcl/include/customform.inc"/>
         <WindowIndex Value="0"/>
         <TopLine Value="359"/>
         <CursorPos X="3" Y="381"/>
-        <UsageCount Value="8"/>
+        <UsageCount Value="7"/>
       </Unit97>
       <Unit98>
         <Filename Value="dbinfo.pas"/>
@@ -944,7 +942,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="20"/>
         <CursorPos X="22" Y="41"/>
-        <UsageCount Value="64"/>
+        <UsageCount Value="70"/>
       </Unit98>
       <Unit99>
         <Filename Value="../../FromInternet/fpc2.4/fpc-2.4.4/packages/ibase/src/ibase60dyn.pp"/>
@@ -952,14 +950,14 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit99>
       <Unit100>
         <Filename Value="../../FromInternet/fpc2.4/fpc-2.4.4/packages/ibase/src/ibase60.inc"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="50" Y="6"/>
-        <UsageCount Value="10"/>
+        <UsageCount Value="9"/>
       </Unit100>
       <Unit101>
         <Filename Value="../FreeSpider/spiderutils.pas"/>
@@ -967,7 +965,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="13"/>
+        <UsageCount Value="12"/>
       </Unit101>
       <Unit102>
         <Filename Value="comparison.pas"/>
@@ -975,22 +973,21 @@
         <ComponentName Value="fmComparison"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="Comparison"/>
-        <IsVisibleTab Value="True"/>
-        <EditorIndex Value="3"/>
+        <EditorIndex Value="2"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="865"/>
-        <CursorPos X="43" Y="877"/>
-        <UsageCount Value="51"/>
+        <TopLine Value="154"/>
+        <CursorPos X="26" Y="170"/>
+        <UsageCount Value="57"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit102>
       <Unit103>
         <Filename Value="/usr/share/fpcsrc/2.6.0/rtl/inc/systemh.inc"/>
-        <EditorIndex Value="6"/>
+        <EditorIndex Value="5"/>
         <WindowIndex Value="0"/>
         <TopLine Value="815"/>
         <CursorPos X="11" Y="832"/>
-        <UsageCount Value="14"/>
+        <UsageCount Value="18"/>
         <Loaded Value="True"/>
       </Unit103>
       <Unit104>
@@ -998,129 +995,129 @@
         <WindowIndex Value="0"/>
         <TopLine Value="350"/>
         <CursorPos X="3" Y="352"/>
-        <UsageCount Value="12"/>
+        <UsageCount Value="11"/>
       </Unit104>
     </Units>
     <JumpHistory Count="30" HistoryIndex="29">
       <Position1>
         <Filename Value="comparison.pas"/>
-        <Caret Line="594" Column="23" TopLine="577"/>
+        <Caret Line="137" Column="17" TopLine="129"/>
       </Position1>
       <Position2>
         <Filename Value="comparison.pas"/>
-        <Caret Line="79" Column="38" TopLine="54"/>
+        <Caret Line="138" Column="3" TopLine="136"/>
       </Position2>
       <Position3>
         <Filename Value="comparison.pas"/>
-        <Caret Line="862" Column="71" TopLine="847"/>
+        <Caret Line="453" Column="22" TopLine="441"/>
       </Position3>
       <Position4>
-        <Filename Value="main.pas"/>
-        <Caret Line="2251" Column="22" TopLine="2232"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="45" Column="9" TopLine="37"/>
       </Position4>
       <Position5>
-        <Filename Value="main.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="138" Column="17" TopLine="136"/>
       </Position5>
       <Position6>
-        <Filename Value="main.pas"/>
-        <Caret Line="1949" Column="22" TopLine="1948"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="80" Column="15" TopLine="63"/>
       </Position6>
       <Position7>
         <Filename Value="comparison.pas"/>
-        <Caret Line="866" Column="5" TopLine="843"/>
+        <Caret Line="171" Column="78" TopLine="145"/>
       </Position7>
       <Position8>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="188" Column="27" TopLine="160"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="670" Column="14" TopLine="663"/>
       </Position8>
       <Position9>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="874" Column="13" TopLine="850"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position9>
       <Position10>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="865" Column="1" TopLine="849"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="93" Column="16" TopLine="65"/>
       </Position10>
       <Position11>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="868" Column="7" TopLine="847"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="124" Column="26" TopLine="96"/>
       </Position11>
       <Position12>
-        <Filename Value="systables.pas"/>
-        <Caret Line="28" Column="43" TopLine="10"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="641" Column="32" TopLine="634"/>
       </Position12>
       <Position13>
         <Filename Value="main.pas"/>
-        <Caret Line="1949" Column="22" TopLine="1948"/>
+        <Caret Line="649" Column="3" TopLine="644"/>
       </Position13>
       <Position14>
-        <Filename Value="main.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Filename Value="enterpass.pas"/>
+        <Caret Line="21" Column="75" TopLine="20"/>
       </Position14>
       <Position15>
         <Filename Value="main.pas"/>
-        <Caret Line="163" Column="15" TopLine="146"/>
+        <Caret Line="656" Column="38" TopLine="635"/>
       </Position15>
       <Position16>
         <Filename Value="main.pas"/>
-        <Caret Line="985" Column="32" TopLine="978"/>
+        <Caret Line="3693" Column="3" TopLine="3675"/>
       </Position16>
       <Position17>
         <Filename Value="main.pas"/>
-        <Caret Line="210" Column="14" TopLine="193"/>
+        <Caret Line="668" Column="1" TopLine="648"/>
       </Position17>
       <Position18>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="72" Column="39" TopLine="62"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position18>
       <Position19>
         <Filename Value="main.pas"/>
-        <Caret Line="163" Column="15" TopLine="146"/>
+        <Caret Line="93" Column="16" TopLine="65"/>
       </Position19>
       <Position20>
         <Filename Value="main.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Caret Line="124" Column="26" TopLine="96"/>
       </Position20>
       <Position21>
         <Filename Value="main.pas"/>
-        <Caret Line="3127" Column="34" TopLine="3132"/>
+        <Caret Line="643" Column="35" TopLine="610"/>
       </Position21>
       <Position22>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="72" Column="15" TopLine="55"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position22>
       <Position23>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="128" Column="1" TopLine="107"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="93" Column="16" TopLine="65"/>
       </Position23>
       <Position24>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="154" Column="30" TopLine="131"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="124" Column="26" TopLine="96"/>
       </Position24>
       <Position25>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="109" Column="3" TopLine="107"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="638" Column="30" TopLine="610"/>
       </Position25>
       <Position26>
         <Filename Value="main.pas"/>
-        <Caret Line="2382" Column="3" TopLine="2368"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position26>
       <Position27>
         <Filename Value="main.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Caret Line="224" Column="25" TopLine="196"/>
       </Position27>
       <Position28>
         <Filename Value="main.pas"/>
-        <Caret Line="162" Column="15" TopLine="145"/>
+        <Caret Line="346" Column="14" TopLine="321"/>
       </Position28>
       <Position29>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="81" Column="40" TopLine="70"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="640" Column="17" TopLine="618"/>
       </Position29>
       <Position30>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="926" Column="5" TopLine="913"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="646" Column="29" TopLine="639"/>
       </Position30>
     </JumpHistory>
   </ProjectOptions>

+ 2 - 3
TurboBird.lpr

@@ -2,7 +2,7 @@
 {  TurboBird: FireBird database administration and management tool          }
 {  Developed by: Motaz Abdel Azeem http://code.sd/                          }
 {  Start development :  5.Dec.2009                                          }
-{  Last updated      : 20.May.2012                                          }
+{  Last updated      : 21.May.2012                                          }
 {  License           : GPL for GUI, LGPL for Units                          }
 {***************************************************************************}
 
@@ -62,7 +62,6 @@ begin
   Application.CreateForm(TfmMain, fmMain);
   Application.CreateForm(TfmCreateDB, fmCreateDB);
   Application.CreateForm(TfmReg, fmReg);
-  Application.CreateForm(TfmNewTable, fmNewTable);
   Application.CreateForm(TfmNewGen, fmNewGen);
   Application.CreateForm(TfmEnterPass, fmEnterPass);
   Application.CreateForm(TfmCreateTrigger, fmCreateTrigger);
@@ -78,11 +77,11 @@ begin
   Application.CreateForm(TfmChangePass, fmChangePass);
   Application.CreateForm(TfmSQLHistory, fmSQLHistory);
   Application.CreateForm(TfmCopyTable, fmCopyTable);
+  Application.CreateForm(TfmComparison, fmComparison);
   fmMain.Version:= Version;
   fmMain.VersionDate:= VersionDate;
   SAbout.Free;
   InitialiseIBase60;
-  Application.CreateForm(TfmComparison, fmComparison);
   Application.Run;
   ReleaseIBase60;
 

+ 13 - 2
comparison.lfm

@@ -66,8 +66,8 @@ object fmComparison: TfmComparison
   end
   object meLog: TMemo
     Left = 13
-    Height = 242
-    Top = 226
+    Height = 224
+    Top = 222
     Width = 603
     Anchors = [akTop, akLeft, akRight, akBottom]
     Font.Name = 'Courier 10 Pitch'
@@ -174,4 +174,15 @@ object fmComparison: TfmComparison
       TabOrder = 8
     end
   end
+  object StatusBar1: TStatusBar
+    Left = 0
+    Height = 21
+    Top = 457
+    Width = 623
+    Panels = <    
+      item
+        Width = 50
+      end>
+    SimplePanel = False
+  end
 end

+ 312 - 81
comparison.pas

@@ -6,7 +6,7 @@ interface
 
 uses
   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
-  Buttons, IBConnection, sqldb, QueryWindow;
+  Buttons, ComCtrls, IBConnection, sqldb, QueryWindow;
 
 const
   dbObjects: array [1 .. 13] of string = ('Tables', 'Generators', 'Triggers', 'Views', 'Stored Procedures', 'UDFs',
@@ -35,12 +35,14 @@ type
     laDatabase: TLabel;
     laComparedDatabase: TLabel;
     meLog: TMemo;
+    StatusBar1: TStatusBar;
     procedure bbStartClick(Sender: TObject);
     procedure cbComparedDatabaseChange(Sender: TObject);
     procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
     procedure laScriptClick(Sender: TObject);
   private
     fdbIndex: Integer;
+    DiffCount: Integer;
     dbObjectsList: array [1 .. 13] of TStringList;
     dbExistingObjectsList: array [1 .. 13] of TStringList;
     MissingFieldsList: TStringList;
@@ -57,9 +59,13 @@ type
     ModifiedViewsList: TStringList;
     ModifiedTriggersList: TStringList;
     ModifiedProceduresList: TStringList;
+    ModifiedFunctionsList: TStringList;
+    ModifiedDomainsList: TStringList;
 
     fQueryWindow: TfmQueryWindow;
 
+    procedure DisplayStatus(AStatus: string);
+
     procedure CheckMissingIndices;
     procedure CheckMissingConstraints;
     procedure CheckMissingDBObjects;
@@ -70,6 +76,8 @@ type
     procedure CheckModifiedViews;
     procedure CheckModifiedTriggers;
     procedure CheckModifiedProcedures;
+    procedure CheckModifiedFunctions;
+    procedure CheckModifiedDomains;
 
     procedure InitializeQueryWindow;
     procedure ScriptMissingFields;
@@ -79,6 +87,8 @@ type
     procedure ScriptModifiedViews;
     procedure ScriptModifiedTriggers;
     procedure ScriptModifiedProcedures;
+    procedure ScriptModifiedFunctions;
+    procedure ScriptModifiedDomains;
   public
     procedure Init(dbIndex: Integer);
     { public declarations }
@@ -96,17 +106,39 @@ implementation
 uses Main, SysTables, Scriptdb;
 
 procedure TfmComparison.cbComparedDatabaseChange(Sender: TObject);
+var
+  ComparedDBIndex: Integer;
+  Connected: Boolean;
 begin
-  if cbComparedDatabase.ItemIndex <> -1 then
-  with fmMain.RegisteredDatabases[cbComparedDatabase.ItemIndex].RegRec do
+  ComparedDBIndex:= cbComparedDatabase.ItemIndex;
+  if (ComparedDBIndex <> -1) then
   begin
-    laComparedDatabase.Caption:= DatabaseName;
-    bbStart.Enabled:= True;
+    Connected:= True;
+    if (fmMain.RegisteredDatabases[ComparedDBIndex].RegRec.Password = '') then
+      Connected:= fmMain.ConnectToDBAs(ComparedDBIndex);
+
+    if not Connected then
+    begin
+      bbStart.Enabled:= False;
+      cbComparedDatabase.ItemIndex:= -1;
+    end;
+
+    if Connected then
+    with fmMain.RegisteredDatabases[ComparedDBIndex].RegRec do
+    begin
+      laComparedDatabase.Caption:= DatabaseName;
+      bbStart.Enabled:= True;
+    end;
+
   end;
 end;
 
 procedure TfmComparison.bbStartClick(Sender: TObject);
 begin
+  DiffCount:= 0;
+  StatusBar1.Color:= clBlue;
+  DisplayStatus('Searching for missing DB Objects...');
+
   CheckMissingDBObjects;
 
   if cxTables.Checked then
@@ -119,6 +151,7 @@ begin
     CheckModifiedConstraints;
   end;
 
+  DisplayStatus('Searching for modified db Objects...');
   if cxViews.Checked then
     CheckModifiedViews;
 
@@ -127,6 +160,15 @@ begin
 
   if cxStoredProcs.Checked then
     CheckModifiedProcedures;
+
+  if cxUDFs.Checked then
+    CheckModifiedFunctions;
+
+  if cxDomains.Checked then
+    CheckModifiedDomains;
+
+  StatusBar1.Color:= clDefault;
+  DisplayStatus('Comparison Finished, ' + IntToStr(DiffCount) + ' difference(s) found');
 end;
 
 procedure TfmComparison.FormClose(Sender: TObject; var CloseAction: TCloseAction);
@@ -153,6 +195,8 @@ begin
   ModifiedViewsList.Free;
   ModifiedTriggersList.Free;
   ModifiedProceduresList.Free;
+  ModifiedFunctionsList.Free;
+  ModifiedDomainsList.Free;
 
 end;
 
@@ -196,6 +240,11 @@ begin
   if cxStoredProcs.Checked then
     ScriptModifiedProcedures;
 
+  if cxUDFs.Checked then
+    ScriptModifiedFunctions;
+
+  if cxDomains.Checked then
+    ScriptModifiedDomains;
 
   dmSysTables.Init(fdbIndex);
 
@@ -265,7 +314,7 @@ begin
     for i:= 0 to dbObjectsList[x].Count - 1 do
     begin
       ScriptList.Clear;
-      ScriptList.Add('Declare External Function ' + dbObjectsList[x].Strings[i]);
+      ScriptList.Add('Declare External Function "' + dbObjectsList[x].Strings[i] + '"');
       if fmMain.GetUDFInfo(fdbIndex, dbObjectsList[x].Strings[i], ModuleName, EntryPoint, Params) then
       begin
         RemoveParamClosing(Params);
@@ -360,6 +409,12 @@ begin
 
 end;
 
+procedure TfmComparison.DisplayStatus(AStatus: string);
+begin
+  StatusBar1.Panels[0].Text:= AStatus;
+  Application.ProcessMessages;
+end;
+
 procedure TfmComparison.CheckMissingDBObjects;
 var
   List, ComparedList: TStringList;
@@ -394,6 +449,7 @@ begin
     begin
       meLog.Lines.Add(' ' + List[i]);
       dbObjectsList[x].Add(List[i]);
+      Inc(DiffCount);
     end
     else                                        // Exist
       dbExistingObjectsList[x].Add(List[i]);
@@ -430,6 +486,7 @@ begin
       begin
         meLog.Lines.Add(' ' + dbExistingObjectsList[1].Strings[i] + ': ' + FieldsList[j]);
         MissingFieldsList.Add(dbExistingObjectsList[1].Strings[i] + ',' + FieldsList[j]);
+        Inc(DiffCount);
       end
       else                                             // Add to existing list
         ExistFieldsList.Add(dbExistingObjectsList[1].Strings[i] + ',' + FieldsList[j]);
@@ -471,6 +528,7 @@ begin
        begin
          meLog.Lines.Add(' ' + ExistFieldsList[i]);
          ModifiedFieldsList.Add(ExistFieldsList[i]);
+         Inc(DiffCount);
        end;
 
   end;
@@ -507,6 +565,7 @@ begin
     begin
       meLog.Lines.Add(' ' + ExistIndicesList[i]);
       ModifiedIndicesList.Add(ExistIndicesList[i]);
+      Inc(DiffCount);
     end;
 
   end;
@@ -547,6 +606,7 @@ begin
     begin
       meLog.Lines.Add(' ' + ExistConstraintsList[i]);
       ModifiedConstraintsList.Add(ExistConstraintsList[i]);
+      Inc(DiffCount);
     end;
 
   end;
@@ -573,6 +633,7 @@ begin
     begin
       meLog.Lines.Add(' ' + ViewName);
       ModifiedViewsList.Add(ViewName);
+      Inc(DiffCount);
     end;
 
   end;
@@ -605,6 +666,7 @@ begin
     begin
       meLog.Lines.Add(' ' + TriggerName);
       ModifiedTriggersList.Add(TriggerName);
+      Inc(DiffCount);
     end;
 
   end;
@@ -633,6 +695,62 @@ begin
     begin
       meLog.Lines.Add(' ' + ProcName);
       ModifiedProceduresList.Add(ProcName);
+      Inc(DiffCount);
+    end;
+
+  end;
+
+end;
+
+procedure TfmComparison.CheckModifiedFunctions;
+var
+  i: Integer;
+  FunctionName, ModuleName, EntryPoint, Params: string;
+  CModuleName, CEntryPoint, CParams: string;
+begin
+  meLog.Lines.Add('');
+  meLog.Lines.Add('Modified Functions');
+  ModifiedFunctionsList.Clear;
+
+  for i:= 0 to dbExistingObjectsList[6].Count - 1 do
+  begin
+    FunctionName:= dbExistingObjectsList[6][i];
+    fmMain.GetUDFInfo(fdbIndex, FunctionName, ModuleName, EntryPoint, Params);
+    if fmMain.GetUDFInfo(cbComparedDatabase.ItemIndex, FunctionName, CModuleName, CEntryPoint, CParams) then
+    if  (ModuleName <> CModuleName) or (EntryPoint <> CEntryPoint) or (Params <> CParams) then
+    begin
+      meLog.Lines.Add(' ' + FunctionName);
+      ModifiedFunctionsList.Add(FunctionName);
+      Inc(DiffCount);
+    end;
+
+  end;
+
+end;
+
+procedure TfmComparison.CheckModifiedDomains;
+var
+  i: Integer;
+  DomainName: string;
+  DomainType, DefaultValue: string;
+  CDomainType, CDefaultValue: string;
+  DomainSize, CDomainSize: Integer;
+
+begin
+  meLog.Lines.Add('');
+  meLog.Lines.Add('Modified domains');
+  ModifiedDomainsList.Clear;
+
+  for i:= 0 to dbExistingObjectsList[8].Count - 1 do
+  begin
+    DomainName:= dbExistingObjectsList[8][i];
+    dmSysTables.GetDomainInfo(fdbIndex, DomainName, DomainType, DomainSize, DefaultValue);
+    dmSysTables.GetDomainInfo(cbComparedDatabase.ItemIndex, DomainName, CDomainType, CDomainSize, CDefaultValue);
+    if (DomainType <> CDomainType) or (DomainSize <> CDomainSize) or (DefaultValue <> CDefaultValue) then
+    begin
+      meLog.Lines.Add(' ' + DomainName);
+      ModifiedDomainsList.Add(DomainName);
+      Inc(DiffCount);
     end;
 
   end;
@@ -658,8 +776,12 @@ var
   TableSpaces: Integer;
   FieldSpaces: Integer;
 begin
-  fQueryWindow.meQuery.Lines.Add('');
-  fQueryWindow.meQuery.Lines.Add('-- Missing fields');
+  if MissingFieldsList.Count > 0 then
+  begin
+    fQueryWindow.meQuery.Lines.Add('');
+    fQueryWindow.meQuery.Lines.Add('-- Missing fields');
+  end;
+
   for i:= 0 to MissingFieldsList.Count - 1 do
   begin
     Line:= MissingFieldsList[i];
@@ -715,64 +837,69 @@ var
   NotNull, CNotNull: Boolean;
   ScriptList: TStringList;
 begin
-  ScriptList:= TStringList.Create;
+  if ModifiedFieldsList.Count > 0 then
   try
-  fQueryWindow.meQuery.Lines.Add('');
-  fQueryWindow.meQuery.Lines.Add('-- Modified fields');
-  for i:= 0 to ModifiedFieldsList.Count - 1 do
-  begin
-    Line:= ModifiedFieldsList[i];
-    ATableName:= copy(Line, 1, Pos(',', Line) - 1);
-    System.Delete(Line, 1, Pos(',', Line));
-    AFieldName:= Line;
-
-    dmSysTables.GetFieldInfo(fdbIndex, ATableName, AFieldName, FieldType, FieldSize, NotNull, DefaultValue, Description);
-    dmSysTables.GetFieldInfo(cbComparedDatabase.ItemIndex, ATableName, AFieldName, CFieldType, CFieldSize, CNotNull,
-      cDefaultValue, cDescription);
-
-    ScriptList.Clear;
-    // check type/size change
-    if (FieldType <> CFieldType) or (FieldSize <> CFieldSize) then
+    ScriptList:= TStringList.Create;
+    if ModifiedFieldsList.Count > 0 then
     begin
-      Line:= 'ALTER TABLE ' + ATableName + ' ALTER ' + AFieldName + ' TYPE ' + FieldType;
-
-      if Pos('CHAR', FieldType) > 0 then
-        Line:= Line + '(' + IntToStr(FieldSize) + ')';
-      Line:= Line + ';';
-      ScriptList.Add(Line);
+      fQueryWindow.meQuery.Lines.Add('');
+      fQueryWindow.meQuery.Lines.Add('-- Modified fields');
     end;
 
-    // Allow Null
-    if NotNull <> CNotNull then
+    for i:= 0 to ModifiedFieldsList.Count - 1 do
     begin
-      if NotNull then
-        NullFlag:= '1'
-      else
-        NullFlag:= 'NULL';
-      ScriptList.Add('UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = ' + NullFlag);
-      ScriptList.Add('WHERE RDB$FIELD_NAME = ''' + AFieldName + ''' AND RDB$RELATION_NAME = ''' + ATableName + ''';');
-    end;
+      Line:= ModifiedFieldsList[i];
+      ATableName:= copy(Line, 1, Pos(',', Line) - 1);
+      System.Delete(Line, 1, Pos(',', Line));
+      AFieldName:= Line;
 
-    // Description
-    if Description <> CDescription then
-    begin
-      ScriptList.Add('UPDATE RDB$RELATION_FIELDS set RDB$DESCRIPTION = ''' + Description + '''');
-      ScriptList.Add('where RDB$FIELD_NAME = ''' + UpperCase(AFieldName) + '''');
-      ScriptList.Add('and RDB$RELATION_NAME = ''' + ATableName + ''';');
-    end;
+      dmSysTables.GetFieldInfo(fdbIndex, ATableName, AFieldName, FieldType, FieldSize, NotNull, DefaultValue, Description);
+      dmSysTables.GetFieldInfo(cbComparedDatabase.ItemIndex, ATableName, AFieldName, CFieldType, CFieldSize, CNotNull,
+        cDefaultValue, cDescription);
 
-    // Default value
-    if DefaultValue <> cDefaultValue then
-    begin
-      ScriptList.Add('UPDATE RDB$RELATION_FIELDS set RDB$Default_Source = ''' + DefaultValue + ''' ');
-      ScriptList.Add('where RDB$FIELD_NAME = ''' + UpperCase(AFieldName) + '''');
-      ScriptList.Add('and RDB$RELATION_NAME = ''' + ATableName + ''';');
-    end;
-    fQueryWindow.meQuery.Lines.Add('');
-    fQueryWindow.meQuery.Lines.Add('-- ' + AFieldName + ' on ' + ATableName);
-    fQueryWindow.meQuery.Lines.AddStrings(ScriptList);
+      ScriptList.Clear;
+      // check type/size change
+      if (FieldType <> CFieldType) or (FieldSize <> CFieldSize) then
+      begin
+        Line:= 'ALTER TABLE ' + ATableName + ' ALTER ' + AFieldName + ' TYPE ' + FieldType;
 
-  end;
+        if Pos('CHAR', FieldType) > 0 then
+          Line:= Line + '(' + IntToStr(FieldSize) + ')';
+        Line:= Line + ';';
+        ScriptList.Add(Line);
+      end;
+
+      // Allow Null
+      if NotNull <> CNotNull then
+      begin
+        if NotNull then
+          NullFlag:= '1'
+        else
+          NullFlag:= 'NULL';
+        ScriptList.Add('UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = ' + NullFlag);
+        ScriptList.Add('WHERE RDB$FIELD_NAME = ''' + AFieldName + ''' AND RDB$RELATION_NAME = ''' + ATableName + ''';');
+      end;
+
+      // Description
+      if Description <> CDescription then
+      begin
+        ScriptList.Add('UPDATE RDB$RELATION_FIELDS set RDB$DESCRIPTION = ''' + Description + '''');
+        ScriptList.Add('where RDB$FIELD_NAME = ''' + UpperCase(AFieldName) + '''');
+        ScriptList.Add('and RDB$RELATION_NAME = ''' + ATableName + ''';');
+      end;
+
+      // Default value
+      if DefaultValue <> cDefaultValue then
+      begin
+        ScriptList.Add('UPDATE RDB$RELATION_FIELDS set RDB$Default_Source = ''' + DefaultValue + ''' ');
+        ScriptList.Add('where RDB$FIELD_NAME = ''' + UpperCase(AFieldName) + '''');
+        ScriptList.Add('and RDB$RELATION_NAME = ''' + ATableName + ''';');
+      end;
+      fQueryWindow.meQuery.Lines.Add('');
+      fQueryWindow.meQuery.Lines.Add('-- ' + AFieldName + ' on ' + ATableName);
+      fQueryWindow.meQuery.Lines.AddStrings(ScriptList);
+
+    end;
 
 
   finally
@@ -788,8 +915,9 @@ var
   Line: string;
   Unique, Ascending: Boolean;
 begin
-  FieldsList:= TStringList.Create;
+  if ModifiedIndicesList.Count > 0 then
   try
+    FieldsList:= TStringList.Create;
     fQueryWindow.meQuery.Lines.Add('');
     fQueryWindow.meQuery.Lines.Add('-- Modified Indices');
     for i:= 0 to ModifiedIndicesList.Count - 1 do
@@ -833,6 +961,8 @@ var
   KeyName, CurrentTableName, CurrentFieldName,
   OtherTablename, OtherFieldName, UpdateRule, DeleteRule: string;
 begin
+  if ModifiedConstraintsList.Count > 0 then
+  begin
     fQueryWindow.meQuery.Lines.Add('');
     fQueryWindow.meQuery.Lines.Add('-- Modified Constraints');
     for i:= 0 to ModifiedConstraintsList.Count - 1 do
@@ -860,6 +990,8 @@ begin
 
     end;
 
+  end;
+
 end;
 
 procedure TfmComparison.ScriptModifiedViews;
@@ -868,17 +1000,26 @@ var
   ViewName: string;
   Columns, Body: string;
 begin
-  fQueryWindow.meQuery.Lines.Add('');
-  fQueryWindow.meQuery.Lines.Add('-- Modified Views');
-  for i:= 0 to ModifiedViewsList.Count - 1 do
-  begin
-    ViewName:= ModifiedViewsList[i];
-    fmMain.GetViewInfo(fdbIndex, ViewName, Columns, Body);
-    fQueryWindow.meQuery.Lines.Add('alter view "' + ViewName + '" (' + Columns + ')');
-    fQueryWindow.meQuery.Lines.Add('as');
-    fQueryWindow.meQuery.Lines.Add(Body);
-    fQueryWindow.meQuery.Lines.Add(';');
+  if ModifiedViewsList.Count > 0 then
+  try
     fQueryWindow.meQuery.Lines.Add('');
+    fQueryWindow.meQuery.Lines.Add('-- Modified Views');
+    for i:= 0 to ModifiedViewsList.Count - 1 do
+    begin
+      ViewName:= ModifiedViewsList[i];
+      fmMain.GetViewInfo(fdbIndex, ViewName, Columns, Body);
+      fQueryWindow.meQuery.Lines.Add('alter view "' + ViewName + '" (' + Columns + ')');
+      fQueryWindow.meQuery.Lines.Add('as');
+      fQueryWindow.meQuery.Lines.Add(Body);
+      fQueryWindow.meQuery.Lines.Add(';');
+      fQueryWindow.meQuery.Lines.Add('');
+    end;
+
+  except
+  on e: exception do
+  begin
+    ShowMessage(e.Message);
+  end;
   end;
 
 end;
@@ -889,10 +1030,11 @@ var
   TriggerName: string;
   List: TStringList;
 begin
-  fQueryWindow.meQuery.Lines.Add('');
-  fQueryWindow.meQuery.Lines.Add('-- Modified Triggers');
-  List:= TStringList.Create;
+  if ModifiedTriggersList.Count > 0 then
   try
+    fQueryWindow.meQuery.Lines.Add('');
+    fQueryWindow.meQuery.Lines.Add('-- Modified Triggers');
+    List:= TStringList.Create;
     for i:= 0 to ModifiedTriggersList.Count - 1 do
     begin
       TriggerName:= ModifiedTriggersList[i];
@@ -920,18 +1062,101 @@ var
   SOwner: string;
   List: TStringList;
 begin
-  List:= TStringList.Create;
-  fQueryWindow.meQuery.Lines.Add('');
-  fQueryWindow.meQuery.Lines.Add('-- Modified Procedures');
-  for i:= 0 to ModifiedProceduresList.Count - 1 do
+  if ModifiedProceduresList.Count > 0 then
+  try
+    List:= TStringList.Create;
+
+    fQueryWindow.meQuery.Lines.Add('');
+    fQueryWindow.meQuery.Lines.Add('-- Modified Procedures');
+    for i:= 0 to ModifiedProceduresList.Count - 1 do
+    begin
+      ProcName:= ModifiedProceduresList[i];
+      Body:= fmMain.GetStoredProcBody(fdbIndex, ProcName, SOwner);
+      fQueryWindow.meQuery.Lines.Add('alter procedure ' + ProcName + '(');
+      List.Text:= Body + ';';
+      fQueryWindow.meQuery.Lines.AddStrings(List);
+
+      fQueryWindow.meQuery.Lines.Add('');
+    end;
+
+
+  finally
+    List.Free;
+  end;
+
+end;
+
+procedure TfmComparison.ScriptModifiedFunctions;
+var
+  i: Integer;
+  FunctionName: string;
+  ModuleName, EntryPoint, Params: string;
+begin
+  if ModifiedFunctionsList.Count > 0 then
   begin
-    ProcName:= ModifiedProceduresList[i];
-    Body:= fmMain.GetStoredProcBody(fdbIndex, ProcName, SOwner);
-    fQueryWindow.meQuery.Lines.Add('alter procedure ' + ProcName + '(');
-    List.Text:= Body + ';';
-    fQueryWindow.meQuery.Lines.AddStrings(List);
+    fQueryWindow.meQuery.Lines.Add('');
+    fQueryWindow.meQuery.Lines.Add('-- Modified Functions (UDFs)');
+  end;
+
+  for i:= 0 to ModifiedFunctionsList.Count - 1 do
+  begin
+    FunctionName:= ModifiedFunctionsList[i];
+    if fmMain.GetUDFInfo(fdbIndex, FunctionName, ModuleName, EntryPoint, Params) then
+    begin
+      fQueryWindow.meQuery.Lines.Add('');
+      fQueryWindow.meQuery.Lines.Add('drop external function "' + FunctionName + '";');
+      fQueryWindow.meQuery.Lines.Add('');
+      fQueryWindow.meQuery.Lines.Add('DECLARE EXTERNAL FUNCTION "' + FunctionName + '"(');
+      fQueryWindow.meQuery.Lines.Add(Params);
+      fQueryWindow.meQuery.Lines.Add('ENTRY_POINT ''' + EntryPoint + '''');
+      fQueryWindow.meQuery.Lines.Add('MODULE_NAME ''' + ModuleName + ''' ;');
+
+      fQueryWindow.meQuery.Lines.Add('');
+
+    end;
+
+  end;
+
+end;
+
+procedure TfmComparison.ScriptModifiedDomains;
+var
+  i: Integer;
+  DomainName: string;
+  DomainType, DefaultValue: string;
+  DomainSize: Integer;
+  Line: string;
+begin
+  if ModifiedDomainsList.Count > 0 then
+  begin
+    fQueryWindow.meQuery.Lines.Add('');
+    fQueryWindow.meQuery.Lines.Add('-- Modified Domains');
+  end;
+
+  for i:= 0 to ModifiedDomainsList.Count - 1 do
+  begin
+    DomainName:= ModifiedDomainsList[i];
+    dmSysTables.GetDomainInfo(fdbIndex, DomainName, DomainType, domainSize, DefaultValue);
+    fQueryWindow.meQuery.Lines.Add('');
+    Line:= 'Alter DOMAIN ' + DomainName + ' type ' + DomainType;
+    if Pos('char', LowerCase(DomainType)) > 0 then
+      Line:= Line + '(' + IntToStr(DomainSize) + ')';
+    fQueryWindow.meQuery.Lines.Add(Line);
+
+    if Trim(DefaultValue) <> '' then
+    begin
+      if (Pos('char', LowerCase(DomainType)) > 0) and (Pos('''', DefaultValue) = 0) then
+        fQueryWindow.meQuery.Lines.Add('set ''' + DefaultValue + ''';')
+      else
+        fQueryWindow.meQuery.Lines.Add('set ' + DefaultValue + ';');
+    end
+    else
+      fQueryWindow.meQuery.Lines.Add('set DEFAULT NULL;');
+
 
     fQueryWindow.meQuery.Lines.Add('');
+
+
   end;
 
 end;
@@ -984,6 +1209,8 @@ begin
   ModifiedViewsList:= TStringList.Create;
   ModifiedTriggersList:= TStringList.Create;
   ModifiedProceduresList:= TStringList.Create;
+  ModifiedFunctionsList:= TStringList.Create;
+  ModifiedDomainsList:= TStringList.Create;
 end;
 
 procedure TfmComparison.CheckMissingIndices;
@@ -1018,6 +1245,7 @@ begin
           begin
             meLog.Lines.Add(' ' + List[j]);
             dbObjectsList[12].Add(TablesList[i] + ',' + List[j]);
+            Inc(DiffCount);
           end
           else
             ExistIndicesList.Add(TablesList[i] + ',' + List[j]); // Add to existing indices list
@@ -1028,6 +1256,7 @@ begin
       begin
         dbObjectsList[12].Add(TablesList[i] + ',' + List[j]);
         meLog.Lines.Add(' ' + List[j]);
+        Inc(DiffCount);
       end;
 
     end;
@@ -1080,6 +1309,7 @@ begin
           begin
             meLog.Lines.Add(' ' + List[j]);
             dbObjectsList[13].Add(TablesList[i] + ',' + List[j]);
+            Inc(DiffCount);
           end
           else
             ExistConstraintsList.Add(TablesList[i] + ',' + List[j]);
@@ -1090,6 +1320,7 @@ begin
       begin
         dbObjectsList[13].Add(TablesList[i] + ',' + List[j]);
         meLog.Lines.Add(' ' + List[j]);
+        Inc(DiffCount);
       end;
 
     end;

+ 4 - 4
enterpass.lfm

@@ -10,13 +10,14 @@ object fmEnterPass: TfmEnterPass
   ClientHeight = 236
   ClientWidth = 388
   OnActivate = FormActivate
+  OnShow = FormShow
   Position = poScreenCenter
   LCLVersion = '0.9.31'
   object Label1: TLabel
     Left = 14
     Height = 18
     Top = 80
-    Width = 62
+    Width = 67
     Caption = 'Password'
     ParentColor = False
   end
@@ -24,7 +25,7 @@ object fmEnterPass: TfmEnterPass
     Left = 14
     Height = 18
     Top = 30
-    Width = 31
+    Width = 32
     Caption = 'User'
     ParentColor = False
   end
@@ -32,7 +33,7 @@ object fmEnterPass: TfmEnterPass
     Left = 14
     Height = 18
     Top = 125
-    Width = 29
+    Width = 31
     Caption = 'Role'
     ParentColor = False
   end
@@ -55,7 +56,6 @@ object fmEnterPass: TfmEnterPass
     Default = True
     Kind = bkOK
     ModalResult = 1
-    OnClick = BitBtn1Click
     TabOrder = 3
   end
   object BitBtn2: TBitBtn

+ 17 - 17
enterpass.lrs

@@ -5,21 +5,21 @@ LazarusResources.Add('TfmEnterPass','FORMDATA',[
   +'p'#3#201#0#5'Width'#3#132#1#13'ActiveControl'#7#6'edUser'#11'BorderIcons'#11
   +#12'biSystemMenu'#0#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#22'Connect to'
   +' Database As'#12'ClientHeight'#3#236#0#11'ClientWidth'#3#132#1#10'OnActivat'
-  +'e'#7#12'FormActivate'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0'
-  +'.9.31'#0#6'TLabel'#6'Label1'#4'Left'#2#14#6'Height'#2#18#3'Top'#2'P'#5'Widt'
-  +'h'#2'>'#7'Caption'#6#8'Password'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4
-  +'Left'#2#14#6'Height'#2#18#3'Top'#2#30#5'Width'#2#31#7'Caption'#6#4'User'#11
-  +'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#14#6'Height'#2#18#3'Top'#2
-  +'}'#5'Width'#2#29#7'Caption'#6#4'Role'#11'ParentColor'#8#0#0#5'TEdit'#10'edP'
-  +'assword'#4'Left'#2'Y'#6'Height'#2#27#3'Top'#2'H'#5'Width'#3#176#0#8'EchoMod'
-  +'e'#7#10'emPassword'#12'PasswordChar'#6#1'*'#8'TabOrder'#2#1#0#0#7'TBitBtn'#7
-  +'BitBtn1'#4'Left'#2#14#6'Height'#2#30#3'Top'#3#168#0#5'Width'#2'K'#7'Caption'
-  +#6#3'&OK'#5'Color'#4#219#242#247#0#7'Default'#9#4'Kind'#7#4'bkOK'#11'ModalRe'
-  +'sult'#2#1#7'OnClick'#7#12'BitBtn1Click'#8'TabOrder'#2#3#0#0#7'TBitBtn'#7'Bi'
-  +'tBtn2'#4'Left'#2'f'#6'Height'#2#30#3'Top'#3#169#0#5'Width'#2'b'#6'Cancel'#9
-  +#7'Caption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'Kind'#7#8'bkCancel'#11'Mo'
-  +'dalResult'#2#2#8'TabOrder'#2#4#0#0#5'TEdit'#6'edUser'#4'Left'#2'Y'#6'Height'
-  +#2#27#3'Top'#2#24#5'Width'#3#176#0#8'TabOrder'#2#0#0#0#9'TComboBox'#6'cbRole'
-  +#4'Left'#2'Y'#6'Height'#2#29#3'Top'#2'r'#5'Width'#3#176#0#10'ItemHeight'#2#0
-  +#8'TabOrder'#2#2#0#0#0
+  +'e'#7#12'FormActivate'#6'OnShow'#7#8'FormShow'#8'Position'#7#14'poScreenCent'
+  +'er'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'#6'Label1'#4'Left'#2#14#6'Height'
+  +#2#18#3'Top'#2'P'#5'Width'#2'C'#7'Caption'#6#8'Password'#11'ParentColor'#8#0
+  +#0#6'TLabel'#6'Label2'#4'Left'#2#14#6'Height'#2#18#3'Top'#2#30#5'Width'#2' '
+  +#7'Caption'#6#4'User'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#14
+  +#6'Height'#2#18#3'Top'#2'}'#5'Width'#2#31#7'Caption'#6#4'Role'#11'ParentColo'
+  +'r'#8#0#0#5'TEdit'#10'edPassword'#4'Left'#2'Y'#6'Height'#2#27#3'Top'#2'H'#5
+  +'Width'#3#176#0#8'EchoMode'#7#10'emPassword'#12'PasswordChar'#6#1'*'#8'TabOr'
+  +'der'#2#1#0#0#7'TBitBtn'#7'BitBtn1'#4'Left'#2#14#6'Height'#2#30#3'Top'#3#168
+  +#0#5'Width'#2'K'#7'Caption'#6#3'&OK'#5'Color'#4#219#242#247#0#7'Default'#9#4
+  +'Kind'#7#4'bkOK'#11'ModalResult'#2#1#8'TabOrder'#2#3#0#0#7'TBitBtn'#7'BitBtn'
+  +'2'#4'Left'#2'f'#6'Height'#2#30#3'Top'#3#169#0#5'Width'#2'b'#6'Cancel'#9#7'C'
+  +'aption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'Kind'#7#8'bkCancel'#11'Modal'
+  +'Result'#2#2#8'TabOrder'#2#4#0#0#5'TEdit'#6'edUser'#4'Left'#2'Y'#6'Height'#2
+  +#27#3'Top'#2#24#5'Width'#3#176#0#8'TabOrder'#2#0#0#0#9'TComboBox'#6'cbRole'#4
+  +'Left'#2'Y'#6'Height'#2#29#3'Top'#2'r'#5'Width'#3#176#0#10'ItemHeight'#2#0#8
+  +'TabOrder'#2#2#0#0#0
 ]);

+ 6 - 4
enterpass.pas

@@ -21,8 +21,8 @@ type
     Label1: TLabel;
     Label2: TLabel;
     Label3: TLabel;
-    procedure BitBtn1Click(Sender: TObject);
     procedure FormActivate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
   private
     { private declarations }
   public
@@ -38,14 +38,16 @@ implementation
 
 procedure TfmEnterPass.FormActivate(Sender: TObject);
 begin
-  edPassword.SetFocus;
+  if Showing then
+    edPassword.SetFocus;
 end;
 
-procedure TfmEnterPass.BitBtn1Click(Sender: TObject);
+procedure TfmEnterPass.FormShow(Sender: TObject);
 begin
-
+  cbRole.ItemIndex:= -1;
 end;
 
+
 initialization
   {$I enterpass.lrs}
 

+ 787 - 35
main.lfm

@@ -537,7 +537,7 @@ object fmMain: TfmMain
     left = 180
     top = 82
     Bitmap = {
-      4C691D0000001000000010000000FFFFFE00FFFDFCFFFFFEFFFFFCFBFFFFFBFB
+      4C691E0000001000000010000000FFFFFE00FFFDFCFFFFFEFFFFFCFBFFFFFBFB
       FFFFFDFCFFFFF3F1FDFFFDFBFFFFFDFBFFFFF3F2FCFFFDFCFFFFFBFBFFFFFCFB
       FFFFFFFFFFFFFFFDFDFFFFFFFE00F4F2F1FFFFFFFFFFF9F8FAFFFFFEFFFFFDFC
       FFFFFDFCFFFFFAF8FFFFFAF8FFFFFAF8FFFFFAF8FFFFFDFCFFFFFDFDFFFFFFFE
@@ -1465,7 +1465,39 @@ object fmMain: TfmMain
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00
+      FF00FFFFFF00FFFFFF00FFFFFF009E9E9E759D9D9DF29C9C9CF79C9C9CF79C9C
+      9CF79C9C9CF79C9C9CF79C9C9CF79C9C9CF79C9C9CF79C9C9CF79C9C9CF79C9C
+      9CF79C9C9CF79D9D9DF49F9F9F8B9D9D9DF1FAFAFAFFFBFBFBFFFBFBFBFFFBFB
+      FBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFB
+      FBFFFBFBFBFFFBFBFBFF9C9C9CFB9C9C9CF7FFFFFFFFE2E2E2FFE3E3E3FFE4E4
+      E4FFE4E4E4FFE5E5E5FFE6E6E6FFE6E6E6FFE6E6E6FFE6E6E6FFE6E6E6FFE5E5
+      E5FFE5E5E5FFFFFFFFFF9C9C9CFC9C9C9CF7FFFFFFFF9B9B9BFF9B9B9BFF9B9B
+      9BFF9B9B9BFF9B9B9BFF9B9B9BFFE6E6E6FF4F4E48FF4F4E48FF4F4E48FF4F4E
+      48FFE5E5E5FFFFFFFFFF9C9C9CFC9C9C9CF7FFFFFFFF9B9B9BFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFF9B9B9BFFE8E8E8FF57554EFF57554EFF57554EFF5755
+      4EFFE6E6E6FFFFFFFFFF9C9C9CFC9C9C9CF7FFFFFFFF9B9B9BFFFFFFFFFFECEE
+      EEFFECEEEEFFFFFFFFFF9B9B9BFFEAEAEAFF5F5D54FF5F5D54FF5F5D54FF5F5D
+      54FFE8E8E8FFFFFFFFFF9C9C9CFC9C9C9CF7FFFFFFFF9B9B9BFFFFFFFFFFECEE
+      EEFFECEEEEFFFFFFFFFF9B9B9BFFECECECFF67645AFF67645AFF67645AFF6764
+      5AFFEAEAEAFFFFFFFFFF9C9C9CFC9C9C9CF7FFFFFFFF9B9B9BFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B
+      9BFFA0A0A0FFFFFFFFFF9C9C9CFC9C9C9CF7FFFFFFFF9B9B9BFF9B9B9BFF9B9B
+      9BFF9B9B9BFF9B9B9BFF9B9B9BFFA5A5A5FFFFFFFFFFFFFFFFFFFFFFFFFFFDFD
+      FDFF9F9F9FFFFFFFFFFF9C9C9CFC9D9D9DF7FFFFFFFFEAEAEAFF666359FF6663
+      59FF666359FF666359FFECECECFFA5A5A5FFFDFEFEFFECEEEEFFEDEFEFFFFDFD
+      FDFF9F9F9FFFFFFFFFFF9C9C9CFC9D9D9DF7FFFFFFFFEBEBEBFF6E6A5FFF6E6A
+      5FFF6E6A5FFF6E6A5FFFEDEDEDFFA5A5A5FFFDFEFEFFECEEEEFFEDEFEFFFFDFD
+      FDFF9F9F9FFFFFFFFFFF9C9C9CFC9D9D9DF7FFFFFFFFECECECFF757164FF7571
+      64FF757164FF757164FFEFEFEFFFA5A5A5FFFFFFFFFFFFFFFFFFFFFFFFFFFDFD
+      FDFF9F9F9FFFFFFFFFFF9C9C9CFC9D9D9DF7FFFFFFFFEDEDEDFF797567FF7975
+      67FF797567FF797567FFF1F1F1FF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B
+      9BFFA0A0A0FFFFFFFFFF9C9C9CFC9D9D9DF7FFFFFFFFEEEEEEFFF0F0F0FFF2F2
+      F2FFF4F4F4FFF6F6F6FFF8F8F8FFFAFAFAFFFBFBFBFFFAFAFAFFF9F9F9FFF7F7
+      F7FFF5F5F5FFFFFFFFFF9C9C9CFC9D9D9DF3FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFF9C9C9CFCA0A0A0849B9B9BFC9B9B9BFF9B9B9BFF9B9B
+      9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B9BFF9B9B
+      9BFF9B9B9BFF9B9B9BFDA1A1A19B
     }
   end
   object SQLQuery1: TSQLQuery
@@ -1482,53 +1514,485 @@ object fmMain: TfmMain
     object lmCreateDB: TMenuItem
       Tag = -2
       Caption = 'Create New Database'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000010808
+        080D313131333B3B3B413A3A3A413A3A3A413A3A3A413A3A3A413A3A3A413939
+        394139393941393939413A3A3A41333333320B0B0B0C00000000000000012727
+        27299C9C9CC4C1C1C1E9C1C1C1E7C2C2C2E7C3C3C3E7C3C3C3E7C4C4C4E7C5C5
+        C5E7C5C5C5E7C5C5C5E7C6C6C6E9A2A2A2C731313128FFFFFF00666666005050
+        501EC4C4C4DAECECECFFEDEDEDFFEFEFEFFFF1F1F1FFF3F3F3FFF6F6F6FFF8F8
+        F8FFF9F9F9FFF9F9F9FFF9F9F9FFCACACADF5454542161616100656565005E5E
+        5E1BC5C5C5D9EAEAEAFFEBEBEBFFEDEDEDFFF0F0F0FFF2F2F2FFF4F4F4FFF6F6
+        F6FFF8F8F8FFF8F8F8FFF7F7F7FFCACACADD5959591F5F5F5F006B6B6B006464
+        641CC7C7C7D9EAEAEAFFEBEBEBFFEDEDEDFFEFEFEFFFF2F2F2FFF4F4F4FFF6F6
+        F6FFF7F7F7FFF7F7F7FFF7F7F7FFCACACADD5959591F5F5F5F00717171006C6C
+        6C1CC8C8C8D9E7E7E7FFEBEBEBFFEDEDEDFFEFEFEFFFF1F1F1FFF3F3F3FFF4F4
+        F4FFF5F5F5FFF5F5F5FFF5F5F5FFC9C9C9DD5959591F5F5F5F00777777007272
+        721CC9C9C9D9E5E5E5FFEAEAEAFFECECECFFEEEEEEFFF0F0F0FFF1F1F1FFF3F3
+        F3FFF3F3F3FFF3F3F3FFF4F4F4FFC9C9C9DD5959591F5F5F5F007D7D7D007878
+        781CCCCCCCD9E8E8E8FFE9E9E9FFEBEBEBFFEDEDEDFFEEEEEEFFF0F0F0FFF1F1
+        F1FFF2F1F1FFF2F1F1FFF3F2F2FFC9C9C9DD5B5B5B1F60606000838383007E7E
+        7E1CCECECED9E7E7E7FFE8E8E8FFE9E9E9FFEBEBEBFFEDEDEDFFEEEEEEFFEFEF
+        EFFFECEFEFFFE1EFF0FFDEF0F1FFBFCACBDE5D63631F60676700888888008585
+        851CCECECED9E3E3E3FFE7E7E7FFE8E8E8FFEAEAEAFFEBEBEBFFECECECFFE3ED
+        EDFFB8EFF1FF8FF0F5FF86F1F7FF7DD7DBE52DBAC03800FFFF018E8E8E008B8B
+        8B1CD0D0D0D9E2E2E2FFE6E6E6FFE6E6E6FFE8E8E8FFE9E9E9FFE7EAEAFFB8ED
+        EFFF6EF0F7FF52F3FBFF54F4FCFF44E8F0F119E7F27805F7FF1A949494009191
+        911CD2D2D2D9E3E3E3FFE4E4E4FFE5E5E5FFE6E6E6FFE8E7E7FFDDE9E9FF90ED
+        F2FF51F3FBFF81F8FEFF9EF9FEFF5CF2FAFA1CF1FCA90BF4FF3E989898009696
+        961CD3D3D3D9E2E2E2FFE3E3E3FFE3E3E3FFE4E4E4FFE6E5E5FFD8E7E8FF87EC
+        F1FF51F3FBFF96F9FEFFBBFBFEFF6AF4FBFB1FF2FDB20BF4FF469C9C9C009A9A
+        9A1CD4D4D4DAE2E2E2FFE2E2E2FFE3E3E3FFE4E4E4FFE5E5E5FFDFE6E6FFA2EA
+        EEFF5BF1F8FF5DF5FDFF6CF6FEFF48EEF6F619EDF89209F5FF2B9C9C9C009797
+        9713C9C9C9AED9D9D9D8D9D9D9D5D7D7D7D5D5D5D5D5D3D3D3D5D2D2D2D5B4D2
+        D4D674DBE0DC4BE2EAE445E4ECE742D7DFCC19E0EA4B00FEFF09959595008C8C
+        8C019C9C9C14A6A6A61EA6A6A61DA0A0A01D9999991D9292921D8B8A8A1D8189
+        891E45B8BE2B24D7E0451FDBE44E20D3DB340BE6F00A1FD1D800
+      }
       OnClick = lmCreateDBClick
     end
     object lmRegdb: TMenuItem
       Tag = -2
       Caption = 'Register Database'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000010A0A
+        0A0E323232343B3B3B413A3A3A413A3A3A413A3A3A413A3A3A41393939413939
+        394139393941393939413A3A3A41323232310909090B00000000000000003030
+        302CA0A0A0C8C1C1C1E9C1C1C1E7C2C2C2E7C2C2C2E7C3C3C3E7C4C4C4E7C5C5
+        C5E7C5C5C5E7C5C5C5E7C6C6C6E9A1A1A1C32A2A2A25FFFFFF006C6C6C005B5B
+        5B23C8C8C8E0ECECECFFEDEDEDFFEFEFEFFFF1F1F1FFF3F3F3FFF5F5F5FFF7F7
+        F7FFF9F9F9FFF9F9F9FFF9F9F9FFCACACAD94F4F4F1D606060006A6A6A006868
+        6820C9C9C9DFEAEAEAFFEBEBEBFFE2E2E2FFDDDDDDFFDFDFDFFFE1E1E1FFE4E4
+        E4FFF1F1F1FFF3F3F3FFF6F6F6FFCACACAD85555551B5D5D5D00707070006E6E
+        6E20CBCBCBDFEAEAEAFFECECECFFDFDFDFFFD7D7D7FFD9D9D9FFDBDCDCFFDDDD
+        DDFFDEDEDEFFE2E2E2FFF4F4F4FFC9C9C9D85555551B5D5D5D00767676007474
+        7420CCCCCCDFEAEAEAFFE4E2E1FFD8D6D6FFD8D8D8FFDADADAFFD3D1CFFFD7D5
+        D5FFDCDCDCFFDFDFDFFFF2F2F2FFC9C9C9D85555551B5D5D5D007C7C7C007A7A
+        7A20CECECEDFEAEBEBFFCDC0BBFFAE978DFFD1CECDFFCDC6C3FFAA9186FFD2CC
+        C9FFE8E9E9FFE9E9E9FFF2F2F2FFC8C8C8D85555551B5D5D5D00828282008080
+        8020D0D0D0DFE9EAEAFFCDC0BBFFB2927FFFAE9486FFB19585FFAF917FFFD3CC
+        CAFFEEEEEEFFEDEDEDFFF1F1F1FFC8C8C8D85757571B5F5F5F00878787008686
+        8620D1D1D1DFE8E9E9FFCCBFB9FFB59680FFB99A82FFBA9B83FFAD8F7DFFBFB9
+        B6FFD9DADAFFDCDCDCFFEDEDEDFFC9C8C8D85B5B5B1B626262008D8D8D008C8C
+        8C20D2D2D2DFE7E8E8FFCABDB7FFB08F79FFB4947AFFB5947BFFA88976FFB9B3
+        B1FFD7D8D8FFDAD9D9FFEBEBEBFFC8C9C9D85E5D5D1B65646400939393009292
+        9220D4D4D4DFE6E7E7FFC7BAB4FFA4846EFFA6866DFFA6866DFF9F806DFFB5AF
+        ADFFD5D6D6FFC5DADBFFB1ECEFFF8CD5D9E02BBBC23400FFFF01989898009898
+        9820D5D5D5DFE5E5E6FFC4B7B0FF977862FF94765EFF95765EFF947764FFB4AD
+        AAFFC6D7D8FF80E3E8FF5BF2F9FF4CECF4F41DEDF88E09F5FF269C9C9C009C9C
+        9C20D5D5D5DFE3E4E4FFC1B4AEFF95745EFF927159FF927259FF937461FFB3AC
+        A9FFADDADDFF59EBF2FF84F8FEFF92F7FCFD36F4FECB0DF4FF56A0A0A000A0A0
+        A021D6D6D6DFE3E4E4FFC0B3ACFF99765CFF9A7659FF9A765AFF977660FFBEB6
+        B4FFBDE7E9FF61F0F7FF7DF8FEFF88F7FCFD33F4FDC70DF4FF529F9F9F009D9D
+        9D17CBCCCCB9D7D4D4E3B29C91FAA88771FFAE8F76FFAE8F77FFA1816DFBB2AA
+        A7E2C2D2D3DD76D9DEE148E5EDEA3BE5EEDD19EFFA7D09F4FF1F969696009090
+        9002A2A4A51A98878032957161C1AB8C7BFFAE907FFEAF917FFFA17F6EDC816B
+        623D8385862351AAAE2E24D5DD4A18E0E9480AF0FB1B00F7FF01
+      }
       OnClick = lmRegdbClick
     end
     object lmRestore: TMenuItem
       Tag = -2
       Caption = 'Restore Database'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        20000000000000040000640000006400000000000000000000000000000B9C9F
+        9E7DBEC0BFC4BEC0BFC2BDC0BFC2BDBFBFC2BEC1C0C2BDBFBEC2BCBFBEC2BCBF
+        BEC2BCBFBEC2BCBFBEC2BCBFBEC2BCBFBEC49EA1A07B0000000900000007C1C3
+        C2A7EAEBEBFFE9EAEAFFE8E9E9FFE9E9E9FFD1D3D3FFBCBEBEFFE4E6E6FFE3E6
+        E6FFE2E5E5FFE1E4E4FFE0E4E3FFE1E5E4FFC0C2C2A60000000600000003C7C9
+        C8A2ECECECFFEBEBEBFFEBEBEBFFCBCCCBFF747776FF8D908FFFDCDDDDFFDDDE
+        DEFFDEE0E0FFE0E2E2FFDFE2E3FFE0E3E3FFC4C7C6A20000000300000003C7C9
+        C9A2EEEEEEFFEDEDEDFFC1C2C2FF6C6F6DFF515553FF606361FF777A78FF9497
+        96FFB7BAB9FFD7D9D9FFE2E4E4FFE2E4E4FFC5C8C7A20000000300000003C8CA
+        C9A2EEEEEEFFB5B7B6FF626664FF515553FF535755FF525654FF595D5BFF7F82
+        81FFACAEAEFFD6D7D7FFE4E5E5FFE4E5E5FFC5C8C7A20000000300000003C8CB
+        CAA2EEEFEFFFA4A6A5FF585C5AFF525654FF535755FF525654FF5A5E5CFF8083
+        82FFAEAFAFFFD8D8D8FFE6E6E6FFE5E6E6FFC6C8C7A20000000300000003C8CB
+        CAA2F3F4F4FFEEEFEFFFAFB1B0FF5F6361FF515553FF585C5AFF676B69FF8B8D
+        8CFFB4B6B5FFDBDBDBFFE7E8E8FFE7E7E7FFC6C8C7A20000000300000003C9CB
+        CAA2F4F5F5FFF5F6F6FFF3F4F4FFC0C2C1FF676B69FF898C8AFFD5D6D6FFDADB
+        DBFFE1E2E2FFE8E8E8FFE9E9E9FFE8E9E8FFC6C9C8A20000000300000003C9CB
+        CBA2F5F6F6FFF5F6F6FFF4F5F5FFF4F4F4FFCBCDCCFFB6B8B7FFF0F0F0FFF0F0
+        F0FFEEEFEFFFEDEDEDFFEBEBEBFFEAEAEAFFC7C9C8A20000000300000003C9CB
+        CBA2F5F6F6FFD9D9D9FFC7C7C7FFC7C8C8FFC7C8C8FFC3C4C3FFC6C6C6FFE5E5
+        E5FFF0F1F1FFEEEFEFFFEDEDEDFFECECECFFC7CAC9A20000000300000003C9CB
+        CBA2F5F6F6FFDADBDBFFC9C9C9FFCACACAFFC9CACAFFC9CACAFFDDDDDDFFF0F1
+        F1FFF2F2F2FFF0F1F1FFEFEFEFFFEDEEEEFFC8CAC9A20000000300000003C9CB
+        CBA2F5F6F6FFDADBDBFFC9C9C9FFCACACAFFCACACAFFCACACAFFE1E2E2FFF5F6
+        F6FFF3F4F4FFF2F3F3FFF1F1F1FFEFF0F0FFC8CACAA20000000300000003C9CB
+        CBA2F5F6F6FFD8D8D8FFC6C6C6FFC6C7C7FFC6C7C7FFC6C6C6FFD2D3D3FFF4F5
+        F5FFF5F6F6FFF4F5F5FFF3F4F4FFF1F2F1FFC9CBCAA20000000300000003C9CC
+        CBA2F5F6F6FFD7D8D8FFC4C5C5FFC5C5C5FFC5C5C5FFC5C5C5FFC7C8C8FFEAEB
+        EBFFF8F9F9FFF6F7F7FFF5F6F6FFF3F3F3FFC9CBCAA20000000300000003C8CA
+        C9A2F3F4F4FFEDEEEEFFE8E9E9FFE8E9E9FFE8E9E9FFE8E9E9FFE9EAEAFFF2F3
+        F3FFF6F7F7FFF5F6F6FFF5F6F6FFF3F3F3FFC8CAC9A20000000300000001AEB2
+        B070C8CAC9BCCACCCBBACACCCCBACACCCCBACACCCCBACACCCCBACACCCCBAC9CC
+        CBBAC9CBCABAC9CBCBBAC9CBCBBAC8CAC9BCAFB2B17000000001
+      }
       OnClick = lmRestoreClick
     end
     object lmRefresh: TMenuItem
       Tag = 100
       Caption = 'Refresh'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000000000
+        0000000000000000000200000005000000080000000B0000000C0000000C0000
+        000B000000080000000500000002000000000000000000000000000000000302
+        010200000008000000120000001B00000022000000260100002B160C04312616
+        0A31170D05280100001B000000120000000B0000000300000000000000016840
+        211A74472440020100230000002D20130A436B482C75986A43A8AA784BC6AF7A
+        4BCFAA7445C09563388F59381D42000000190000000E00000004000000008657
+        3329B4845EB975513557724D3065AE7F56C6C49164F7C99564FFCA9461FFC992
+        5EFFC88F5AFFC38953FFB37A46D581522C4E0000000C00000004BB7A4700A068
+        3D1FD0AA8ADCCAA381E2CCA27EECCF9F73FFCC9969FFCA9767FFC69161F8C089
+        58E9BF8553F4C28B59FFC28853FFB57A46C18A552B17EC944D00AB6F4100A96E
+        401DD2AC8BDBDEBD9DFFDCB998FFD7B08CFFCA9B70EDBC8759A3AA734654965E
+        322FB7754053D2A57FC6CB9F7AD0B97F4BE9AD6F3C49B0723F00AA6F4000A86D
+        3F1DD2AC8BDBDDBA9AFFDDBB9AFFCFA785E8B27C50508F471205A4653400C676
+        350000000000DCB28E53E9D1BC60B57D4F92A96B3967AE713E00AA6E3F00A86C
+        3D1DD1AC8CDBDDBC9DFFDDBB9CFFD6B393F7BC8B637487360004A56636000000
+        0000EBD4BF00E5C6AA16FCF0E310A4653335A4653453A4653400A7693A00A567
+        3715BE8E6891C99F7CA4C99E7BA4C99F7CA8B9855C96A3623121A05F2D09AE74
+        464EBA865D5DBA875E5DBB885F5BB5805668A96D3E36AB714200A4653400A364
+        3320AD704163C7906625AD6E41185E0A00048A411E04A56735028C410704B57F
+        5376CDA27DF3D0A47DFDCFA27AFDCEA37DF9B8855C58C1926C00A86B3B00A76A
+        3B2EB47B4EC3C48E649DB57B4E6D8E481204A464330000000000A76A3A009B57
+        2713C09068B7D2A77EFFCFA073FFCFA27AFDBA875F5BC4967100AB704100AC72
+        441FC29570DBBB865CFAB07345CC9E5C292A000000019753220DB47E543CC395
+        6E9CCEA47DEFD2A67CFFD1A276FFCFA279FDB9865C5CC3956F00A66737008431
+        0006C99F7EA4D7B69AFFC49772FEBC8B64D3C59A77A5CFA989BFD7B698EDDEBE
+        A1FFDCB897FFD4AB85FECDA17AF7CFA47EFCB9865C5DC4956E0099531E00C091
+        6C00B37D5236D4B194D7E5CDB7FFE5CCB6FFE4CAB3FFE5CAB2FFE4C9AFFFE1C3
+        A8FFD8B698F6C79B77AEB27B4F59C2926ACAB6805561BE8C6300000000009046
+        120000000000B37E5335CAA281A5D7B699E0DABBA0EFD9B89CEED3AF8FDBC89E
+        7BA9B9855C559F5D2E0EC08A5500A86B3C39A76A3A3CA96D3E00000000000000
+        000013000000C3783900914D1D09AC72452AB47F5443B37C513FA96C3D258D46
+        1508CA85380040000000A1612F00A1613001A36332039F5E2C00
+      }
       OnClick = lmRefreshClick
     end
     object lmConnectAs: TMenuItem
       Caption = 'Connect As'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000010000
+        0003000000060000000600000006000000060000000600000006000000060000
+        00060000000600000007000000060000000500000002000000007373733D8080
+        80617C7C7C697979796A7878786A7777776A7676766A7575756A7373736A7272
+        726A7171716A7070706A6F6F6F69717171676B6B6B464646460F9898989EC0C0
+        C0EDC3C3C3F3BFBFBFF3BBBBBBF3B8B8B8F3B5B5B5F3B1B1B1F3AEAEAEF3ABAB
+        ABF3A7A7A7F3A4A4A4F3A3A3A3F3A3A3A3F4919191B85A5A5A2BA0A0A080C7C7
+        C7F2C4C4C4FFBEBEBEFFBABABAFFB7B7B7FFB4B4B4FFB2B2B2FFB2B2B2FFB4B4
+        B4FFACACACFFA8A8A8FFA7A7A7FFAAAAAAFF999999AF6565651C9898984EC4C4
+        C4E0C6C6C6FFC2C2C2FFC2C2C2FFC1C1C1FFBFBFBFFFB8B8B8FFB8B8B8FFB7B7
+        B7FFBBBBBBFFB5B5B5FFB7B7B7FFB2B2B2FC9797978B5B5B5B0B8A8A8A2DC1C1
+        C1C6C9C9C9FFBFBFBFFFBDBDBDFFBCBCBCFFBBBBBBFFB9B9B9FFB7B7B7FFBABA
+        BAFFBBBBBBFFB8B8B8FFB4B4B4FFB2B2B2F59393936B2C2C2C0372727215BBBB
+        BBA3D1D1D1FEBFBFBFFFBDBDBDFFBCBCBCFFBBBBBBFFBABABAFFBABABAFFC3C3
+        C3FFBFBFBFFFBAB9B9FFB9B9B9FFB3B3B3E88F8F8F490000000046464607AEAE
+        AE7DCECECEFAC8C8C8FFC6C6C6FFC5C5C5FFC4C4C4FFC2C2C2FFC3C3C3FFC7CB
+        CBFFB8CDCDFFB3CBCBFFBAC8C8FFB5B5B5D58888882E00000000000000009E9E
+        9E53D3D3D3EBE1E1E1FFDEDEDEFEDBDBDBFED9D9D9FED6D6D6FED4D4D4FECAD0
+        D0FEA7CDCDFEA0CBCBFEB0C9C9FEB0B0B0B47A7A7A17000000002B2B2B008888
+        881EAEAEAE87B8B8B8B5BCBCBCA3BCBCBC9DBBBBBB9DB9B9B99DB8B8B89DB5B6
+        B69DAFB3B39DADB1B19DABADAD9A9A9A9A566363630600000000000000003D3D
+        3D0173737312848484477C7C7C1F6666660B6868680C6868680C6969690C6B6A
+        6A0C736D6D0C756D6D0C6B66660B52525204FFFFFF0000000000000000007676
+        76008B8B8B028C8C8C318C8C8C2A8787870293939300AFAFAF008A8A8A048B8B
+        8B088B8B8B088A8A8A0472777700828282004D4D4D0000000000000000000000
+        00008C8C8C008C8C8C108C8C8C378C8C8C258C8C8C158C8C8C178C8C8C1A8C8C
+        8C158C8C8C0C8C8C8C078C8C8C02000000000000000000000000000000000000
+        00008C8C8C008C8C8C008C8C8C0E8C8C8C218C8C8C218C8C8C198C8C8C0B8C8C
+        8C038C8C8C008C8C8C008C8C8C00000000000000000000000000000000000000
+        0000000000008C8C8C008C8C8C008C8C8C018C8C8C028C8C8C018C8C8C008C8C
+        8C008C8C8C008C8C8C008C8C8C00000000000000000000000000000000000000
+        000000000000000000008C8C8C008C8C8C008C8C8C008C8C8C008C8C8C000000
+        0000000000000000000000000000000000000000000000000000
+      }
       OnClick = lmConnectAsClick
     end
     object lmDisconnect: TMenuItem
       Caption = 'Disconnect and Close all windows'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        20000000000000040000640000006400000000000000000000007F8482FF7F84
+        82FF7F8482FF7F8482FF7F8482FF7F8482FF7F8482FF7F8482FF5F628AFF1F20
+        9DFF0000A5F20000A5F20000A7C00000A44000000000000000007F8482FFD9D9
+        D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FF6666BEFF1212ACFF3636
+        CCFF4848D7FF4848D6FF3535CAFF0A0AAAF40000A686000000007F8482FFF3F3
+        F3FFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFB0B0D9FF1414ADFF4C4CDEFF2828
+        D8FF0D0DD2FF0B0BD0FF2121D3FF4545D7FF0A0AAAF40000A4407F8482977F84
+        82FF7F8482FF7F8482FF7F8482FF7F8482FF1D1E9EFF4B4BD5FF4949E2FF1010
+        D7FF0B0BD5FF0808D3FF0606D1FF2323D5FF3535CBFF0000A6C57F8482FFD6D6
+        D6FFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFF0B0BA9FF7B7BE8FFECEDF1FFF0F2
+        F2FFEEF0F0FFECEEEEFFECEEEEFFEDEFEFFF6262DDFF0506A3FF7F8482FFEDED
+        EDFF784836FF784836FF784836FF784836FF0503A0FF7676E9FFEBECF1FFF0F1
+        F1FFF0F2F2FFF0F1F1FFEFF1F1FFF0F2F2FF7474E2FF0506A3FF7F8482FFEEEE
+        EEFF784836FF8F6349FF906249FF906249FF221792FF5858DBFF6464ECFF4B4B
+        E8FF4949E6FF4747E5FF4545E2FF5A5AE4FF5555D6FF1C1E9EFF7F8482FFEEEE
+        EEFF784836FFA88775FF9A725DFF936953FF68465DFF1210A7FF7979EDFF6666
+        ECFF5050E9FF4F4FE7FF6060E9FF7474E8FF1415ABFF4B4E8F9E7F8482FFEEEE
+        EEFF784836FFA68472FFA58472FFA68472FFA68472FF392371FF1717AFFF5B5B
+        DDFF7878EBFF7878EBFF5A5ADBFF1919AFFF6666BDFF7F8482FF7F8482FFEDED
+        EDFF784836FF784836FF784836FF784836FF784836FF784836FFB3B3DCFF1E1F
+        9FFF0604A0FF0604A0FF1C118EFF593551FFEDEDEDFF7F8482FF7F8482FFC7C8
+        C8FFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFD6D6D6FF7F84
+        82FF906249FF906249FF906249FF784836FFEDEDEDFF7F8482FF7F8482AC7F84
+        82FF7F8482FF7F8482FF7F8482FF7F8482FF7F8482FF7F8482FF7F8482FF8F85
+        7CFF9A725DFF936953FF8B5E46FF784836FFEEEEEEFF7F8482FF000000000000
+        0000000000000000000000000000000000007F8482FFEEEEEEFF784836FFA684
+        72FFA58472FFA68472FFA68472FF784836FFEEEEEEFF7F8482FF000000000000
+        0000000000000000000000000000000000007F8482FFEDEDEDFF784836FF7848
+        36FF784836FF784836FF784836FF784836FFF0F0F0FF7F8482FF000000000000
+        0000000000000000000000000000000000007F8482FFC7C8C8FFEDEDEDFFEDED
+        EDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFD6D6D6FF7F8482FF000000000000
+        0000000000000000000000000000000000007F8482AC7F8482FF7F8482FF7F84
+        82FF7F8482FF7F8482FF7F8482FF7F8482FF7F8482FF7F848297
+      }
       OnClick = lmDisconnectClick
     end
     object lmOpenQuery: TMenuItem
       Caption = 'Open Query Window'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000020303030000
+        000B000000100000001000000010000000100000001000000010000000100000
+        0010000000100000001000000010000000100000000C010202049C9F9E77B1B3
+        B2B0AEB0AFB3AEB0AFB3ADAFAFB3ADAFAEB3ADAFAEB3ADAFAEB3ADAFAEB3ADAE
+        AEB3ACAEADB3ACAEADB3ACAEADB3ACAEADB3AEB0AFB1989C9A7ABBBDBCBAE3E4
+        E4FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4
+        E4FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFE3E3E3FFB9BBBABDB9BCBBB3DEDE
+        DEFFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5
+        E5FFE5E5E5FFE5E5E5FFE5E5E5FFE3E3E3FFDBDBDBFFB8BAB9B5999D9B39B1B4
+        B396DEDFDFFDE4E4E4FFE3E3E3FFE3E3E3FFE3E3E3FFE3E3E3FFE3E3E3FFE3E3
+        E3FFE3E3E3FFE3E3E3FFE4E4E4FFD1D2D2EBA5A8A6719B9F9D3BC0C2C100AEB1
+        AF5ADADBDBFCDFDFDFFFDEDEDEFFDEDEDEFFDEDEDEFFDEDEDEFFDEDEDEFFDEDE
+        DEFFDEDEDEFFDEDEDEFFE0DFDFFFCECFCEDF8F93912190949200C1C3C300AFB2
+        B15BD8D8D8FDD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9
+        D9FFD9D9D9FFD8D9D9FFD7DADBFFCCCECDE09295922292959300C1C3C200AFB2
+        B15BD4D5D5FDD4D4D4FFD4D4D4FFD3D3D3FFD3D3D3FFD3D3D3FFD3D3D3FFD4D3
+        D3FFC9D5D5FFA4DBDEFF8FE0E4FF93D7DAE361B8BA2B7FA2A200C0C3C200AEB1
+        B05BD1D1D1FDCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCECECEFFCACE
+        CEFF96D9DCFF59E9F1FF58F0F8FF4DEAF2F021E8F16000FFFF06B5B8B700A9AD
+        AB4FCECFCEF8CFCFCFFFCECECEFFCECECEFFCECECEFFCECECEFFCFCECEFFC3D0
+        D1FF72E1E6FF64F3FAFFA9F9FDFF65F4FBF71AF2FD8D04F4FF16969A99009297
+        9512B5B7B67EBFC1C0A6BFC1C0A6BFC1C0A6BEC1C0A6BFC1C0A6BFC1C0A6B2C4
+        C4A85BDDE3C650F2FAEE86F7FDF950F5FDE416F4FF7D05F3FF11000000000006
+        030000050301000A0503000C070304100B0306110D0306110D0307090303084E
+        4C040DECF6321AF3FE8B25F4FFB31BF4FF910DF3FF3700F3FF02000000000000
+        00000000000000000000000000000000000000000000000000000000000004F3
+        FF0002F4FF0308F3FF1A09F3FF2C08F3FF1C04F3FF0406F3FF00000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000
+      }
       OnClick = lmOpenQueryClick
     end
     object lmScriptDatabase: TMenuItem
       Caption = 'Script Database '
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        20000000000000040000640000006400000000000000000000000C0D0C03575B
+        5A225A60603D565B5B40565A5B40565A5B405356554052545340525453405254
+        544055595940565B5B40565A5B40585D5E3F5C605F2F3C3E3C0A74797819BCBD
+        BBB5C7C0BBE6C3BCB5E5C3BCB5E5C4BCB5E5CFCECCE5D3D5D4E5D3D4D4E5D2D3
+        D2E5C6C0BBE5C3BBB4E5C3BCB5E5C5BDB6E5C5C3C0D7989C9B4C959D9E25CEC8
+        C2DDA47656FF96603BFF96613CFFB7947BFFEFEBE8FFF6F6F6FFF6F6F6FFF5F5
+        F4FFCDB6A6FF9B6744FF96603BFF98633FFFC8B5A8FBB3B9B96897A0A024CCC4
+        BDDD96603BFF85461BFF8C522AFFCFBAABFFF5F5F5FFF4F4F3FFF4F4F3FFF5F5
+        F5FFE5DCD6FF9B6946FF85471CFF884B21FFC2AC9CFBB4BABB67979FA024CBC4
+        BDDD97623DFF8D532BFF9B6A47FFBE9F8AFFE9E3DEFFF3F4F2FFF3F3F2FFF0EE
+        EBFFCEB9A9FFA47858FF905932FF8B4F26FFC1AC9CFBB4BABB67969FA024CBC4
+        BDDDB7947BFFD0BCADFFBFA28DFFD0BDAEFFE9E4DEFFF3F3F0FFF3F3F0FFEEEC
+        E8FFD9CBBFFFC1A591FFCBB5A4FFBEA089FFC6B3A4FBB3B9B96791979624D6D6
+        D2DDECE9E3FFF3F3F0FFE9E4DDFFE9E4DEFFF1F1EDFFF2F2EEFFF2F2EEFFF2F2
+        EEFFEDEAE5FFE6E0D8FFF1F0EDFFF0EEE9FFE1DED9FBB0B3B26790959324DADC
+        D9DDF3F3EFFFF1F1EDFFF1F2EDFFF1F1EDFFF1F1EDFFF1F1EDFFF1F1EDFFF1F1
+        EDFFF1F1EDFFF1F1EDFFF1F1EDFFF2F2EEFFE8E9E6FBAFB2B16790959424DADB
+        D8DDF2F2ECFFF0F0EBFFF0F1EBFFF0F1EBFFF0F0EBFFF0F0EBFFF0F0EBFFF0F0
+        EBFFF0F0EBFFF1F1EBFFF0F0EBFFF1F1ECFFE7E8E4FBAFB2B16791969524D8D9
+        D6DDF0F0E9FFF0F1EBFFEDEBE4FFECEAE3FFF0F0E9FFF0F0E9FFEFEFE9FFF0F0
+        E9FFEEEDE6FFEBE9E1FFF0F0EAFFF0F0EAFFE5E5E0FBAFB2B167959D9E24CDC7
+        BFDDC9B29FFFE1D9CEFFCCB8A6FFD7C8B9FFEAE7DEFFEFEFE8FFEFEFE8FFEDEB
+        E4FFDED4C7FFCBB7A4FFDCD1C4FFD2C1B0FFCCBEB0FBB2B7B66797A0A124C9C1
+        B9DD9A6743FF9B6A46FFA37756FFBEA189FFE2DACEFFEEEEE6FFEEEFE6FFE9E7
+        DDFFCAB4A0FFAA8264FF9D6D4AFF935D36FFBFAA98FBB4BABA6797A0A124CAC2
+        B9DD96603BFF85471DFF8F572FFFC6AF99FFECECE2FFEDEDE4FFEDEDE4FFEEEE
+        E5FFDACEBFFF9C6B48FF87491FFF884B21FFC0AB99FBB4BAB96797A0A025CBC3
+        BADD97633DFF884B20FF8A4E25FFBA9B81FFEBE9DEFFEEEEE4FFEEEEE4FFEEEE
+        E4FFD1BFACFF925C35FF884B21FF8A4E25FFC1AC9AFBB4BAB9688F96951ECAC8
+        C3D0C6B3A3FDC0AA98FBC0AA98FBC4B19FFBDEDBD2FBE5E6E0FBE5E6DFFBE4E3
+        DCFBCCBDAEFBBFAA97FBC0AB98FBC1AC9AFBCEC7BEF2ACB0AF5B7C817E05A5AA
+        A846B3B9B869B4BAB967B4BAB967B3B9B867B0B3B267AFB2B067AFB2B067AFB2
+        B167B2B7B667B4BAB967B4BAB967B4BAB968ACB0AF5B93989615
+      }
       OnClick = lmScriptDatabaseClick
     end
     object lmBackup: TMenuItem
       Caption = 'Backup/Restore Database'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000000000
+        000000000001000000035A5C5B08696E6C9F6B706EFF6B706EFF6B706EFF6B70
+        6EFF6A6F6D9D6B706E3300000000000000000000000000000000000000000000
+        000000000000696C6B4C6B706EDD888C8BFFD2D3D2FFEFF0F0FFF2F2F2FFD5D6
+        D5FD6B706EFF6B706ED56B706E5C0000000000000000000000006B706E806B70
+        6EFF696D6BFF6B706EFFC3C5C4FFFFFFFFFFFFFFFFFFE3E3E3FFDDDDDDFFDEDE
+        DEFFEBEBEBFF8E9190FF6B706EFF6B706EFF6A6F6DFF6B706E806B706EFFBABB
+        BBFF808583FFC7C9C9FFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6
+        C6FFC7C7C7FFE3E3E3FFA0A2A1FF727775FFCACACAFF6B706EFF6A6F6DFFAAAB
+        ABFF6B706EFFFBFBFBFFF7F7F7FFEEEFEFFFDADCDBFFAAADACFFAFB1B0FFFFFF
+        FFFFBCBCBCFFCECECEFFE7E7E7FF6B706EFFBFBFBFFF6B706EFF696D6CFFD4D4
+        D4FF6B706EFF6B706EFF6B706EFF6B706EFF6B706EFF6B706EFF6B706EFF6B70
+        6EFF6B706EFF6B706EFF6B706EFF6B706EFFADADADFF6B706EFF6B706EFFCECE
+        CEFFC9C9C9FFC9C9C9FFC9C9C9FFC9C9C9FFC9C9C9FFC9C9C9FFC9C9C9FFC9C9
+        C9FFC9C9C9FFC9C9C9FFC9C9C9FFC9C9C9FFD6D6D6FF6B706EFF6B706EFFFEFE
+        FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4
+        F4FFF4F4F4FFEBEBEBFFEBEBEBFFE3E3E3FFF0F0F0FF6B706EFF6B706EFFF7F7
+        F7FFE5E4E5FFE4E4E5FFE5E5E5FFE5E5E4FFE4E4E5FFE4E5E5FFE4E5E5FFE5E4
+        E4FFE4E5E5FFE4E5E4FFE4E4E4FFE4E4E4FFF0F0F0FF6B706EFF6B706EFFF9F9
+        F9FFE6E7E6FFE6E7E7FFE6E6E6FFE7E7E6FFE7E7E6FFE7E7E7FFE6E6E6FFE7E6
+        E6FFE6E6E7FFE6E7E6FFE6E6E6FFE6E6E6FFF1F1F1FF6B706EFF6B706EFFF9F9
+        F9FFE8E8E8FFE9E8E8FFE8E8E9FFE9E8E9FFE8E8E9FFE8E8E9FFE8E8E8FFE8E8
+        E8FFE8E9E8FFE8E8E9FFE8E8E9FFE8E8E9FFF1F1F1FF6B706EFF6B706EFFFAFA
+        FAFFEBEAEAFFEAEAEAFFEAEBEAFFEAEAEAFFEAEAEAFFEAEAEBFFEBEAEAFFEAEA
+        EAFFEAEAEAFFEAEBEAFFEAEAEAFFEAEAEAFFF2F2F2FF6B706EFF6B706EFFFCFB
+        FCFFECEBECFFECECECFFECECECFFECECECFFECECECFFECECECFFECECECFFECEC
+        ECFFECECECFFECECECFFECECECFFECECECFFF3F3F3FF6B706EFF6B706EFFFDFD
+        FDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDED
+        EDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFF3F4F3FF6B706EFF6B706EFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4FF6B706EFF6B706E806B70
+        6EFF6B706EFF6B706EFF6B706EFF6B706EFF6B706EFF6B706EFF6B706EFF6B70
+        6EFF6B706EFF6B706EFF6B706EFF6B706EFF6B706EFF6B706E80
+      }
       OnClick = lmBackupClick
     end
     object lmSweep: TMenuItem
       Caption = 'Sweep DB'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000000000
+        0000000000000000000000000000000000010000000300000005000000050000
+        000300000001000000000000000000000000000000000000000007783F000677
+        3E0B2189544F298C59602786556325825367257F516A247D506C247D506C257F
+        516A2682536727865663288B59611A834E3A00260001016733000E7D4500127D
+        47203AA770DE33B472FF31B572FF30B672FF2EB570FF2CB36EFD2AB06CFE29AD
+        6AFF28A967FF27A765FF2EA769FF319A64A3000A0003007037000D7D44000F7C
+        441C3BA26EC23EAF75E03CB276DF3CB376DE39B174E548BF83FE40B87BFA33AC
+        6EE032AA6DDE30A76ADF33A56BE22C96608E000E000201743A0003763C000175
+        3A040F7C451C197F4B201A7F4C1F117743242C9A639B34C179FF36BB78F52490
+        5970157D481E1B834E2018814C210A7A421400520E0002753B00000000000000
+        000000000000066B3200000000012D98626231BB75F015C76DFF1DCD74FF37BB
+        78D8228C563739AD7600005B2000000000000000000000000000000000000000
+        000000561A00A0FFED002B915D4B33B171E616BD68FF11C369FF12C86CFF21C6
+        72FF35AE71C51A814C2424965E0000220000000000000000000000000000005C
+        1C0047A97C00288A57354FB17FD72BB870FF0CB45FFF0FBA63FF10BD65FF0FBB
+        63FF23B96CFF32A36AAC0E76401416834C00000000000000000001743A003595
+        65002388552456AE81C456BD88FF3DB97AFF20B368FF0FB15EFF0CB15DFF0CB0
+        5CFF0CAD5BFF28AD69FD319B65920171380A0F7F46000000000002753B00005D
+        1C082F915F8D5FB287E35AB486EC53BA85FF39B475FF27AF69FF12A95CFF0AA5
+        56FF2AAB69FB31A66AE538A06BD8118048532D95600002753B0002753B000073
+        38040E7D45200F7C45213594647056B685FC3DB176FF31AC6DFF21A662FF0F9F
+        55FF2DA165E31A814D3F0F7E462107793F15FFFFFF0002753B00000000000000
+        00000000000050A67A003B98695958B786FC40B278FF32AC6EFF24A664FF16A1
+        59FF2CA065DE1A814D200F7E4600000000000000000000000000000000000000
+        00000000000051A77B003C98695959B888FC41B278FF33AC6EFF24A764FF18A2
+        5BFF2DA166DF1A824D20107F4600000000000000000000000000000000000000
+        00000000000048A17400359564585CB587FA50B481FD44AF78FD39AB71FD30A7
+        6AFF34A169DC147F49200E7E4500000000000000000000000000000000000000
+        0000000000001F87520017824C1F339462593797665B3395635B3094615B2E93
+        605C228B564E06783E0B07793F00000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000
+      }
       OnClick = lmSweepClick
     end
     object lmCompare: TMenuItem
       Caption = 'Compare with another database'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        20000000000000040000640000006400000000000000000000000000000E7477
+        75568F9291848E9190848E9190848E9190848E9190848E9190848E9190848E91
+        90848E9190848E9190848E91908490929184767978540000000B0000000DB7B9
+        B8A7E2E3E3FFE2E2E2FCE1E2E1FCE0E1E1FCDFE1E0FCDEE0E0FCDEE0DFFCDEE0
+        E0FCDCDFDFFCDBDEDEFCDBDEDEFCDCDFDEFFB6B9B8A60000000B00000003C7C9
+        C8A2ECECECFFEBEBECFFEAEAEAFFE8E9E9FFE7E8E8FFE6E7E8FFE1E3E4FFD6D8
+        D8FFDFE1E1FFE1E4E4FFDFE3E3FFE0E4E4FFC4C7C6A20000000300000003C7CA
+        C9A2EBE8E5FFE6DDD5FFE5DCD4FFE4DBD3FFE3DAD2FFE2DAD1FFD8D1CAFFA2A1
+        A0FFDADCDCFFE3E5E5FFE1E3E3FFE1E4E4FFC4C7C6A20000000300000003C8CB
+        CBA2E6DED6FFCCB49EFFC8B09AFFC8B09AFFC8B09AFFC7AF99FFCAB6A2FFA3A1
+        9EFFE0E2E2FFE4E6E7FFE3E5E5FFE3E5E5FFC4C7C6A20000000300000003C9CB
+        CBA2EAE2DAFFDAC3ADFFD8C1ABFFD8C0AAFFD7C0A9FFD7BFA9FFD0BBA7FFA098
+        91FFD9D1C9FFE2D9D1FFE3E1DEFFE5E6E6FFC5C7C6A20000000300000003C9CC
+        CCA2E9E1D9FFCDB59FFFC9B29BFFC9B19BFFC9B19BFFC9B19BFFC5AE98FFBCA5
+        90FFC5AD97FFCAB29CFFE0D7CFFFE7E8E8FFC5C7C7A20000000300000003C9CC
+        CCA2ECE4DDFFDCC4AEFFDAC3ACFFDAC2ACFFD9C1ABFFD8C1ABFFD8C0AAFFD8C0
+        AAFFD8C1ACFFDCCCBDFFE5E0DBFFE8E9E9FFC6C8C7A20000000300000003CACD
+        CDA2EBE4DCFFCFB7A1FFCBB39DFFCBB39DFFCAB39CFFCAB29CFFC9B19BFFC9B0
+        9AFFD2BEAAFFEAE8E5FFEBEBEBFFEAEAEAFFC6C8C7A20000000300000003CACD
+        CDA2EBE4DCFFCFB7A1FFCBB39DFFCBB39DFFD1B9A3FFDAC3ADFFDAC2ACFFD9C1
+        ABFFDCC6B2FFE6DCD2FFEAE8E5FFEBECECFFC6C8C8A20000000300000003CACD
+        CDA2E8E1D9FFBBA38DFFB49C86FFB49C86FFC5AD97FFD3BBA5FFCAB29CFFCAB2
+        9CFFCAB29CFFD8C0AAFFE9E1D9FFEDEEEEFFC7C9C8A20000000300000003CACD
+        CDA2E8E1D9FFBAA28CFFB39B85FFB39B85FFC4AD97FFDEC7B0FFDBC4AEFFDBC3
+        ADFFDAC3ADFFDEC6B0FFE7DACEFFEEEEEDFFC7CAC9A20000000300000003CACD
+        CDA2E9E1D9FFBFA791FFBAA18BFFB9A18BFFC8B099FFD3BBA4FFCAB29CFFCAB2
+        9CFFCAB29BFFCCB49DFFE0CBB7FFEEECE9FFC8CACAA20000000300000003C9CC
+        CCA2F0ECE7FFE6D7C9FFE5D6C8FFE5D6C8FFE7D8CAFFE6D8C9FFE4D5C7FFE4D5
+        C7FFE4D5C7FFE4D5C7FFE9DDD0FFF0EFEEFFC8CBCAA20000000300000003C9CC
+        CBA2F6F7F7FFF8F9F9FFF8F9F9FFF8F9F9FFF8F9F9FFF8F9F9FFF8F9F9FFF8F9
+        F9FFF8F9F9FFF8F9F9FFF7F8F8FFF5F5F5FFC9CBCAA20000000300000002B9BC
+        BB9DDADCDBFFDCDEDDFEDCDDDDFEDCDDDDFEDCDDDDFEDCDDDDFEDCDDDDFEDCDD
+        DDFEDCDDDDFEDCDDDDFEDCDDDDFEDADCDBFFB9BCBB9D00000002
+      }
       OnClick = lmCompareClick
     end
     object lmDBIndo: TMenuItem
       Caption = 'Database Info'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000959595B48181
+        81FF818181FF818181FF818181FF818181FF818181FF818181FF818181FF8181
+        81FF818181FF818181FF818181FF959595A80000000000000000818181FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFEFEFEFFFEFEFEFFFF0EFF0FFF0F0F0FFF0F0F0FFF0F1F0FFF0F1F1FFF1F1
+        F1FFF1F1F2FFF2F1F2FFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFBEBEBDFFBEBEBEFFD2D2D3FF848785FF585C5AFF585C5AFF848785FFD3D3
+        D4FFF1F1F0FFF1F1F1FFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFBEBEBDFFAAAAA9FF5C605EFFE0E1E0FFFEFEFEFFFEFEFEFFE0E1E0FF5C60
+        5EFFD3D3D3FFF1F0F1FFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFEEEFEEFF838685FFE0E1E0FFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFE0E1
+        E0FF848785FFF0F0F0FFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFEEEEEEFF5B5F5DFFFEFEFEFFFFFFFFFFCFCFCFFF000000FFFFFFFFFFFEFE
+        FEFF5B5F5DFFF0F0F0FFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFBCBCBDFF585C5AFFFEFEFEFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFEFE
+        FEFF5B5F5DFFEFEFF0FFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFBCBCBCFF747675FFE0E1E0FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFE0E1
+        E0FF838685FFF0EFEFFFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFBCBBBBFFA8A9A9FF595D5BFFE0E1E0FFFEFEFEFFFEFEFEFFE0E1E0FF5C60
+        5EFFD2D2D2FFEFEFEFFFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFBBBCBBFFBCBCBCFFA8A9A9FF737675FF5B5F5DFF5B5F5DFF838685FFD2D2
+        D1FFEFEFEEFFEFEFEFFFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFBBBBBBFFBCBBBBFFEDECECFFEDEDEDFFBCBCBCFFBDBCBCFFEDEEEEFFEEEE
+        EEFFEEEEEFFFEFEEEEFFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFBBBBBBFFBBBBBBFFEDECEDFFEDEDEDFFBCBCBCFFBCBCBCFFEEEDEDFFEEEE
+        EDFFEEEEEEFFEEEEEEFFFFFFFFFF818181FF0000000000000000818181FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFF818181FF0000000000000000999999AC8181
+        81FF818181FF818181FF818181FF818181FF818181FF818181FF818181FF8181
+        81FF818181FF818181FF818181FF818181560000000000000000
+      }
       OnClick = lmDBIndoClick
     end
     object MenuItem8: TMenuItem
@@ -1536,30 +2000,246 @@ object fmMain: TfmMain
     end
     object lmEditReg: TMenuItem
       Caption = 'Edit Registration'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        20000000000000040000640000006400000000000000000000000000000B9C9F
+        9E7DBEC0BFC4BEC0BFC2BDC0BFC2BDBFBFC2BEC1C0C2BDBFBEC2BCBFBEC2BCBF
+        BEC2BCBFBEC2BCBFBEC2BCBFBEC2BCBFBEC49EA1A07B0000000900000007C1C3
+        C2A7EAEBEBFFE9EAEAFFE8E9E9FFE9E9E9FFD1D3D3FFBCBEBEFFE4E6E6FFE3E6
+        E6FFE2E5E5FFE1E4E4FFE0E4E3FFE1E5E4FFC0C2C2A60000000600000003C7C9
+        C8A2ECECECFFEBEBEBFFEBEBEBFFCBCCCBFF747776FF8D908FFFDCDDDDFFDDDE
+        DEFFDEE0E0FFE0E2E2FFDFE2E3FFE0E3E3FFC4C7C6A20000000300000003C7C9
+        C9A2EEEEEEFFEDEDEDFFC1C2C2FF6C6F6DFF515553FF606361FF777A78FF9497
+        96FFB7BAB9FFD7D9D9FFE2E4E4FFE2E4E4FFC5C8C7A20000000300000003C8CA
+        C9A2EEEEEEFFB5B7B6FF626664FF515553FF535755FF525654FF595D5BFF7F82
+        81FFACAEAEFFD6D7D7FFE4E5E5FFE4E5E5FFC5C8C7A20000000300000003C8CB
+        CAA2EEEFEFFFA4A6A5FF585C5AFF525654FF535755FF525654FF5A5E5CFF8083
+        82FFAEAFAFFFD8D8D8FFE6E6E6FFE5E6E6FFC6C8C7A20000000300000003C8CB
+        CAA2F3F4F4FFEEEFEFFFAFB1B0FF5F6361FF515553FF585C5AFF676B69FF8B8D
+        8CFFB4B6B5FFDBDBDBFFE7E8E8FFE7E7E7FFC6C8C7A20000000300000003C9CB
+        CAA2F4F5F5FFF5F6F6FFF3F4F4FFC0C2C1FF676B69FF898C8AFFD5D6D6FFDADB
+        DBFFE1E2E2FFE8E8E8FFE9E9E9FFE8E9E8FFC6C9C8A20000000300000003C9CB
+        CBA2F5F6F6FFF5F6F6FFF4F5F5FFF4F4F4FFCBCDCCFFB6B8B7FFF0F0F0FFF0F0
+        F0FFEEEFEFFFEDEDEDFFEBEBEBFFEAEAEAFFC7C9C8A20000000300000003C9CB
+        CBA2F5F6F6FFD9D9D9FFC7C7C7FFC7C8C8FFC7C8C8FFC3C4C3FFC6C6C6FFE5E5
+        E5FFF0F1F1FFEEEFEFFFEDEDEDFFECECECFFC7CAC9A20000000300000003C9CB
+        CBA2F5F6F6FFDADBDBFFC9C9C9FFCACACAFFC9CACAFFC9CACAFFDDDDDDFFF0F1
+        F1FFF2F2F2FFF0F1F1FFEFEFEFFFEDEEEEFFC8CAC9A20000000300000003C9CB
+        CBA2F5F6F6FFDADBDBFFC9C9C9FFCACACAFFCACACAFFCACACAFFE1E2E2FFF5F6
+        F6FFF3F4F4FFF2F3F3FFF1F1F1FFEFF0F0FFC8CACAA20000000300000003C9CB
+        CBA2F5F6F6FFD8D8D8FFC6C6C6FFC6C7C7FFC6C7C7FFC6C6C6FFD2D3D3FFF4F5
+        F5FFF5F6F6FFF4F5F5FFF3F4F4FFF1F2F1FFC9CBCAA20000000300000003C9CC
+        CBA2F5F6F6FFD7D8D8FFC4C5C5FFC5C5C5FFC5C5C5FFC5C5C5FFC7C8C8FFEAEB
+        EBFFF8F9F9FFF6F7F7FFF5F6F6FFF3F3F3FFC9CBCAA20000000300000003C8CA
+        C9A2F3F4F4FFEDEEEEFFE8E9E9FFE8E9E9FFE8E9E9FFE8E9E9FFE9EAEAFFF2F3
+        F3FFF6F7F7FFF5F6F6FFF5F6F6FFF3F3F3FFC8CAC9A20000000300000001AEB2
+        B070C8CAC9BCCACCCBBACACCCCBACACCCCBACACCCCBACACCCCBACACCCCBAC9CC
+        CBBAC9CBCABAC9CBCBBAC9CBCBBAC8CAC9BCAFB2B17000000001
+      }
       OnClick = lmEditRegClick
     end
     object lmUnregisterDatabase: TMenuItem
       Caption = 'Unregister Database'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000010808
+        08134F5150466A6C6B5D696C6B5D696C6B5D696C6B5D6A6C6B5D6A6C6B5D6A6C
+        6B5D6A6C6B5D6A6C6B5D696B6A5D494B4B470505051900000004000000033639
+        37369FA3A1B2BCBFBECCBBBEBDCBBBBFBECBBBBFBDCBBBBFBECBBBBFBECBBBBF
+        BECBBCBFBECBBCBFBECBBDC0BFCCA7AAA9B63637373E00000008D5DAD8007074
+        7237AAAFADA7AFB5B399AFB4B299AFB5B299AFB5B399B0B5B399B0B6B399B0B6
+        B39AB1B6B49AB0B6B39ABBC0BEA5C6C9C8BB787B7A3AFFFFFF009CA09F00888C
+        8A39B0B5B399B3BAB77EB3BAB77EB3BAB77EB4BBB87EB1B9B57EB3BAB77EB3BA
+        B77EB1B9B67EB2B9B67DBFC6C38CD0D4D3B39B9E9D39B2B5B400B2B6B5008C90
+        8F43B2B7B59EBDC2C09BC0C4C2A4BDC1BF9AB9BEBC8CC7CAC9B3C0C4C2A1C0C4
+        C2A2CACDCBB4BDC1BF9DBCC1BF93D1D5D3B4A1A4A344CACDCC00D4D7D6008F93
+        914DB4B8B7A9DADCDBCED8D9D9D2DBDCDCD0CACDCCB9E5E6E5EDDCDDDDD9DCDE
+        DDDCE7E7E7EDD5D7D6D0C6CAC8B7CDD1D0B5A6A9A84FEEF1F000FFFFFF009195
+        9359A4A9A7A6D2D3D3D3DBDCDBE9DBDCDCEACECFCFDDD7D8D8E4D7D8D7E3D6D7
+        D7E3D9DADAE6D4D5D4E0BABDBCB6C6CAC9BAA9ACAB5CFFFFFF00FFFFFF009195
+        9466979D9BADBABCBCCED1D2D2F2CECFCFEFC5C6C6E6C3C5C5E2C8C9C9E7C8C9
+        C9E7C8C9C9E6C8C9C9E7AFB2B1C2BCC0BFC0AAAEAE69FFFFFF005A2100088E84
+        7A818E8880C0AAA49DD8C2BBB6F6C1BAB5F4B5AFA9EAB6AFA9EAB9B2ACEDB8B2
+        ACEDB8B1ACEDB8B2ACEE9E9891D3A8A39CD0A1978D875F24000C9D674077A676
+        52EAA57652F7A97A57FAAC7E5BFEAB7D5AFDA97B57FCA97B58FCA97A57FDA97A
+        56FDA87956FDA87955FDA4744FF9A6754FF9A5734CEE9A623986A9724AAAC084
+        56FFC08150FFC08150FFC08150FFC08150FFC08150FFC08150FFC08150FFC081
+        50FFC08150FFC1814FFFAC765FFF7E5F89FFA77562FFA76C3EA8A1663C67C487
+        58F8C48757FFBE865AFFBF875BFFBF875BFFBF875BFFBF875BFFBF875BFFBF87
+        5BFFBF875BFFC0885AFFA6776BFF705699FFA16F66F2A06130588A4E2421B879
+        49D4AC7A53FF9C9187FFA7A09AFFA59E98FFA59E97FFA59D97FFA49D97FFA49D
+        96FFA59E98FFA7A19BFF9F8874FFC18454FFB17242BB7D4017122C000002A465
+        377CAF7A51E0C2BDB8FBCCCDCDFFC7C8C8FFC7C7C8FFC6C7C7FFC7C8C8FFCCCD
+        CDFFD0D1D1FFD3D5D6FFB6A494F4B27445D99E603357C0804F0085491F007D2E
+        00078D756239CFD0CEE3DDDEDEFFDADADAFFD9D9D9FFD9D9D9FFD9D9D9FFDBDB
+        DBFFDBDBDBFFDEDEDEFFBCBBB7B17B451E1E7E3E13047F431900000000008D92
+        91008B908F15B5B8B79FC3C5C4BBC2C4C4B9C2C4C3B9C2C4C3B9C2C4C3B9C1C3
+        C3B9C1C3C2B9C0C2C2BCAAADAC7400000101838F920000000000
+      }
       OnClick = lmUnregisterDatabaseClick
     end
     object lmViewFirst1000: TMenuItem
       Tag = 1
       Caption = 'View First 1000 records'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000000000
+        000000000000A5A9A8009DA19F3EBBBDBCB9C1C3C2BDC2C4C3BCC4C7C6BCC7CA
+        C9BCC7CAC9BCB9BDBCBD949896A4888C893F6E7971027C847E00000000000000
+        000000000000BCBEBD00ABAEAD5CDFE0DFFDE8E8E8FFE8E8E8FFEBECECFFF1F1
+        F1FFF7F7F7FFEAEBEBFFAFB1B0FF9C9E9DE18C8F8D5D90989302010402010000
+        000100000001FFFFFF00ACAFAE5CE2E3E2FDEAEAEAFFE9E9E9FFE9E9E9FFEBEB
+        EBFFF0F0F0FFECEDECFFBDBFBEFFB4B6B5FF9C9F9EE1888D8A3AA9ACAB38BFC1
+        C052C0C2C152C2C4C34FB7B9B88FE3E4E4FDECECECFFEAEBEBFFEAEAEAFFE9E9
+        E9FFE9E9E9FFEBEBEBFFE6E7E6FFEBECECFFDCDEDDFBA2A6A468C1C3C35EE6E7
+        E782E7E7E781EAEAEA7FCCCECDAEE5E6E6FEEAEBEBFFE5E6E6FFE5E5E5FFE4E4
+        E4FFE3E3E3FFE3E3E3FFE4E4E4FFECECECFFE9E9E9FBAFB2B168C5C7C65CEAEA
+        EA80EAEAEA7FEBEBEB7DCBCCCCACE6E7E7FEE6E7E7FFD7D8D8FFD6D7D7FFD6D6
+        D6FFD5D6D6FFD5D5D5FFD4D4D4FFDCDCDCFFE2E2E2FBADB1B068C7C9C85CEBEC
+        EB80E2E2E27FDDDDDD7DC4C6C6ACE6E8E7FEE8E8E8FFD9DADAFFD8D9D9FFD7D8
+        D8FFD7D7D7FFD6D6D6FFDDDDDDFFE9EAEAFFE2E2E2FBAEB1B068C8CAC95CECED
+        ED80DFE0E07FD8D8D87DC2C4C3ACE6E8E7FEE9EAEAFFDBDCDCFFDBDCDCFFDADB
+        DBFFD9DADAFFD8D9D9FFDADADAFFE6E6E6FFE3E4E4FBAFB2B168C8CACA5CEDEE
+        EE80DFE0E07FD8D9D97DC2C4C3ACE6E8E7FEE9EAEAFFDCDDDDFFDCDDDDFFDBDC
+        DCFFDADBDBFFDADBDBFFD9DADAFFE4E4E4FFE4E5E5FBAFB2B168C8CACA5CEEEF
+        EF80E1E2E27FD9DADA7DC3C5C4ACE6E8E7FEE8E9E9FFDBDCDCFFDBDCDCFFDBDC
+        DCFFDBDCDCFFDADBDBFFD9DADAFFE1E1E1FFE4E5E5FBAFB2B168C8CACA5CEEEF
+        EF80E2E3E37FDCDDDD7DC4C6C6ACE6E7E7FEEFF0F0FFEEEFEFFFEEEFEFFFEEEF
+        EFFFEEEFEFFFEEEFEFFFEEEFEFFFEEEFEFFFE5E6E6FBAFB2B168C8CACA5CEEEF
+        EF80E2E3E37FDCDDDD7DC3C6C5ADE5E6E6FEEFF0F0FFEFEFEFFFEFEFEFFFEFEF
+        EFFFEFF0F0FFEFF0F0FFEFEFEFFFEFF0F0FFE5E6E6FBAEB1B069C8CACA5CEEEF
+        EF80E2E3E37FDBDCDC7EC8CAC99ACBCDCCCFD0D2D2D1D0D2D1D1D0D2D1D1D0D2
+        D1D1CBCDCCCBC6C8C7A9C8CAC9A3C8CAC9A4C1C4C39F9FA3A23DC8CACA5CEFEF
+        EF80EEEFEF7FEEEFEF7FEEEFEF7FEAEBEB80E9EBEA80E9EBEA80E9EAEA80EAEB
+        EB81D3D5D4707C807E1300000001000000020000000200000000C7C9C95DEEEF
+        EF81EFEFEF80EFEFEF80EFF0EF80EFF0F080EFF0F080EFF0F080EFF0F080F0F1
+        F181D8DAD9709095931092979500000000000000000000000000AEB2B140C6C9
+        C85DC7CAC95CC7CAC95CC7CAC95CC7CAC95CC7CAC95CC7CAC95CC7CAC95CC8CA
+        CA5DB9BCBB4F8C918F0A8E939100000000000000000000000000
+      }
       OnClick = lmViewFirst1000Click
     end
     object lmNewTable: TMenuItem
       Tag = 11
       Caption = 'New Table'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000010808
+        080D313131333B3B3B413A3A3A413A3A3A413A3A3A413A3A3A413A3A3A413939
+        394139393941393939413A3A3A41333333320B0B0B0C00000000000000012727
+        27299C9C9CC4C1C1C1E9C1C1C1E7C2C2C2E7C3C3C3E7C3C3C3E7C4C4C4E7C5C5
+        C5E7C5C5C5E7C5C5C5E7C6C6C6E9A2A2A2C731313128FFFFFF00666666005050
+        501EC4C4C4DAECECECFFEDEDEDFFEFEFEFFFF1F1F1FFF3F3F3FFF6F6F6FFF8F8
+        F8FFF9F9F9FFF9F9F9FFF9F9F9FFCACACADF5454542161616100656565005E5E
+        5E1BC5C5C5D9EAEAEAFFEBEBEBFFEDEDEDFFF0F0F0FFF2F2F2FFF4F4F4FFF6F6
+        F6FFF8F8F8FFF8F8F8FFF7F7F7FFCACACADD5959591F5F5F5F006B6B6B006464
+        641CC7C7C7D9EAEAEAFFEBEBEBFFEDEDEDFFEFEFEFFFF2F2F2FFF4F4F4FFF6F6
+        F6FFF7F7F7FFF7F7F7FFF7F7F7FFCACACADD5959591F5F5F5F00717171006C6C
+        6C1CC8C8C8D9E7E7E7FFEBEBEBFFEDEDEDFFEFEFEFFFF1F1F1FFF3F3F3FFF4F4
+        F4FFF5F5F5FFF5F5F5FFF5F5F5FFC9C9C9DD5959591F5F5F5F00777777007272
+        721CC9C9C9D9E5E5E5FFEAEAEAFFECECECFFEEEEEEFFF0F0F0FFF1F1F1FFF3F3
+        F3FFF3F3F3FFF3F3F3FFF4F4F4FFC9C9C9DD5959591F5F5F5F007D7D7D007878
+        781CCCCCCCD9E8E8E8FFE9E9E9FFEBEBEBFFEDEDEDFFEEEEEEFFF0F0F0FFF1F1
+        F1FFF2F1F1FFF2F1F1FFF3F2F2FFC9C9C9DD5B5B5B1F60606000838383007E7E
+        7E1CCECECED9E7E7E7FFE8E8E8FFE9E9E9FFEBEBEBFFEDEDEDFFEEEEEEFFEFEF
+        EFFFECEFEFFFE1EFF0FFDEF0F1FFBFCACBDE5D63631F60676700888888008585
+        851CCECECED9E3E3E3FFE7E7E7FFE8E8E8FFEAEAEAFFEBEBEBFFECECECFFE3ED
+        EDFFB8EFF1FF8FF0F5FF86F1F7FF7DD7DBE52DBAC03800FFFF018E8E8E008B8B
+        8B1CD0D0D0D9E2E2E2FFE6E6E6FFE6E6E6FFE8E8E8FFE9E9E9FFE7EAEAFFB8ED
+        EFFF6EF0F7FF52F3FBFF54F4FCFF44E8F0F119E7F27805F7FF1A949494009191
+        911CD2D2D2D9E3E3E3FFE4E4E4FFE5E5E5FFE6E6E6FFE8E7E7FFDDE9E9FF90ED
+        F2FF51F3FBFF81F8FEFF9EF9FEFF5CF2FAFA1CF1FCA90BF4FF3E989898009696
+        961CD3D3D3D9E2E2E2FFE3E3E3FFE3E3E3FFE4E4E4FFE6E5E5FFD8E7E8FF87EC
+        F1FF51F3FBFF96F9FEFFBBFBFEFF6AF4FBFB1FF2FDB20BF4FF469C9C9C009A9A
+        9A1CD4D4D4DAE2E2E2FFE2E2E2FFE3E3E3FFE4E4E4FFE5E5E5FFDFE6E6FFA2EA
+        EEFF5BF1F8FF5DF5FDFF6CF6FEFF48EEF6F619EDF89209F5FF2B9C9C9C009797
+        9713C9C9C9AED9D9D9D8D9D9D9D5D7D7D7D5D5D5D5D5D3D3D3D5D2D2D2D5B4D2
+        D4D674DBE0DC4BE2EAE445E4ECE742D7DFCC19E0EA4B00FEFF09959595008C8C
+        8C019C9C9C14A6A6A61EA6A6A61DA0A0A01D9999991D9292921D8B8A8A1D8189
+        891E45B8BE2B24D7E0451FDBE44E20D3DB340BE6F00A1FD1D800
+      }
       OnClick = lmNewTableClick
     end
     object lmEditTable: TMenuItem
       Tag = 1
       Caption = 'Edit Data (Grid)'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000041549
+        6C4217557E7913527B7B13517B7B12517B7B12517B7B12517A7B12507A7B1351
+        7B7B14527C7B15537C7B14527C7B17547D7A1446674300000006000000091C63
+        91A42E76A4FF5084A5FC5386A5FC5385A5FC5385A5FC5485A4FC5384A3FC4F80
+        9EFC457694FC437492FC487998FC2C6F99FF1B5F8BA40000000C030914041B69
+        9BA54F86A8FFD2D5D6FFDEDFDFFFDEDFDFFFE2E3E3FFE7E8E8FFEBECECFFD9DB
+        DBFF9FA2A0FF888B8AFF8A8F8FFF457592FF1B6595A301091403020711031B69
+        9CA4538AACFFE0E1E2FFEBEBEBFFEAEAEAFFEAEAEAFFEEEEEEFFF5F5F5FFECED
+        ECFFB8BAB9FFA9ABAAFF878B89FF42718DFF1C6696A20109160302050F031B69
+        9DA4538CAEFFE1E3E3FFE9E9E9FFE4E4E4FFE3E3E3FFE3E3E3FFE6E6E6FFEAEA
+        EAFFDCDEDDFFDDDEDDFFC0C3C2FF487894FF1B6595A20109160302030C031B6A
+        9DA4548DB1FFE3E4E5FFE5E5E5FFD6D6D6FFD5D5D5FFD4D5D5FFD6D6D6FFE6E6
+        E6FFECECECFFF3F3F3FFE9EAEAFF52819EFF1A6494A20109160302010A031B6B
+        9EA4548EB2FFE4E5E6FFE6E7E7FFD7D8D8FFD7D7D7FFD6D6D6FFD6D6D6FFD5D6
+        D6FFD4D4D4FFDDDDDDFFE1E2E2FF52819FFF1A6495A201081503020007031B6B
+        9FA4548FB4FFE4E6E7FFE8E9E9FFDADBDBFFD9DADAFFD8D9D9FFD8D8D8FFD7D7
+        D7FFDBDCDCFFE6E6E6FFE0E1E1FF5283A0FF1A6595A200071303010005031C6B
+        A0A45590B6FFE5E7E7FFE9EAEAFFDBDCDCFFDADBDBFFDADADAFFD9DADAFFD8D9
+        D9FFDDDDDDFFE9E9E9FFE1E2E2FF5384A2FF1A6596A200041003010002031C6C
+        A0A45592B7FFE5E7E7FFE8E9E9FFDADBDBFFDADBDBFFD9DADAFFD9DADAFFD8D9
+        D9FFD7D8D8FFE4E4E4FFE2E4E4FF5385A4FF1A6597A200030D03000000031C6D
+        A1A45593B9FFE5E7E7FFE8E9E9FFDADBDBFFDADBDBFFDADBDBFFDADBDBFFD9DA
+        DAFFD8D9D9FFE0E0E0FFE3E4E4FF5487A6FF1B6697A200010A03000000031C6D
+        A2A45594BBFFE4E7E7FFEEEEEEFFE5E6E6FFE4E5E5FFE4E5E5FFE4E5E5FFE4E5
+        E5FFE4E5E5FFEAEBEBFFE4E5E5FF5488A8FF1B6798A200000703000000031C6E
+        A3A55695BDFFE8EAEAFFDADADAFFA1A5A5FF9DA2A2FF9DA2A2FF9DA2A2FF9DA2
+        A2FFA0A4A4FFD7D8D7FFE8E9E9FF5589A9FF1B6799A200000503000000031D6D
+        A2A44A8FBBFFB8C8D1FFA8B3B8FF98A1A1FF9AA5A5FF99A4A4FF99A4A4FF99A4
+        A4FF969F9FFFA6B1B6FFB8C8D0FF4884AAFF1B689AA200000003000000001C62
+        9059256F9FA432729BA24C748CAD8B9293DC919B9BFB919D9DFF919E9EFF929C
+        9CFB8C9394DC4C738CAD32719AA2246C9AA41B608D5881FFFF00000000000000
+        000100000203000000023A3D43075E5E5E3B747A7AE17D8686FF7D8686FF747A
+        7AE15E5E5E3B3A3E440700000002000006030000000100000000
+      }
       OnClick = lmEditTableClick
     end
     object lmEditDataForm: TMenuItem
       Tag = 1
       Caption = 'Edit Data (Form)'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000151515085959
+        5925616161355E5E5E365F5F5F355F5F5F355F5F5F355F5F5F355F5F5F355F5F
+        5F355F5F5F355F5F5F355F5F5F35606060355E5E5E2E313131128B8B8B43C8C8
+        C8CFD3D3D3E7D1D1D1E6D0D0D0E6D0D0D0E6CFCFCFE6CECECEE6CDCDCDE6CDCD
+        CDE6CDCDCDE6CDCDCDE6CDCDCDE6CDCDCDE6CBCBCBE1A3A3A383B8B8B864E0E0
+        E0FAD3D3D3FFCFCFCFFFCDCDCDFFD0D0D0FFCECECEFFCACACAFFC6C6C6FFC6C6
+        C6FFC8C8C8FFC5C5C5FFC6C6C6FFC3C3C3FFD1D1D1FFC8C8C8B5BBBBBB64DEDE
+        DEFABCBCBCFFBABABAFFB5B4B5FFBCBCBCFFC9C9C9FFB6B6B6FFAAAAAAFFB1B1
+        B1FFB8B8B8FFAEAEAEFFB6B6B6FFA9A9A9FFC8C8C8FFC9C9C9B5B9B9B964EAEA
+        EAFAE3E5E5FFD0D7D6FFCDD4D3FFDADDDDFFE7E7E7FFE2E2E2FFDFDFDFFFDFDF
+        DFFFDEDEDEFFDBDBDBFFDBDBDBFFD7D7D7FFDDDDDDFFC8C8C8B5BBBABA64E3E6
+        E6FA76A09CFF387D76FF397D76FF5F8F8AFFD8DEDEFFE4E4E4FFDFDFDFFFDEDE
+        DEFFDCDCDCFFE0E0E0FFE5E5E5FFE3E3E3FFE3E3E3FFC8C8C8B5BDBCBC64DAE0
+        DFFA42847DFF086C63FF137069FF3B7E77FFCCD6D5FFDCDBDBFFD3D3D3FFD2D2
+        D2FFD1D1D1FFD5D5D5FFDFDFDFFFE6E6E6FFE5E5E5FFC9C9C9B5BAB9BA64F0F0
+        F0FA92B3B5FF1E6984FF1A6584FF789FA5FFEFF0F0FFE8E8E8FFE4E4E4FFE2E2
+        E2FFE1E1E1FFDFDFDFFFE2E1E1FFE9E9E9FFE9E8E8FFCAC9C9B5B9B9B964F5F4
+        F4FAB9CDD9FF3B84B5FF2C79ACFF93B1C4FFE5E4E4FFB6B6B6FFB4B4B4FFC6C5
+        C5FFBABABAFFA5B5B5FFA2D1D4FFBAEEF0FFD5EBECFFC8CACAB5B9B9B965F3F3
+        F3FAE6EDF2FF77A3C0FF6596B6FFD1DDE5FFF4F3F3FFDBDBDBFFD7D7D7FFE3E2
+        E2FFC3D1D2FF82DCE0FF58EAF1FF5EF3FBFF86F0F5FFA5CED0B6B1B1B14EE3E3
+        E3EDF4F3F3FDE9EBECFDE6E9EBFDF2F2F2FDF1F1F1FDF2F2F2FDF1F1F1FDF0EF
+        EFFDC5F0F2FD64F4FBFF7EF8FFFF8CF9FEFF5AF1F9FF66D6DCAA9797970AB0B0
+        B047B9B9B95CBABAB95CBBBABA5CB9B9B95CB9B9B95CB9B9B95CB8B8B85BBAB7
+        B75B72D0D47736EEF7CB7EF8FEF490F9FEF63CF1FAD61EE9F362000000000000
+        00000000000000000000000000000000000000000000000000000000000005F5
+        FF0001F6FF1013F4FF6E2DF5FFBE31F5FFC518F4FF8507F5FF25000000000000
+        00000000000000000000000000000000000000000000000000000000000003F3
+        FF0000F2FF0109F3FF190CF3FF480CF3FF4F0AF3FF2302F3FF03
+      }
       OnClick = lmEditDataFormClick
     end
     object lmViewFields: TMenuItem
@@ -1567,39 +2247,39 @@ object fmMain: TfmMain
       Caption = 'Expand Fields'
       Bitmap.Data = {
         36040000424D3604000000000000360000002800000010000000100000000100
-        20000000000000040000640000006400000000000000000000002D2F2F002A2A
-        2A0020212100202121001E1F1F0015171700101111000E101000040606000000
-        000000000000000000334C4747EC3B3737BE00000019010101002D2F2F002A2A
-        2A0020212100202121001E1F1F0015171700101111000E101000040606000000
-        000000000039524D4DE9F2E7E7FFDAD0D0FF2F2D2DC2000000192D2F2F002A2A
-        2A0020212100202121001E1F1F0015171700101111000E101000030404000000
-        003B585252E7EADFDFFFECE2E2FFE6D9D9FFDCD5D5FF413E3EC42D2F2F002A2A
-        2A0020212100202121001E1F1F0015171700101111000C0F0F0000010136544E
-        4EECE9DCDCFFF5EDEDFFE1D8D8FFE4D9D9FFFCF7F7FF595757EE2D2F2F002A2A
-        2A0020212100202121001E1F1F00151717000E101000080909355B5555ECEBE4
-        E4FFF5EDEDFFEAE2E2FFFBF8F8FFF6F4F4FF5F5A5AEC040606382D2F2F002A2A
-        2A0020212100202121001E1F1F0013151500090A0A365A5454E8EBE6E6FFFFFF
-        FFFFF8F6F6FFFAF6F6FFF2EFEFFF666262E70000003B040707002D2F2F002A2A
-        2A001E1F1F00191B1B25131515410B0E0E5C615B5BE5EEE8E8FFFFFFFFFFFFFF
-        FFFFFFFFFFFFF1EEEEFF666060E90909093901020200060808002D2F2F002425
-        251F363434AB726A6AE78A8181F0877E7EF9E0D6D6FFFFFFFFFFFFFFFFFFFFFF
-        FFFFEFEBEBFF676363EC0F0F0F331011110003040400060808002629291D524D
-        4DD3C7B8B8FFF1E5E5FFF9F1F1FFFBF4F4FFECE5E5FFECE5E5FFFFFFFFFFF2ED
-        EDFF6A6565EB15161637111313001212120003040400060808003F3E3E9ABCAF
-        AFFFE9DADAFFE9DDDDFFF4EAEAFFF3EEEEFFF6F4F4FFEEE7E7FFE6DFDFFF6F6B
-        6BE01919193B181A1A0013151500121212000304040006080800706A6AEEDCC9
-        C9FFDDCDCDFFBDAFAFFF9F9595FFDFD4D4FFF3EFEFFFFBF6F6FF928989F41C1E
-        1E541C1D1D0017191900101212000F0F0F000000000002040400857C7CF7EFDC
-        DCFFC0B2B2FF4C4A4AB52628286FA29999FFF4EBEBFFF8F1F1FF968E8EF22D2F
-        2F41353636003335350032343400323333003031310030313100777070ECC8BA
-        BAFF585555B02E2F2F1E534F4FB2C0B4B4FFE8DCDCFFF0E7E7FF857D7DEB3335
-        35273A3B3B003A3B3B003A3B3B003A3B3B003A3C3C003A3B3B00504E4E745552
-        529C3B3C3C2D585656B2C0B0B0FFDECCCCFFE8DADAFFCEC1C1FF504E4EAA3E41
-        41003F4242003F4242003F4242003F4242003F4242003F424200484747004341
-        41005651519CC5B7B7FFEFDDDDFFDECBCBFFC4B7B7FF646060D43A3C3C1D3F41
-        41003F4141003F4141003F4141003F4141003F4141003F414100494848004648
-        4800504E4E76787070E7898282F7797272EC4D4B4B983B3C3C1C3E4040003F41
-        41003F4141003F4141003F4141003F4141003F4141003F414100
+        2000000000000004000064000000640000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000E9EAEA00EDEEEE07DEDFDF0BF8F7F800F5F5F50000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000095999700A1A5A421A3A6A588A9ACAB3DBBBDBC06A1A4A300FFFFFF000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000888C8B0093969529C8CBC9E3CED1D0E3AEB1B0859B9E9D25C6C8C802B6B8
+        B700000000000000000000000000000000000000000000000000000000000000
+        0000818483008A8D8C29CED0CFE3EFF1F0FFE6E8E7FCC6C8C7CEA1A3A2678B8D
+        8C15555A5800A0A2A10000000000000000000000000000000000000000000000
+        0000737675007A7D7C29CCCECDE3F2F4F3FFF6F8F7FFF7F8F8FFDFE1E0F7B4B6
+        B6B5888A894A5C5E5D096C6F6E00636363000000000000000000000000000000
+        000065676700686A6929C8CAC9E3EFF1F0FFEFF2F0FFF0F2F1FFEFF2F1FFE7EA
+        E9FFCCCFCEED9497969A5D5F5E25FFFFFF007D7C7C0000000000000000000000
+        00005B5D5C00595B5A29C6C8C7E3F0F3F1FFEEF1F0FFEEF1EFFFEDF0EFFFE8EB
+        E9FFCCCECDF28F9190A55355552AFFFFFF007575750000000000000000000000
+        0000545655004D4F4E29C3C5C4E3EBEFEDFFEAEEECFFEBEEECFFD7DAD9F9A8AA
+        A9BF6A6D6C542325250D5E616000000000000000000000000000000000000000
+        00004F51500045474729C2C4C3E3EBEFEDFFDDE1DFFEB4B7B6D677787870292B
+        2B18000000000000000000000000000000000000000000000000000000000000
+        00004E504F0046484729BBBDBCE4C5C7C6E9898B8A8E40424129000000020405
+        0500000000000000000000000000000000000000000000000000000000000000
+        00003F4241003C3E3D226F7170905C5E5D410000000617181800000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000131414000E0F0F050D0D0D09606463000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000
       }
       OnClick = lmViewFieldsClick
     end
@@ -1643,6 +2323,42 @@ object fmMain: TfmMain
     object lmScriptTable: TMenuItem
       Tag = 1
       Caption = 'Script Table As'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        20000000000000040000640000006400000000000000000000000000000B9C9F
+        9E7DBEC0BFC4BEC0BFC2BDC0BFC2BDBFBFC2BDBFBFC2BDBFBEC2BCBFBEC2BCBF
+        BEC2BCBFBEC2BCBFBEC2BCBFBEC2BCBFBEC49EA1A07B0000000900000007C1C3
+        C2A7EAEBEBFFE9EAEAFFE8E9E8FFE7E8E8FFE6E7E7FFE5E6E6FFE4E6E6FFE3E5
+        E5FFE2E5E5FFE1E4E4FFE0E4E3FFE1E5E4FFC0C2C2A60000000600000003C7C9
+        C8A2ECECECFFEBEBEBFFE9EAEAFFE9E9E9FFE7E8E8FFE6E7E7FFE5E6E6FFE4E5
+        E5FFE2E4E4FFE1E3E3FFDFE2E2FFE0E3E3FFC4C7C6A20000000300000003C7C9
+        C9A2EDEEEEFFEDEDEDFFEAEAEAFFE0E0E0FFDDDDDDFFDCDCDCFFDBDCDCFFDADB
+        DBFFDDDEDEFFE3E4E4FFE1E4E4FFE2E4E4FFC5C8C7A20000000300000003C8CA
+        C9A2EFF0F0FFEFF0F0FFE9E9E9FFC7C7C7FFC1C1C1FFC1C1C1FFC0C0C0FFBFBF
+        BFFFCDCDCDFFE5E6E6FFE4E5E5FFE4E5E5FFC5C8C7A20000000300000003C8CA
+        CAA2F1F2F2FFECEDEDFFE3E3E3FFE1E1E1FFDFE0E0FFDEDEDEFFDDDDDDFFDCDC
+        DCFFDCDCDCFFDBDCDCFFE1E2E2FFE5E7E6FFC6C8C7A20000000300000003C8CB
+        CAA2F3F4F4FFE2E3E3FFC5C5C5FFC4C4C4FFC3C3C3FFC3C3C3FFC2C2C2FFC1C2
+        C2FFC1C1C1FFC0C0C0FFD9D9D9FFE7E8E8FFC6C8C7A20000000300000003C9CB
+        CAA2F4F5F5FFF4F4F4FFE9EAEAFFE3E4E4FFE3E3E3FFE2E2E2FFE0E1E1FFDFE0
+        E0FFDFDFDFFFE5E5E5FFE9E9E9FFE8E9E9FFC6C9C8A20000000300000003C9CB
+        CBA2F5F6F6FFF6F7F7FFD7D8D8FFC5C5C5FFC5C6C6FFC5C5C5FFC4C4C4FFC3C4
+        C4FFC3C3C3FFDDDEDEFFECECECFFEAEAEAFFC7C9C8A20000000300000003C9CB
+        CBA2F5F6F6FFF5F6F6FFEAEBEBFFE7E8E8FFE6E7E7FFE5E5E5FFE4E4E4FFE3E3
+        E3FFE1E2E2FFE6E6E6FFEDEDEDFFECECECFFC7CAC9A20000000300000003C9CB
+        CBA2F6F7F7FFF1F2F2FFCDCECEFFC7C7C7FFC7C7C7FFC6C7C7FFC6C6C6FFC5C6
+        C6FFC4C4C4FFD4D4D4FFEFEFEFFFEEEEEEFFC8CAC9A20000000300000003C9CB
+        CBA2F5F7F7FFF2F3F3FFE8E9E9FFE8E9E9FFE8E9E9FFE8E9E9FFE7E8E8FFE6E7
+        E7FFE5E5E5FFE4E5E5FFECEDEDFFEFF0F0FFC8CACAA20000000300000003C9CB
+        CBA2F6F7F7FFE6E6E6FFC7C7C7FFC7C7C7FFC7C7C7FFC7C7C7FFC6C7C7FFC6C7
+        C7FFC6C6C6FFC6C6C6FFE2E3E3FFF2F2F2FFC9CBCAA20000000300000003C9CB
+        CBA2F5F6F6FFF6F7F7FFF5F6F6FFF5F6F6FFF5F6F6FFF5F6F6FFF5F6F6FFF5F6
+        F6FFF5F6F6FFF5F5F5FFF4F5F5FFF3F3F3FFC9CBCAA20000000300000003C8CA
+        C9A2F4F5F5FFF5F6F6FFF5F6F6FFF5F6F6FFF5F6F6FFF5F6F6FFF5F6F6FFF5F6
+        F6FFF5F6F6FFF5F6F6FFF5F6F6FFF3F3F3FFC8CAC9A20000000300000001AEB2
+        B070C8CAC9BCC9CBCBBAC9CBCBBAC9CBCBBAC9CBCBBAC9CBCBBAC9CBCBBAC9CB
+        CBBAC9CBCBBAC9CBCBBAC9CBCBBAC8CAC9BCAFB2B17000000001
+      }
       object lmScriptTableCreate: TMenuItem
         Caption = 'Create'
         OnClick = lmScriptTableCreateClick
@@ -1659,6 +2375,42 @@ object fmMain: TfmMain
     object lmCopyTable: TMenuItem
       Tag = 1
       Caption = 'Copy Table'
+      Bitmap.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000000000000000
+        000000000000A5A9A8009DA19F3EBBBDBCB9C1C3C2BDC2C4C3BCC4C7C6BCC7CA
+        C9BCC7CAC9BCB9BDBCBD949896A4888C893F6E7971027C847E00000000000000
+        000000000000BCBEBD00ABAEAD5CDFE0DFFDE8E8E8FFE8E8E8FFEBECECFFF1F1
+        F1FFF7F7F7FFEAEBEBFFAFB1B0FF9C9E9DE18C8F8D5D90989302010402010000
+        000100000001FFFFFF00ACAFAE5CE2E3E2FDEAEAEAFFE9E9E9FFE9E9E9FFEBEB
+        EBFFF0F0F0FFECEDECFFBDBFBEFFB4B6B5FF9C9F9EE1888D8A3AA9ACAB38BFC1
+        C052C0C2C152C2C4C34FB7B9B88FE3E4E4FDECECECFFEAEBEBFFEAEAEAFFE9E9
+        E9FFE9E9E9FFEBEBEBFFE6E7E6FFEBECECFFDCDEDDFBA2A6A468C1C3C35EE6E7
+        E782E7E7E781EAEAEA7FCCCECDAEE5E6E6FEEAEBEBFFE5E6E6FFE5E5E5FFE4E4
+        E4FFE3E3E3FFE3E3E3FFE4E4E4FFECECECFFE9E9E9FBAFB2B168C5C7C65CEAEA
+        EA80EAEAEA7FEBEBEB7DCBCCCCACE6E7E7FEE6E7E7FFD7D8D8FFD6D7D7FFD6D6
+        D6FFD5D6D6FFD5D5D5FFD4D4D4FFDCDCDCFFE2E2E2FBADB1B068C7C9C85CEBEC
+        EB80E2E2E27FDDDDDD7DC4C6C6ACE6E8E7FEE8E8E8FFD9DADAFFD8D9D9FFD7D8
+        D8FFD7D7D7FFD6D6D6FFDDDDDDFFE9EAEAFFE2E2E2FBAEB1B068C8CAC95CECED
+        ED80DFE0E07FD8D8D87DC2C4C3ACE6E8E7FEE9EAEAFFDBDCDCFFDBDCDCFFDADB
+        DBFFD9DADAFFD8D9D9FFDADADAFFE6E6E6FFE3E4E4FBAFB2B168C8CACA5CEDEE
+        EE80DFE0E07FD8D9D97DC2C4C3ACE6E8E7FEE9EAEAFFDCDDDDFFDCDDDDFFDBDC
+        DCFFDADBDBFFDADBDBFFD9DADAFFE4E4E4FFE4E5E5FBAFB2B168C8CACA5CEEEF
+        EF80E1E2E27FD9DADA7DC3C5C4ACE6E8E7FEE8E9E9FFDBDCDCFFDBDCDCFFDBDC
+        DCFFDBDCDCFFDADBDBFFD9DADAFFE1E1E1FFE4E5E5FBAFB2B168C8CACA5CEEEF
+        EF80E2E3E37FDCDDDD7DC4C6C6ACE6E7E7FEEFF0F0FFEEEFEFFFEEEFEFFFEEEF
+        EFFFEEEFEFFFEEEFEFFFEEEFEFFFEEEFEFFFE5E6E6FBAFB2B168C8CACA5CEEEF
+        EF80E2E3E37FDCDDDD7DC3C6C5ADE5E6E6FEEFF0F0FFEFEFEFFFEFEFEFFFEFEF
+        EFFFEFF0F0FFEFF0F0FFEFEFEFFFEFF0F0FFE5E6E6FBAEB1B069C8CACA5CEEEF
+        EF80E2E3E37FDBDCDC7EC8CAC99ACBCDCCCFD0D2D2D1D0D2D1D1D0D2D1D1D0D2
+        D1D1CBCDCCCBC6C8C7A9C8CAC9A3C8CAC9A4C1C4C39F9FA3A23DC8CACA5CEFEF
+        EF80EEEFEF7FEEEFEF7FEEEFEF7FEAEBEB80E9EBEA80E9EBEA80E9EAEA80EAEB
+        EB81D3D5D4707C807E1300000001000000020000000200000000C7C9C95DEEEF
+        EF81EFEFEF80EFEFEF80EFF0EF80EFF0F080EFF0F080EFF0F080EFF0F080F0F1
+        F181D8DAD9709095931092979500000000000000000000000000AEB2B140C6C9
+        C85DC7CAC95CC7CAC95CC7CAC95CC7CAC95CC7CAC95CC7CAC95CC7CAC95CC8CA
+        CA5DB9BCBB4F8C918F0A8E939100000000000000000000000000
+      }
       OnClick = lmCopyTableClick
     end
     object lmViewGen: TMenuItem

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 983 - 72
main.lrs


+ 115 - 95
main.pas

@@ -180,7 +180,7 @@ type
     sqlTransaction: TSQLTransaction;
     CurrentHistoryFile: string;
     fActivated: Boolean;
-    function FindCusomForm(ATitle: string; AClass: TClass): TComponent;
+    function FindCustomForm(ATitle: string; AClass: TClass): TComponent;
     procedure InitNewGen(DatabaseIndex: Integer);
     function GetServerNameNode(ServerName: string): TTreeNode;
     function RemoveSpecialChars(AText: string): string;
@@ -221,6 +221,7 @@ type
     function AddToSQLHistory(DatabaseTitle: string; SQLType, SQLStatement: string): Boolean;
     function SaveAndCloseSQLHistory: Boolean;
     function OpenSQLHistory(DatabaseTitle: string): Boolean;
+    function ConnectToDBAs(dbIndex: Integer): Boolean;
   end;
 
 var
@@ -336,9 +337,17 @@ begin
 end;
 
 procedure TfmMain.lmCompareClick(Sender: TObject);
+var
+  dbIndex: Integer;
 begin
-  fmComparison.Init(tvMain.Selected.OverlayIndex);
-  fmComparison.Show;
+  dbIndex:= tvMain.Selected.OverlayIndex;
+
+  if (RegisteredDatabases[dbIndex].RegRec.Password <> '') or
+  ConnectToDBAs(dbIndex) then
+  begin
+    fmComparison.Init(dbIndex);
+    fmComparison.Show;
+  end;
 end;
 
 procedure TfmMain.lmCopyRolePermissionClick(Sender: TObject);
@@ -394,7 +403,7 @@ begin
     MajorVer, MinorVer, Pages, PageSize, ProcessList) then
   with fmDBInfo do
   begin
-    fmDBInfo:= FindCusomForm(Title, TfmDBInfo) as TfmDBInfo;
+    fmDBInfo:= FindCustomForm(Title, TfmDBInfo) as TfmDBInfo;
 
     if fmDBInfo = nil then
     begin
@@ -627,17 +636,28 @@ end;
 (****************  Connect As  *****************)
 
 procedure TfmMain.lmConnectAsClick(Sender: TObject);
+begin
+  if ConnectToDBAs(tvMain.Selected.OverlayIndex) then
+    tvMain.Selected.Expand(False)
+  else
+    tvMain.Selected.Collapse(False);
+end;
+
+function TfmMain.ConnectToDBAs(dbIndex: Integer): Boolean;
 var
-  Node: TTreeNode;
   Rec: TRegisteredDatabase;
   Count: Integer;
 begin
-  Node:= tvMain.Selected;
-  Rec:= RegisteredDatabases[Node.OverlayIndex].RegRec;
+  Result:= False;
+  Rec:= RegisteredDatabases[dbIndex].RegRec;
   fmEnterPass.edUser.Text:= Rec.UserName;
   fmEnterPass.edPassword.Clear;
+  fmEnterPass.cbRole.Clear;
+  if Rec.Password <> '' then
   try
-    fmEnterPass.cbRole.Items.CommaText:= dmSysTables.GetDBObjectNames(Node.OverlayIndex, 9, Count);
+    fmEnterPass.cbRole.Items.CommaText:= dmSysTables.GetDBObjectNames(dbIndex, 9, Count);
+    fmEnterPass.cbRole.ItemIndex:= -1;
+    fmEnterPass.cbRole.Text:= '';
   except
   end;
   if fmEnterPass.ShowModal = mrOk then
@@ -645,14 +665,10 @@ begin
     if fmReg.TestConnection(Rec.DatabaseName, fmEnterPass.edUser.Text, fmEnterPass.edPassword.Text,
       Rec.Charset) then
       begin
-        RegisteredDatabases[Node.OverlayIndex].RegRec.UserName:= fmEnterPass.edUser.Text;
-        RegisteredDatabases[Node.OverlayIndex].RegRec.Password:= fmEnterPass.edPassword.Text;
-        RegisteredDatabases[Node.OverlayIndex].RegRec.Role:= fmEnterPass.cbRole.Text;
-        Node.Expand(False);
-      end
-      else
-      begin
-        Exit;
+        RegisteredDatabases[dbIndex].RegRec.UserName:= fmEnterPass.edUser.Text;
+        RegisteredDatabases[dbIndex].RegRec.Password:= fmEnterPass.edPassword.Text;
+        RegisteredDatabases[dbIndex].RegRec.Role:= fmEnterPass.cbRole.Text;
+        Result:= True;
       end;
   end;
 end;
@@ -906,7 +922,7 @@ begin
     dbIndex:= SelNode.Parent.Parent.OverlayIndex;
     ATableName:= SelNode.Text;
     Rec:= RegisteredDatabases[dbIndex];
-    EditForm:= TfmEditDataFullRec(FindCusomForm(Rec.RegRec.Title + ': Edit Data (Form) for Table : ' +
+    EditForm:= TfmEditDataFullRec(FindCustomForm(Rec.RegRec.Title + ': Edit Data (Form) for Table : ' +
       ATableName, TfmEditDataFullRec));
     if EditForm = nil then
     begin
@@ -969,7 +985,7 @@ begin
     ATableName:= SelNode.Text;
     dbIndex:= SelNode.Parent.Parent.OverlayIndex;
     Rec:= RegisteredDatabases[dbIndex];
-    EditWindow:= TfmEditTable(FindCusomForm(Rec.RegRec.Title + ': Edit Data for Table : ' + ATableName, TfmEditTable));
+    EditWindow:= TfmEditTable(FindCustomForm(Rec.RegRec.Title + ': Edit Data for Table : ' + ATableName, TfmEditTable));
     if EditWindow = nil then
     begin
       EditWindow:= TfmEditTable.Create(Application);
@@ -1450,28 +1466,44 @@ var
   Rec: TDatabaseRec;
   SelNode: TTreeNode;
   dbIndex: Integer;
+  Form: TfmNewTable;
+  Title: string;
+  ATab: TTabSheet;
 begin
   SelNode:= tvMain.Selected;
   dbIndex:= SelNode.Parent.OverlayIndex;
   Rec:= RegisteredDatabases[dbIndex];
 
-  fmNewTable.Init(dbIndex);
-  fmNewTable.ShowModal;
-  {= mrOK then
-    if fmNewTable.cxCreateGen.Checked then // Create Auto Inc generator
-    begin
-      InitNewGen(dbIndex);
-      fmNewGen.edGenName.Text:= GeneratorName;
-      fmNewGen.edGenName.Enabled:= True;
-      fmNewGen.cxTrigger.Checked:= True;
+{  fmNewTable.Init(dbIndex);
+  fmNewTable.ShowModal;}
+
+  Title:= SelNode.Parent.Text + ': New Table';
+
+  Form:= FindCustomForm(Title, TfmNewTable) as TfmNewTable;
+  if Form = nil then
+  begin
+    Form:= TfmNewTable.Create(Application);
+    ATab:= TTabSheet.Create(nil);
+    ATab.Parent:= PageControl1;
+    Form.Parent:= ATab;
+    Form.Caption:= Title;
+    ATab.Caption:= Form.Caption;
+    Form.Left:= 0;
+    Form.Top:= 0;
+    Form.BorderStyle:= bsNone;
+    Form.Align:= alClient;
+    Form.Init(dbIndex);
+  end
+  else
+    ATab:= Form.Parent as TTabSheet;
+  PageControl1.ActivePage:= ATab;
+  Form.Show;
+  Form.edNewTable.SetFocus;
+
+
+  ATab.Tag:= dbIndex;
+  PageControl1.ActivePage:= ATab;
 
-      // Select table name as default in create new generator form
-      fmNewGen.cbTables.ItemIndex:= fmNewGen.cbTables.Items.IndexOf(UpperCase(Trim(fmNewTable.edNewTable.Text)));
-      fmNewGen.cbTablesChange(nil);
-      fmNewGen.gbTrigger.Enabled:= False;
-      fmNewGen.cxTrigger.Enabled:= False;
-      fmNewGen.Show;
-    end;}
 end;
 
 (*************  Create new function  ******************)
@@ -1493,11 +1525,11 @@ begin
   begin
     QWindow:= ShowQueryWindow(SelNode.Parent.OverlayIndex, 'Create new function');
     QWindow.meQuery.Lines.Clear;
-    QWindow.meQuery.Lines.Add('DEFINE EXTERNAL FUNCTION ' + AFuncName + ' [<datatype> | CSTRING (int)');
-    QWindow.meQuery.Lines.Add('[, <datatype> | CSTRING (int) ...]]');
-    QWindow.meQuery.Lines.Add('RETURNS {<datatype> [BY VALUE] | CSTRING (int)}');
-    QWindow.meQuery.Lines.Add('ENTRY_POINT "' + entryPoint + '"');
-    QWindow.meQuery.Lines.Add('MODULE_NAME "' + modulename + '" ;');
+    QWindow.meQuery.Lines.Add('DECLARE EXTERNAL FUNCTION "' + AFuncName + '"');
+    QWindow.meQuery.Lines.Add('-- (int, varchar(100))');
+    QWindow.meQuery.Lines.Add('RETURNS (int)');
+    QWindow.meQuery.Lines.Add('ENTRY_POINT ''' + entryPoint + '''');
+    QWindow.meQuery.Lines.Add('MODULE_NAME ''' + modulename + ''' ;');
     QWindow.Show;
   end;
 end;
@@ -1557,7 +1589,7 @@ begin
   List.CommaText:= dmSysTables.GetUserObjects(dbIndex, UserName);
   Title:= 'Permissions for: ' + UserName;
 
-  Form:= FindCusomForm(Title, TfmUserPermissions) as TfmUserPermissions;
+  Form:= FindCustomForm(Title, TfmUserPermissions) as TfmUserPermissions;
   if Form = nil then
   begin
     Form:= TfmUserPermissions.Create(Application);
@@ -1634,7 +1666,7 @@ var
   dbIndex: Integer;
 begin
   Title:= 'Permission management for: ' + tvMain.Selected.Text;
-  fmPermissions:= FindCusomForm(Title, TfmPermissionManage) as TfmPermissionManage;
+  fmPermissions:= FindCustomForm(Title, TfmPermissionManage) as TfmPermissionManage;
   if fmPermissions = nil then
   begin
     fmPermissions:= TfmPermissionManage.Create(nil);
@@ -2198,7 +2230,7 @@ begin
 
     Title:= RegisteredDatabases[dbIndex].RegRec.Title +  ': Management of : ' + SelNode.Text;
     // Fields
-    fmTableManage:= FindCusomForm(Title, TfmTableManage) as TfmTableManage;
+    fmTableManage:= FindCustomForm(Title, TfmTableManage) as TfmTableManage;
     if fmTableManage = nil then
     begin
       fmTableManage:= TfmTableManage.Create(Application);
@@ -2263,13 +2295,15 @@ var
   DefaultValue: string;
   ATab: TTabSheet;
   dbIndex: Integer;
+  Title: string;
 begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     ADomainName:= SelNode.Text;
-    //ADomainForm:= TfmViewDomain(FindCusomForm('Domain : ' + ADomainName, TfmViewDomain));
-    //if ADomainForm  = nil then
+    Title:= SelNode.Parent.Parent.Text + ': Domain: ' + ADomainName;
+    ADomainForm:= TfmViewDomain(FindCustomForm(Title, TfmViewDomain));
+    if ADomainForm  = nil then
     begin
       ADomainForm:= TfmViewDomain.Create(Application);
       ATab:= TTabSheet.Create(nil);
@@ -2280,7 +2314,11 @@ begin
       ADomainForm.BorderStyle:= bsNone;
       ADomainForm.Align:= alClient;
       PageControl1.ActivePage:= ATab;
-    end;
+    end
+    else
+      ATab:= ADomainForm.Parent as TTabSheet;
+    PageControl1.ActivePage:= ATab;
+
 
     dbIndex:= SelNode.Parent.Parent.OverlayIndex;
     dmSysTables.GetDomainInfo(dbIndex, ADomainName, DomainType, DomainSize, DefaultValue);
@@ -2293,7 +2331,7 @@ begin
     // Fill ViewDomain form
     with ADomainForm do
     begin
-      Caption:= 'Domain : ' + ADomainName;
+      Caption:= Title;
       ATab.Caption:= Caption;
       edName.Caption:= ADomainName;
       laType.Caption:= DomainType;
@@ -2588,6 +2626,8 @@ begin
     SQLQuery1.Close;
     Params:= Params + ')' + #10 + #10 + 'Returns ';
 
+    {todo: return values cann't be determined}
+
     // Result Params
     SQLQuery1.SQL.Text:= 'SELECT * FROM RDB$FUNCTION_ARGUMENTS where RDB$FUNCTION_Name = ''' +
      UDFName + ''' and RDB$MECHANISM = 0';
@@ -3094,7 +3134,7 @@ begin
 
     // Fill ViewGen form
     Title:= 'Generator : ' + AGenName;
-    fmViewGen:= FindCusomForm(Title, TfmViewGen) as TfmViewGen;
+    fmViewGen:= FindCustomForm(Title, TfmViewGen) as TfmViewGen;
     if fmViewGen = nil then
     begin
       fmViewGen:= TfmViewGen.Create(Application);
@@ -3144,7 +3184,7 @@ begin
     SPBody:= GetStoredProcBody(dbIndex, AProcName, SPOwner);
     Title:= SelNode.Parent.Parent.Text +  ': StoredProcedure : ' + AProcName;
     // Fill SProc Parameters
-    fmViewSProc:= FindCusomForm(Title, TfmViewSProc) as TfmViewSProc;
+    fmViewSProc:= FindCustomForm(Title, TfmViewSProc) as TfmViewSProc;
     if fmViewSProc = nil then
     begin
       fmViewSProc:= TfmViewSProc.Create(Application);
@@ -3206,7 +3246,7 @@ begin
       Event, Body, TriggerEnabled, TriggerPosition);
 
     // Fill ViewTrigger form
-    fmViewTrigger:= FindCusomForm(Title, TfmViewTrigger) as TfmViewTrigger;
+    fmViewTrigger:= FindCustomForm(Title, TfmViewTrigger) as TfmViewTrigger;
     if fmViewTrigger = nil then
     begin
       fmViewTrigger:= TfmViewTrigger.Create(Application);
@@ -3259,27 +3299,37 @@ var
   Params: string;
   ATab: TTabSheet;
   dbIndex: Integer;
+  Title: string;
 begin
   SelNode:= tvMain.Selected;
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     AFuncName:= SelNode.Text;
+    Title:= SelNode.Parent.Parent.Text + ': UDF: ' + AFuncName;
     dbIndex:= SelNode.Parent.Parent.OverlayIndex;
+
     if GetUDFInfo(dbIndex, AFuncName, ModuleName, EntryPoint, Params) then
     with fmUDFINfo do
     begin
-      fmUDFInfo:= TfmUDFInfo.Create(nil);
-      ATab:= TTabSheet.Create(nil);
-      ATab.Parent:= PageControl1;
-      fmUDFInfo.Parent:= ATab;
-      ATab.Tag:= dbIndex;
-      fmUDFInfo.Left:= 0;
-      fmUDFInfo.Top:= 0;
-      fmUDFInfo.BorderStyle:= bsNone;
-      fmUDFInfo.Align:= alClient;
+      fmUDFInfo:= FindCustomForm(Title, TfmUDFInfo) as TfmUDFInfo;
+      if fmUDFInfo = nil then
+      begin
+        fmUDFInfo:= TfmUDFInfo.Create(Application);
+        fmUDFInfo.Caption:= Title;
+        ATab:= TTabSheet.Create(nil);
+        ATab.Parent:= PageControl1;
+        fmUDFInfo.Parent:= ATab;
+        ATab.Tag:= dbIndex;
+        fmUDFInfo.Left:= 0;
+        fmUDFInfo.Top:= 0;
+        fmUDFInfo.BorderStyle:= bsNone;
+        fmUDFInfo.Align:= alClient;
+      end
+      else
+        ATab:= fmUDFInfo.Parent as TTabSheet;
+
       PageControl1.ActivePage:= ATab;
-      Caption:= 'Function : ' + AFuncName;
-      ATab.Caption:= Caption;
+      ATab.Caption:= Title;
       edName.Caption:= AFuncName;
       edModule.Caption:= ModuleName;
       edEntry.Caption:= EntryPoint;
@@ -3644,40 +3694,10 @@ begin
     RegisteredDatabases[Node.OverlayIndex].OrigRegRec.LastOpened:= Now;
     // Password form
     if Rec.Password = '' then
-    begin
-      fmEnterPass.edUser.Text:= Rec.UserName;
-      fmEnterPass.cbRole.Text:= Rec.Role;
-      fmEnterPass.edPassword.Clear;
-      try
-        fmEnterPass.cbRole.Items.CommaText:= dmSysTables.GetDBObjectNames(Node.OverlayIndex, 9, Count);
-      except
-      end;
-
-      if fmEnterPass.ShowModal = mrOk then
-      begin
-        if fmReg.TestConnection(Rec.DatabaseName, fmEnterPass.edUser.Text, fmEnterPass.edPassword.Text,
-          Rec.Charset) then
-          begin
-           { Self.ibConnection.Close;
-            Self.ibConnection.UserName:= fmEnterPass.edUser.Text;
-            Self.ibConnection.Password:= fmEnterPass.edPassword.Text;}
-
-            RegisteredDatabases[Node.OverlayIndex].RegRec.UserName:= fmEnterPass.edUser.Text;
-            RegisteredDatabases[Node.OverlayIndex].RegRec.Password:= fmEnterPass.edPassword.Text;
-            RegisteredDatabases[Node.OverlayIndex].RegRec.Role:= fmEnterPass.cbRole.Text;
-            Node.Expand(False);
-          end
-          else
-          begin
-            Exit;
-          end;
-      end
-      else
-      begin
-        Node.Collapse(False);
-        Exit;
-      end;
-    end;
+    if ConnectToDBAs(Node.OverlayIndex) then
+      Node.Expand(False)
+    else
+      Node.Collapse(False);
   end
   else  // Expand objects root (Tables, Procedures, etc)
   if (Node.Parent <> nil) and (Node.Parent.Parent <> nil) and (Node.Parent.Parent.Parent = nil) and (not Node.Expanded) then
@@ -3841,7 +3861,7 @@ end;
 
 (**********************   Find CustomForm   *********************************)
 
-function TfmMain.FindCusomForm(ATitle: string; AClass: TClass): TComponent;
+function TfmMain.FindCustomForm(ATitle: string; AClass: TClass): TComponent;
 var
   i: Integer;
 begin

+ 23 - 9
newtable.lfm

@@ -11,7 +11,7 @@ object fmNewTable: TfmNewTable
   Position = poScreenCenter
   LCLVersion = '0.9.31'
   object Label1: TLabel
-    Left = 8
+    Left = 18
     Height = 15
     Top = 9
     Width = 84
@@ -21,17 +21,17 @@ object fmNewTable: TfmNewTable
     ParentFont = False
   end
   object edNewTable: TEdit
-    Left = 8
+    Left = 18
     Height = 27
     Top = 28
     Width = 153
     TabOrder = 0
   end
   object StringGrid1: TStringGrid
-    Left = 8
+    Left = 19
     Height = 374
     Top = 59
-    Width = 575
+    Width = 573
     Anchors = [akTop, akLeft, akRight, akBottom]
     ColCount = 6
     Columns = <    
@@ -82,10 +82,11 @@ object fmNewTable: TfmNewTable
     Color = 16249563
     Kind = bkCancel
     ModalResult = 2
+    OnClick = BitBtn2Click
     TabOrder = 2
   end
   object bbScript: TBitBtn
-    Left = 5
+    Left = 19
     Height = 32
     Top = 488
     Width = 118
@@ -98,13 +99,26 @@ object fmNewTable: TfmNewTable
     TabOrder = 3
   end
   object cxCreateGen: TCheckBox
-    Left = 8
-    Height = 22
-    Top = 449
-    Width = 326
+    Left = 18
+    Height = 24
+    Top = 447
+    Width = 328
     Anchors = [akLeft, akBottom]
     Caption = 'Create Auto increment Generator and Trigger'
     OnClick = cxCreateGenClick
     TabOrder = 4
   end
+  object bbClose: TBitBtn
+    Left = 560
+    Height = 24
+    Top = 0
+    Width = 27
+    Anchors = [akTop, akRight]
+    Caption = ' X  '
+    Color = 16249563
+    Font.Style = [fsBold]
+    OnClick = bbCloseClick
+    ParentFont = False
+    TabOrder = 5
+  end
 end

+ 16 - 13
newtable.lrs

@@ -5,12 +5,12 @@ LazarusResources.Add('TfmNewTable','FORMDATA',[
   +'.'#1#5'Width'#3'R'#2#13'ActiveControl'#7#10'edNewTable'#7'Caption'#6#9'New '
   +'Table'#12'ClientHeight'#3#23#2#11'ClientWidth'#3'R'#2#7'OnClose'#7#9'FormCl'
   +'ose'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TLabel'
-  +#6'Label1'#4'Left'#2#8#6'Height'#2#15#3'Top'#2#9#5'Width'#2'T'#7'Caption'#6
+  +#6'Label1'#4'Left'#2#18#6'Height'#2#15#3'Top'#2#9#5'Width'#2'T'#7'Caption'#6
   +#14'New Table name'#11'Font.Height'#2#245#11'ParentColor'#8#10'ParentFont'#8
-  +#0#0#5'TEdit'#10'edNewTable'#4'Left'#2#8#6'Height'#2#27#3'Top'#2#28#5'Width'
-  +#3#153#0#8'TabOrder'#2#0#0#0#11'TStringGrid'#11'StringGrid1'#4'Left'#2#8#6'H'
-  +'eight'#3'v'#1#3'Top'#2';'#5'Width'#3'?'#2#7'Anchors'#11#5'akTop'#6'akLeft'#7
-  +'akRight'#8'akBottom'#0#8'ColCount'#2#6#7'Columns'#14#1#13'Title.Caption'#6
+  +#0#0#5'TEdit'#10'edNewTable'#4'Left'#2#18#6'Height'#2#27#3'Top'#2#28#5'Width'
+  +#3#153#0#8'TabOrder'#2#0#0#0#11'TStringGrid'#11'StringGrid1'#4'Left'#2#19#6
+  +'Height'#3'v'#1#3'Top'#2';'#5'Width'#3'='#2#7'Anchors'#11#5'akTop'#6'akLeft'
+  +#7'akRight'#8'akBottom'#0#8'ColCount'#2#6#7'Columns'#14#1#13'Title.Caption'#6
   +#10'Field Name'#5'Width'#2'd'#0#1#13'Title.Caption'#6#9'Data Type'#5'Width'#2
   +'x'#0#1#13'Title.Caption'#6#4'Size'#0#1#11'ButtonStyle'#7#17'cbsCheckboxColu'
   +'mn'#13'Title.Caption'#6#10'Allow Null'#5'Width'#2'Z'#0#1#11'ButtonStyle'#7
@@ -24,12 +24,15 @@ LazarusResources.Add('TfmNewTable','FORMDATA',[
   +'ect'#7#25'StringGrid1PickListSelect'#0#0#7'TBitBtn'#7'BitBtn2'#4'Left'#3#216
   +#1#6'Height'#2' '#3'Top'#3#232#1#5'Width'#2'`'#7'Anchors'#11#6'akLeft'#8'akB'
   +'ottom'#0#6'Cancel'#9#7'Caption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'Kind'
-  +#7#8'bkCancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#7'TBitBtn'#8'bbScript'
-  +#4'Left'#2#5#6'Height'#2' '#3'Top'#3#232#1#5'Width'#2'v'#7'Anchors'#11#6'akL'
-  +'eft'#8'akBottom'#0#7'Caption'#6#6'Script'#5'Color'#4#219#242#247#0#7'Defaul'
-  +'t'#9#4'Kind'#7#5'bkYes'#7'OnClick'#7#13'bbScriptClick'#8'TabOrder'#2#3#0#0#9
-  +'TCheckBox'#11'cxCreateGen'#4'Left'#2#8#6'Height'#2#22#3'Top'#3#193#1#5'Widt'
-  +'h'#3'F'#1#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6'+Create Auto i'
-  +'ncrement Generator and Trigger'#7'OnClick'#7#16'cxCreateGenClick'#8'TabOrde'
-  +'r'#2#4#0#0#0
+  +#7#8'bkCancel'#11'ModalResult'#2#2#7'OnClick'#7#12'BitBtn2Click'#8'TabOrder'
+  +#2#2#0#0#7'TBitBtn'#8'bbScript'#4'Left'#2#19#6'Height'#2' '#3'Top'#3#232#1#5
+  +'Width'#2'v'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#6'Script'#5
+  +'Color'#4#219#242#247#0#7'Default'#9#4'Kind'#7#5'bkYes'#7'OnClick'#7#13'bbSc'
+  +'riptClick'#8'TabOrder'#2#3#0#0#9'TCheckBox'#11'cxCreateGen'#4'Left'#2#18#6
+  +'Height'#2#24#3'Top'#3#191#1#5'Width'#3'H'#1#7'Anchors'#11#6'akLeft'#8'akBot'
+  +'tom'#0#7'Caption'#6'+Create Auto increment Generator and Trigger'#7'OnClick'
+  +#7#16'cxCreateGenClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#7'bbClose'#4'Left'#3
+  +'0'#2#6'Height'#2#24#3'Top'#2#0#5'Width'#2#27#7'Anchors'#11#5'akTop'#7'akRig'
+  +'ht'#0#7'Caption'#6#4' X  '#5'Color'#4#219#242#247#0#10'Font.Style'#11#6'fsB'
+  +'old'#0#7'OnClick'#7#12'bbCloseClick'#10'ParentFont'#8#8'TabOrder'#2#5#0#0#0
 ]);

+ 16 - 13
newtable.pas

@@ -14,17 +14,19 @@ type
   { TfmNewTable }
 
   TfmNewTable = class(TForm)
+    bbClose: TBitBtn;
     bbScript: TBitBtn;
     BitBtn2: TBitBtn;
     cxCreateGen: TCheckBox;
     edNewTable: TEdit;
     Label1: TLabel;
     StringGrid1: TStringGrid;
+    procedure bbCloseClick(Sender: TObject);
     procedure bbScriptClick(Sender: TObject);
+    procedure BitBtn2Click(Sender: TObject);
     procedure cxCreateGenClick(Sender: TObject);
     procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
     procedure StringGrid1ChangeBounds(Sender: TObject);
-    procedure StringGrid1EditingDone(Sender: TObject);
     procedure StringGrid1KeyUp(Sender: TObject; var Key: Word;
       Shift: TShiftState);
     procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
@@ -140,17 +142,6 @@ begin
   end;
 end;
 
-procedure TfmNewTable.StringGrid1EditingDone(Sender: TObject);
-var
-  SelType: string;
-begin
-//  if (StringGrid1.Col = 1) and (Trim(StringGrid1.Cells[2, StringGrid1.Row]) = '') then
-//  begin
-//    SelType:= StringGrid1.Cells[1, StringGrid1.Row];
-//    StringGrid1.Cells[2, StringGrid1.Row]:= IntToStr(dmSysTables.GetDefaultTypeSize(fdbIndex, SelType));
-//  end;
-
-end;
 
 procedure TfmNewTable.bbScriptClick(Sender: TObject);
 var
@@ -166,6 +157,7 @@ begin
     List.Add('-- Generator');
     List.Add('create generator ' + GeneratorName + ';');
 
+    List.Add('');
     List.Add('-- Trigger');
     List.Add('CREATE TRIGGER ' + GeneratorName + ' FOR ' + edNewTable.Text);
     List.Add('ACTIVE BEFORE INSERT POSITION 0 ');
@@ -177,7 +169,18 @@ begin
 
   fmMain.ShowCompleteQueryWindow(fdbIndex, 'Create New Table: ' + edNewTable.Text, List.Text);
   List.Free;
+  bbCloseClick(nil);
+end;
+
+procedure TfmNewTable.BitBtn2Click(Sender: TObject);
+begin
+  bbCloseClick(nil);
+end;
+
+procedure TfmNewTable.bbCloseClick(Sender: TObject);
+begin
   Close;
+  Parent.Free;
 end;
 
 procedure TfmNewTable.cxCreateGenClick(Sender: TObject);
@@ -188,7 +191,7 @@ end;
 
 procedure TfmNewTable.FormClose(Sender: TObject; var CloseAction: TCloseAction);
 begin
-  StringGrid1.Row:= 1;
+  CloseAction:= caFree;
 end;
 
 procedure TfmNewTable.StringGrid1ChangeBounds(Sender: TObject);

+ 2 - 2
permissionmanage.lfm

@@ -474,9 +474,9 @@ object fmPermissionManage: TfmPermissionManage
     end
   end
   object bbClose: TBitBtn
-    Left = 491
+    Left = 488
     Height = 24
-    Top = 0
+    Top = -1
     Width = 27
     Anchors = [akTop, akRight]
     Caption = ' X  '

+ 4 - 4
permissionmanage.lrs

@@ -114,8 +114,8 @@ LazarusResources.Add('TfmPermissionManage','FORMDATA',[
   +'lick'#8'TabOrder'#2#3#0#0#9'TCheckBox'#11'cxRoleGrant'#4'Left'#3#246#0#6'He'
   +'ight'#2#24#3'Top'#3'0'#1#5'Width'#2'i'#7'Anchors'#11#6'akLeft'#8'akBottom'#0
   +#7'Caption'#6#10'With Admin'#8'OnChange'#7#17'cxRoleGrantChange'#8'TabOrder'
-  +#2#4#0#0#0#0#7'TBitBtn'#7'bbClose'#4'Left'#3#235#1#6'Height'#2#24#3'Top'#2#0
-  +#5'Width'#2#27#7'Anchors'#11#5'akTop'#7'akRight'#0#7'Caption'#6#4' X  '#5'Co'
-  +'lor'#4#219#242#247#0#10'Font.Style'#11#6'fsBold'#0#7'OnClick'#7#12'bbCloseC'
-  +'lick'#10'ParentFont'#8#8'TabOrder'#2#1#0#0#0
+  +#2#4#0#0#0#0#7'TBitBtn'#7'bbClose'#4'Left'#3#232#1#6'Height'#2#24#3'Top'#2
+  +#255#5'Width'#2#27#7'Anchors'#11#5'akTop'#7'akRight'#0#7'Caption'#6#4' X  '#5
+  +'Color'#4#219#242#247#0#10'Font.Style'#11#6'fsBold'#0#7'OnClick'#7#12'bbClos'
+  +'eClick'#10'ParentFont'#8#8'TabOrder'#2#1#0#0#0
 ]);

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно