Procházet zdrojové kódy

Writing comments in QueryWindow unit

	modified:   TurboBird.lpi
	modified:   TurboBird.lpr
	modified:   TurboBird.res
	modified:   querywindow.pas
motaz před 12 roky
rodič
revize
0947e5f734
4 změnil soubory, kde provedl 262 přidání a 58 odebrání
  1. 49 45
      TurboBird.lpi
  2. 4 2
      TurboBird.lpr
  3. binární
      TurboBird.res
  4. 209 11
      querywindow.pas

+ 49 - 45
TurboBird.lpi

@@ -17,8 +17,8 @@
       <UseVersionInfo Value="True"/>
       <AutoIncrementBuild Value="True"/>
       <MinorVersionNr Value="9"/>
-      <RevisionNr Value="11"/>
-      <BuildNr Value="1092"/>
+      <RevisionNr Value="12"/>
+      <BuildNr Value="1093"/>
       <StringTable ProductVersion="0.9"/>
     </VersionInfo>
     <BuildModes Count="1">
@@ -60,10 +60,11 @@
         <Filename Value="TurboBird.lpr"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="TurboBird"/>
+        <IsVisibleTab Value="True"/>
         <EditorIndex Value="1"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="16"/>
-        <CursorPos X="37" Y="5"/>
+        <TopLine Value="1"/>
+        <CursorPos X="15" Y="30"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
       </Unit0>
@@ -117,15 +118,14 @@
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="QueryWindow"/>
-        <IsVisibleTab Value="True"/>
         <EditorIndex Value="0"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="95"/>
-        <CursorPos X="19" Y="103"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
         <UsageCount Value="200"/>
         <Bookmarks Count="2">
-          <Item0 X="3" Y="1032" ID="0"/>
-          <Item1 X="3" Y="1851" ID="1"/>
+          <Item0 X="3" Y="1126" ID="0"/>
+          <Item1 X="3" Y="2009" ID="1"/>
         </Bookmarks>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
@@ -727,7 +727,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="37"/>
         <CursorPos X="31" Y="63"/>
-        <UsageCount Value="186"/>
+        <UsageCount Value="187"/>
       </Unit71>
       <Unit72>
         <Filename Value="../../lazarus/lazarus/lcl/include/menuitem.inc"/>
@@ -753,7 +753,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="51" Y="14"/>
-        <UsageCount Value="157"/>
+        <UsageCount Value="158"/>
       </Unit74>
       <Unit75>
         <Filename Value="/usr/lib/lazarus/0.9.30/lcl/comctrls.pp"/>
@@ -946,7 +946,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="64"/>
         <CursorPos X="16" Y="66"/>
-        <UsageCount Value="125"/>
+        <UsageCount Value="126"/>
       </Unit98>
       <Unit99>
         <Filename Value="../../FromInternet/fpc2.4/fpc-2.4.4/packages/ibase/src/ibase60dyn.pp"/>
@@ -981,7 +981,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="15" Y="255"/>
-        <UsageCount Value="112"/>
+        <UsageCount Value="113"/>
       </Unit102>
       <Unit103>
         <Filename Value="/usr/share/fpcsrc/2.6.0/rtl/inc/systemh.inc"/>
@@ -1015,7 +1015,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="1" Y="1"/>
-        <UsageCount Value="58"/>
+        <UsageCount Value="59"/>
       </Unit106>
       <Unit107>
         <Filename Value="../../../lazarus/lcl/interfaces/win32/win32object.inc"/>
@@ -1092,7 +1092,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="151"/>
         <CursorPos X="40" Y="171"/>
-        <UsageCount Value="22"/>
+        <UsageCount Value="23"/>
       </Unit116>
       <Unit117>
         <Filename Value="querycomplition.txt"/>
@@ -1103,123 +1103,127 @@
         <DefaultSyntaxHighlighter Value="None"/>
       </Unit117>
     </Units>
-    <JumpHistory Count="29" HistoryIndex="28">
+    <JumpHistory Count="30" HistoryIndex="29">
       <Position1>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="188" Column="21" TopLine="158"/>
+        <Caret Line="168" Column="27" TopLine="137"/>
       </Position1>
       <Position2>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="190" Column="13" TopLine="159"/>
+        <Caret Line="175" Column="24" TopLine="145"/>
       </Position2>
       <Position3>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="221" Column="35" TopLine="204"/>
+        <Caret Line="188" Column="21" TopLine="158"/>
       </Position3>
       <Position4>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="223" Column="9" TopLine="204"/>
+        <Caret Line="190" Column="13" TopLine="159"/>
       </Position4>
       <Position5>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="225" Column="9" TopLine="204"/>
+        <Caret Line="221" Column="35" TopLine="204"/>
       </Position5>
       <Position6>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="226" Column="9" TopLine="204"/>
+        <Caret Line="223" Column="9" TopLine="204"/>
       </Position6>
       <Position7>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="227" Column="27" TopLine="204"/>
+        <Caret Line="225" Column="9" TopLine="204"/>
       </Position7>
       <Position8>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="228" Column="9" TopLine="204"/>
+        <Caret Line="226" Column="9" TopLine="204"/>
       </Position8>
       <Position9>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="229" Column="9" TopLine="204"/>
+        <Caret Line="227" Column="27" TopLine="204"/>
       </Position9>
       <Position10>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="230" Column="27" TopLine="204"/>
+        <Caret Line="228" Column="9" TopLine="204"/>
       </Position10>
       <Position11>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="231" Column="9" TopLine="204"/>
+        <Caret Line="229" Column="9" TopLine="204"/>
       </Position11>
       <Position12>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="232" Column="32" TopLine="204"/>
+        <Caret Line="230" Column="27" TopLine="204"/>
       </Position12>
       <Position13>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="443" Column="23" TopLine="412"/>
+        <Caret Line="231" Column="9" TopLine="204"/>
       </Position13>
       <Position14>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="483" Column="38" TopLine="451"/>
+        <Caret Line="232" Column="32" TopLine="204"/>
       </Position14>
       <Position15>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="489" Column="58" TopLine="457"/>
+        <Caret Line="443" Column="23" TopLine="412"/>
       </Position15>
       <Position16>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="529" Column="32" TopLine="497"/>
+        <Caret Line="483" Column="38" TopLine="451"/>
       </Position16>
       <Position17>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="531" Column="18" TopLine="499"/>
+        <Caret Line="489" Column="58" TopLine="457"/>
       </Position17>
       <Position18>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="585" Column="23" TopLine="553"/>
+        <Caret Line="529" Column="32" TopLine="497"/>
       </Position18>
       <Position19>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="586" Column="20" TopLine="554"/>
+        <Caret Line="531" Column="18" TopLine="499"/>
       </Position19>
       <Position20>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="588" Column="23" TopLine="556"/>
+        <Caret Line="585" Column="23" TopLine="553"/>
       </Position20>
       <Position21>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="589" Column="20" TopLine="557"/>
+        <Caret Line="586" Column="20" TopLine="554"/>
       </Position21>
       <Position22>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="655" Column="34" TopLine="623"/>
+        <Caret Line="588" Column="23" TopLine="556"/>
       </Position22>
       <Position23>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="904" Column="27" TopLine="775"/>
+        <Caret Line="589" Column="20" TopLine="557"/>
       </Position23>
       <Position24>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Caret Line="655" Column="34" TopLine="623"/>
       </Position24>
       <Position25>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="760" Column="27" TopLine="730"/>
+        <Caret Line="904" Column="27" TopLine="775"/>
       </Position25>
       <Position26>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="1550" Column="3" TopLine="1521"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position26>
       <Position27>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Caret Line="760" Column="27" TopLine="730"/>
       </Position27>
       <Position28>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="817" Column="16" TopLine="804"/>
+        <Caret Line="1550" Column="3" TopLine="1521"/>
       </Position28>
       <Position29>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="855" Column="39" TopLine="825"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position29>
+      <Position30>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="2134" Column="69" TopLine="2098"/>
+      </Position30>
     </JumpHistory>
   </ProjectOptions>
   <CompilerOptions>

+ 4 - 2
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      : 22.Jun.2013                                          }
+{  Last updated      : 24.Jun.2013                                          }
 {  License           : GPL for GUI, LGPL for Units                          }
 {***************************************************************************}
 
@@ -27,7 +27,7 @@ uses
 const
   Major = 0;
   Minor = 9;
-  Release = 11;
+  Release = 12;
 
   VersionDate = '2010 - June 2013';
 {$IFDEF Unix}
@@ -49,6 +49,8 @@ var
 begin
   Application.Initialize;
   IBaseLibraryHandle:= LoadLibrary(fbclib);
+
+  // search for all compatible FireBird libraries in Windows
   {$IFDEF Windows}
   if IBaseLibraryHandle = NilHandle then
     IBaseLibraryHandle:= LoadLibrary(seclib);

binární
TurboBird.res


+ 209 - 11
querywindow.pas

@@ -178,8 +178,6 @@ type
     procedure RemoveAllSingleLineComments(QueryList: TStringList);
     procedure removeEmptyLines(QueryList: TStringList;
       var SecondRealStart: Integer; const RealStartLine: Integer);
-    procedure StartEdit(Sender: TObject; const Field: TField;
-      var Value: string);
     procedure InsertModifiedRecord(RecordNo, TabIndex: Integer);
     procedure ApplyClick(Sender: TObject);
     procedure EnableApplyButton;
@@ -219,6 +217,9 @@ implementation
 
 uses main, SQLHistory;
 
+
+{ NewCommitButton: Create commit button for editable query result }
+
 procedure TfmQueryWindow.NewCommitButton(const Pan: TPanel; var ATab: TTabSheet);
 var
   Commit: TBitBtn;
@@ -233,6 +234,9 @@ begin
   AddResultControl(ATab, Commit);
 end;
 
+
+{ RemoveComments: Remove comments from Query window }
+
 procedure TfmQueryWindow.RemoveComments(QueryList: TStringList; StartLine: Integer; var RealStartLine: Integer);
 var
   Comment: Boolean;
@@ -274,6 +278,9 @@ begin
   end;
 end;
 
+
+{ RemoveAllSingleLineComments: remove single line comments from query }
+
 procedure TfmQueryWindow.RemoveAllSingleLineComments(QueryList: TStringList);
 var
   i: Integer;
@@ -289,7 +296,10 @@ begin
 
 end;
 
-procedure TfmQueryWindow.removeEmptyLines(QueryList: TStringList; var SecondRealStart: Integer;
+
+{ RemoveEmptyLines: remove empty lines in query }
+
+procedure TfmQueryWindow.RemoveEmptyLines(QueryList: TStringList; var SecondRealStart: Integer;
   const RealStartLine: Integer);
 var
   i: integer;
@@ -306,16 +316,17 @@ end;
 
 { TQueryThread }
 
+
+{ FinishCellEditing: Insert current been edited record in ModifiedRecords array }
+
 procedure TfmQueryWindow.FinishCellEditing(DataSet: TDataSet);
 begin
   InsertModifiedRecord(Dataset.RecNo, PageControl1.TabIndex);
 end;
 
-procedure TfmQueryWindow.StartEdit(Sender: TObject; const Field: TField;
-  var Value: string);
-begin
-  ShowMessage('Editing started: ' + Value);
-end;
+
+
+{ InsertMOdifiedRecord: insert modified query record in ModifiedRecords array }
 
 procedure TfmQueryWindow.InsertModifiedRecord(RecordNo, TabIndex: Integer);
 var
@@ -350,6 +361,9 @@ begin
 
 end;
 
+
+{ ApplyClick: Save Updates for the query }
+
 procedure TfmQueryWindow.ApplyClick(Sender: TObject);
 var
   i, x: Integer;
@@ -468,6 +482,9 @@ begin
 
 end;
 
+
+{ EnableApplyButton: enable save updates button when records has been modified }
+
 procedure TfmQueryWindow.EnableApplyButton;
 var
   i: Integer;
@@ -481,6 +498,9 @@ begin
   end;
 end;
 
+
+{ EnableCommitButton: enable commit button after applying updates }
+
 procedure TfmQueryWindow.EnableCommitButton;
 var
   i: Integer;
@@ -494,6 +514,9 @@ begin
   end;
 end;
 
+
+{ GetTableName: get table name from query text }
+
 function TfmQueryWindow.GetTableName(SQLText: string): string;
 begin
   SQLText:= Trim(Copy(SQLText, Pos('from', LowerCase(SQLText)) + 4, Length(SQLText)));
@@ -514,6 +537,9 @@ begin
 
 end;
 
+
+{ GetCurrentSQLText: return current SQL query text }
+
 function TfmQueryWindow.GetCurrentSQLText: string;
 var
   i: Integer;
@@ -527,12 +553,18 @@ begin
 
 end;
 
+
+{ CommitResultClick: commit current transaction }
+
 procedure TfmQueryWindow.CommitResultClick(Sender: TObject);
 begin
   SqlTrans.CommitRetaining;
   (Sender as TBitBtn).Visible:= False;
 end;
 
+
+{ GetRecordSet: return result recordset of a page tab }
+
 function TfmQueryWindow.GetRecordSet(TabIndex: Integer): TSQLQuery;
 var
   i: Integer;
@@ -546,6 +578,9 @@ begin
 
 end;
 
+
+{ GetQuerySQLType: get query type: select, script, execute from current string list }
+
 function TfmQueryWindow.getQuerySQLType(QueryList: TStringList; var SecondRealStart: Integer; var IsDDL: Boolean): Integer;
 var
   SQLSegment: string;
@@ -558,8 +593,7 @@ begin
     if (Pos('select', LowerCase(Trim(SQLSegment))) = 1) then
       Result:= 1 // Selectable
     else
-    if Pos('setterm', LowerCase(StringReplace(SQLSegment, ' ', '', [rfReplaceAll
-      ]))) = 1 then
+    if Pos('setterm', LowerCase(StringReplace(SQLSegment, ' ', '', [rfReplaceAll]))) = 1 then
       Result:= 3 // Script
     else
     begin
@@ -571,6 +605,9 @@ begin
   end;
 end;
 
+
+{ DoJob: Execute thread job: open query, execute, commit, rollback, etc }
+
 procedure TQueryThread.DoJob;
 begin
   try
@@ -609,6 +646,9 @@ begin
 
 end;
 
+
+{ Execute: Query thread main loop }
+
 procedure TQueryThread.Execute;
 begin
   try
@@ -627,6 +667,9 @@ begin
   end;
 end;
 
+
+{ Create query thread }
+
 constructor TQueryThread.Create(aType: string);
 begin
   inherited Create(True);
@@ -634,12 +677,16 @@ begin
   FreeOnTerminate:= False;
 end;
 
+
+{ Display SQL script exception message }
+
 procedure TfmQueryWindow.SQLScript1Exception(Sender: TObject;
   Statement: TStrings; TheException: Exception; var Continue: boolean);
 begin
   ShowMessage(TheException.Message);
 end;
 
+
 procedure TfmQueryWindow.SynCompletion1CodeCompletion(var Value: string;
   SourceValue: string; var SourceStart, SourceEnd: TPoint; KeyChar: TUTF8Char;
   Shift: TShiftState);
@@ -647,12 +694,18 @@ begin
   SynCompletion1.Deactivate;
 end;
 
+
+{ Close button pressed: close current Query window and free parent page tab }
+
 procedure TfmQueryWindow.tbCloseClick(Sender: TObject);
 begin
   Close;
   Parent.Free;
 end;
 
+
+{ Commit current transaction }
+
 procedure TfmQueryWindow.tbCommitClick(Sender: TObject);
 var
   meResult: TMemo;
@@ -698,6 +751,9 @@ begin
 
 end;
 
+
+{ Commit retaining for current transaction }
+
 procedure TfmQueryWindow.tbCommitRetainingClick(Sender: TObject);
 var
   QT: TQueryThread;
@@ -727,17 +783,26 @@ begin
   end;
 end;
 
+
+{HistoryClick: show SQL history form }
+
 procedure TfmQueryWindow.tbHistoryClick(Sender: TObject);
 begin
   fmSQLHistory.Init(RegRec.Title, Self);
   fmSQLHistory.Show;
 end;
 
+
+{ Display popup menu }
+
 procedure TfmQueryWindow.tbMenuClick(Sender: TObject);
 begin
   pmTab.PopUp;
 end;
 
+
+{ display New SQL Window tab }
+
 procedure TfmQueryWindow.tbNewClick(Sender: TObject);
 var
   i: Integer;
@@ -753,6 +818,9 @@ begin
   end;
 end;
 
+
+{ Read SQL query from text file }
+
 procedure TfmQueryWindow.tbOpenClick(Sender: TObject);
 begin
   OpenDialog1.DefaultExt:= '.sql';
@@ -760,6 +828,9 @@ begin
     meQuery.Lines.LoadFromFile(OpenDialog1.FileName);
 end;
 
+
+{ RollBack current transaction }
+
 procedure TfmQueryWindow.tbRollbackClick(Sender: TObject);
 var
   meResult: TMemo;
@@ -801,6 +872,9 @@ begin
   end;
 end;
 
+
+{ Rollback retaning for current transaction }
+
 procedure TfmQueryWindow.tbRollbackRetainingClick(Sender: TObject);
 var
   QT: TQueryThread;
@@ -822,11 +896,17 @@ begin
 
 end;
 
+
+{ Run current SQL, 0 for auto-detect type }
+
 procedure TfmQueryWindow.tbRunClick(Sender: TObject);
 begin
   CallExecuteQuery(0);
 end;
 
+
+{ Save current SQL in a text file }
+
 procedure TfmQueryWindow.tbSaveClick(Sender: TObject);
 begin
   SaveDialog1.DefaultExt:= '.sql';
@@ -834,6 +914,9 @@ begin
     meQuery.Lines.SaveToFile(SaveDialog1.FileName);
 end;
 
+
+{GetNewTabNum: get last tab number and increase result by one }
+
 function TfmQueryWindow.GetNewTabNum: string;
 var
   i: Integer;
@@ -846,6 +929,9 @@ begin
   Result:= IntToStr(Cnt);
 end;
 
+
+{ Initialize query window: fill connection parameters from selected registered database }
+
 procedure TfmQueryWindow.Init(dbIndex: Integer);
 begin
   fdbIndex:= dbIndex;
@@ -925,6 +1011,9 @@ begin
   end;
 end;
 
+
+{ GetQuery: get query text from editor }
+
 function TfmQueryWindow.GetQuery: string;
 begin
   Result:= meQuery.SelText;
@@ -932,6 +1021,9 @@ begin
     Result:= meQuery.Lines.Text;
 end;
 
+
+{ Create new result tab depending on query type }
+
 function TfmQueryWindow.CreateResultTab(QueryType: Byte;
   var aSqlQuery: TSQLQuery; var aSQLScript: TSqlScript; var meResult: TMemo;
   AdditionalTitle: string): TTabSheet;
@@ -983,7 +1075,6 @@ begin
     DBGrid.Align:= alClient;
     DBGrid.OnDblClick:= @DBGrid1DblClick;
 
-    DBGrid.OnFieldEditMask:= @StartEdit;
     DBGrid.Tag:= ATab.TabIndex;
     DBGrid.ReadOnly:= False;
     DBGrid.AutoEdit:= True;
@@ -1287,6 +1378,9 @@ begin
 
 end;
 
+
+{ Execute script }
+
 function TfmQueryWindow.ExecuteScript(Script: string): Boolean;
 var
   StartTime: TDateTime;
@@ -1327,6 +1421,9 @@ begin
   end;
 end;
 
+
+{ AddResultControl: add new tab for query part result in current Query window }
+
 procedure TfmQueryWindow.AddResultControl(ParentControl: TObject; AControl: TObject);
 begin
   SetLength(ResultControls, Length(ResultControls) + 1);
@@ -1335,6 +1432,9 @@ begin
   ParentResultControls[High(ParentResultControls)]:= ParentControl;
 end;
 
+
+{ Display new Save/Apply button for current query result been edited }
+
 procedure TfmQueryWindow.NewApplyButton(var Pan: TPanel; var ATab: TTabSheet);
 var
   Apply: TBitBtn;
@@ -1349,6 +1449,9 @@ begin
   AddResultControl(ATab, Apply);
 end;
 
+
+{ Remove all run-time controls from current Query window }
+
 procedure TfmQueryWindow.RemoveControls;
 var
   i: Integer;
@@ -1371,6 +1474,9 @@ begin
   SetLength(ParentResultControls, 0);
 end;
 
+
+{ FindSQLQuery: Return current TSQLQuery component from current query window }
+
 function TfmQueryWindow.FindSqlQuery: TSqlQuery;
 var
   i: Integer;
@@ -1389,6 +1495,9 @@ begin
 
 end;
 
+
+{ GetSQLType: get SQL type of current SQL text }
+
 function TfmQueryWindow.GetSQLType(Query: string; var Command: string): string;
 begin
   Query:= Trim(Query);
@@ -1404,6 +1513,9 @@ begin
   end;
 end;
 
+
+{ GetSQLSeqment: read part of SQL end by ; }
+
 function TfmQueryWindow.GetSQLSegment(QueryList: TStringList; StartLine: Integer; var QueryType, EndLine: Integer;
   var SQLSegment: string; var IsDDL: Boolean): Boolean;
 var
@@ -1475,12 +1587,17 @@ begin
 end;
 
 
+
+{ Run query, 0 for auto-detect query type }
+
 procedure TfmQueryWindow.bbRunClick(Sender: TObject);
 begin
   CallExecuteQuery(0);
 end;
 
 
+{ Display Blob contents in a message box }
+
 procedure TfmQueryWindow.DBGrid1DblClick(Sender: TObject);
 begin
   if (Sender as TDBGrid).SelectedField.DataType in [ftBlob, ftMemo] then
@@ -1489,6 +1606,9 @@ begin
     ShowMessage((Sender as TDBGrid).SelectedField.KeyFields);
 end;
 
+
+{ Sort by columns }
+
 procedure TfmQueryWindow.DBGridTitleClick(column: TColumn);
 var
   SqlQuery: TSQLQuery;
@@ -1505,6 +1625,9 @@ begin
 
 end;
 
+
+{ Find text }
+
 procedure TfmQueryWindow.FindDialog1Find(Sender: TObject);
 begin
   fOptions:= [];
@@ -1525,6 +1648,8 @@ begin
 end;
 
 
+{ QueryWindow onClose event, commit active transaction, remove controls }
+
 procedure TfmQueryWindow.FormClose(Sender: TObject;
   var CloseAction: TCloseAction);
 begin
@@ -1542,6 +1667,9 @@ begin
   CloseAction:= caFree;
 end;
 
+
+{ Initialize auto-completion text in QueryWindow OnCreate event }
+
 procedure TfmQueryWindow.FormCreate(Sender: TObject);
 var
   F:TextFile;
@@ -1551,11 +1679,17 @@ begin
   Sortsyncompletion;
 end;
 
+
+{ focus on Query SQL window editor on form show }
+
 procedure TfmQueryWindow.FormShow(Sender: TObject);
 begin
   meQuery.SetFocus;
 end;
 
+
+{ Close current Query window }
+
 procedure TfmQueryWindow.lmCloseTabClick(Sender: TObject);
 begin
   if (Trim(meQuery.Lines.Text) = '') or
@@ -1567,6 +1701,8 @@ begin
 end;
 
 
+{ Save query result in a comma delemited file }
+
 procedure TfmQueryWindow.lmCommaDelemitedClick(Sender: TObject);
 var
   i: Integer;
@@ -1616,6 +1752,9 @@ begin
 
 end;
 
+
+{ Copy query result in Clipboard }
+
 procedure TfmQueryWindow.lmCopyAllClick(Sender: TObject);
 var
    Grid: TDBGrid;
@@ -1663,32 +1802,48 @@ begin
   grid.DataSource.DataSet.EnableControls;
 end;
 
+
+{ Copy cell in clipboard }
+
 procedure TfmQueryWindow.lmCopyCellClick(Sender: TObject);
 begin
   Clipboard.AsText:= TdbGrid(pmGrid.PopupComponent).SelectedField.AsString;
 end;
 
+
+{ Copy query text into clipboard }
+
 procedure TfmQueryWindow.lmCopyClick(Sender: TObject);
 begin
   meQuery.CopyToClipboard;
 end;
 
+
+{ Cut query text into clipboard}
+
 procedure TfmQueryWindow.lmCutClick(Sender: TObject);
 begin
   meQuery.CutToClipboard;
 end;
 
+
+{ Export to comma delimeted file }
+
 procedure TfmQueryWindow.lmExportAsCommaClick(Sender: TObject);
 begin
   lmCommaDelemitedClick(nil);
 end;
 
+{ Export as HTML }
+
 procedure TfmQueryWindow.lmExportAsHTMLClick(Sender: TObject);
 begin
   lmHTMLClick(nil);
 end;
 
 
+{ Save query result as HTML }
+
 procedure TfmQueryWindow.lmHTMLClick(Sender: TObject);
 var
   i: Integer;
@@ -1744,58 +1899,88 @@ end;
 
 
 
+{ Paste from clipboard into SQL editor }
+
 procedure TfmQueryWindow.lmPasteClick(Sender: TObject);
 begin
   meQuery.PasteFromClipboard;
 end;
 
+
+{ SQL Editor Redo }
+
 procedure TfmQueryWindow.lmRedoClick(Sender: TObject);
 begin
   meQuery.Redo;
 end;
 
+
+{ Run Query, auto type detection }
+
 procedure TfmQueryWindow.lmRunClick(Sender: TObject);
 begin
   CallExecuteQuery(0);
 end;
 
+
+{ Run query and force its type as executable statement}
+
 procedure TfmQueryWindow.lmRunExecClick(Sender: TObject);
 begin
   CallExecuteQuery(2);
 end;
 
+
+{ Run query, and fore its type as script }
+
 procedure TfmQueryWindow.lmRunScriptClick(Sender: TObject);
 begin
   CallExecuteQuery(3);
 end;
 
+
+{ Run query, force its type as select statement }
+
 procedure TfmQueryWindow.lmRunSelectClick(Sender: TObject);
 begin
   CallExecuteQuery(1);
 end;
 
+
+{ select all in SQL Editor }
+
 procedure TfmQueryWindow.lmSelectAllClick(Sender: TObject);
 begin
   meQuery.SelectAll;
 end;
 
 
+{ SQL Editor undo }
+
 procedure TfmQueryWindow.lmUndoClick(Sender: TObject);
 begin
   meQuery.Undo;
 end;
 
 
+{ Search in SQL Editor }
+
 procedure TfmQueryWindow.lmFindClick(Sender: TObject);
 begin
   FindDialog1.Execute;
 end;
 
+
+{ Find again }
+
 procedure TfmQueryWindow.lmFindAgainClick(Sender: TObject);
 begin
   meQuery.SearchReplace(FindDialog1.FindText, '', fOptions);
 end;
 
+
+{ Run query by pressing Ktrl + Enter }
+
 procedure TfmQueryWindow.meQueryKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 begin
@@ -1808,6 +1993,8 @@ begin
 end;
 
 
+{ Scrolling in query result recordset }
+
 procedure TfmQueryWindow.QueryAfterScroll(DataSet: TDataSet);
 var
   TabSheet: TTabSheet;
@@ -1838,6 +2025,9 @@ begin
 
 end;
 
+
+{ Execute query according to passed query ype }
+
 procedure TfmQueryWindow.CallExecuteQuery(aQueryType: Integer);
 begin
   fList:= TStringList.Create;
@@ -1872,6 +2062,9 @@ begin
   EnableButtons;
 end;
 
+
+{ sort auto completion options }
+
 procedure TfmQueryWindow.sortsyncompletion;
 var
   sortinglis:TStringList;
@@ -1887,6 +2080,9 @@ begin
 
 end;
 
+
+{ SQL thread termination }
+
 procedure TfmQueryWindow.ThreadTerminated(Sender: TObject);
 begin
   // Raise exception if an error occured during thread execution (Open)
@@ -1920,6 +2116,8 @@ begin
 
 end;
 
+{ Enable SQL buttons: Run, Commit, Rollbak after thread termination }
+
 procedure TfmQueryWindow.EnableButtons;
 begin
   tbRun.Enabled:= True;