* Support for index management

git-svn-id: trunk@15743 -
This commit is contained in:
michael 2008-07-11 13:17:11 +00:00
parent eddb955b2f
commit 1777a9dbf8
8 changed files with 1243 additions and 1643 deletions

View File

@ -41,6 +41,7 @@ Type
FSplit : TSplitter; FSplit : TSplitter;
FDDNode,FTablesNode : TTreeNode; FDDNode,FTablesNode : TTreeNode;
function GetCurrentField: TDDFieldDef; function GetCurrentField: TDDFieldDef;
function GetCurrentIndex: TDDIndexDef;
function GetCurrentObjectType: TObjectType; function GetCurrentObjectType: TObjectType;
function GetCurrentTable: TDDTableDef; function GetCurrentTable: TDDTableDef;
Function NewNode (TV : TTreeView;ParentNode : TTreeNode; ACaption : String; AImageIndex : Integer) : TTreeNode; Function NewNode (TV : TTreeView;ParentNode : TTreeNode; ACaption : String; AImageIndex : Integer) : TTreeNode;
@ -50,14 +51,17 @@ Type
Procedure ClearEditor; Procedure ClearEditor;
Procedure SelectTable(TD : TDDTableDef); Procedure SelectTable(TD : TDDTableDef);
Procedure SelectField(FD : TDDFieldDef); Procedure SelectField(FD : TDDFieldDef);
Procedure SelectIndex(ID : TDDIndexDef);
procedure SelectDictionary; procedure SelectDictionary;
procedure SelectTables; procedure SelectTables;
procedure SelectFields(TableDef : TDDTableDef); procedure SelectFields(TableDef : TDDTableDef);
procedure SelectIndexes(TableDef : TDDTableDef);
procedure SetModified(const AValue: Boolean); procedure SetModified(const AValue: Boolean);
procedure UpdateSelectedNode; procedure UpdateSelectedNode;
Function GetObjectType(Node : TTreeNode): TObjectType; Function GetObjectType(Node : TTreeNode): TObjectType;
Function CreatePropertyGrid(P : TPersistent) : TTIPropertyGrid; Function CreatePropertyGrid(P : TPersistent) : TTIPropertyGrid;
procedure FieldsDblClick(Sender : TObject); procedure FieldsDblClick(Sender : TObject);
procedure IndexesDblClick(Sender : TObject);
Function FindNodeWithData(TV : TTreeView; P : Pointer) : TTreeNode; Function FindNodeWithData(TV : TTreeView; P : Pointer) : TTreeNode;
procedure TablesDblClick(Sender : TObject); procedure TablesDblClick(Sender : TObject);
Public Public
@ -66,28 +70,37 @@ Type
Procedure ShowDictionary; Procedure ShowDictionary;
Procedure NewTable(ATableName: String); Procedure NewTable(ATableName: String);
Procedure NewField(AFieldName : String; TD : TDDTableDef); Procedure NewField(AFieldName : String; TD : TDDTableDef);
Procedure ShowTables(TV : TTreeView;ParentNode: TTreeNode; AddFieldsNode : Boolean); Procedure NewIndex(AIndexName : String; TD : TDDTableDef);
Procedure ShowTables(TV : TTreeView;ParentNode: TTreeNode; AddFieldsNode : Boolean; AddIndexesNode : Boolean);
Procedure ShowFields(TV : TTreeView;TableNode: TTreeNode; TableDef : TDDTableDef); Procedure ShowFields(TV : TTreeView;TableNode: TTreeNode; TableDef : TDDTableDef);
Procedure ShowIndexes(TV : TTreeView;TableNode: TTreeNode; TableDef : TDDTableDef);
Procedure LoadFromFile(AFileName : String); Procedure LoadFromFile(AFileName : String);
Procedure SaveToFile(AFileName : String); Procedure SaveToFile(AFileName : String);
Procedure DeleteTable(TD : TDDTableDef); Procedure DeleteTable(TD : TDDTableDef);
Procedure DeleteField(FD : TDDFieldDef); Procedure DeleteField(FD : TDDFieldDef);
Procedure DeleteIndex(ID : TDDIndexDef);
Property DataDictionary : TFPDataDictionary Read FDD; Property DataDictionary : TFPDataDictionary Read FDD;
Property Modified : Boolean Read FModified Write SetModified; Property Modified : Boolean Read FModified Write SetModified;
Property ImageOffset : Integer Read FImageOffset Write FImageOffset; Property ImageOffset : Integer Read FImageOffset Write FImageOffset;
Property ObjectType : TObjectType Read GetCurrentObjectType; Property ObjectType : TObjectType Read GetCurrentObjectType;
Property CurrentTable : TDDTableDef Read GetCurrentTable; Property CurrentTable : TDDTableDef Read GetCurrentTable;
Property CurrentField : TDDFieldDef Read GetCurrentField; Property CurrentField : TDDFieldDef Read GetCurrentField;
Property CurrentIndex : TDDIndexDef Read GetCurrentIndex;
end; end;
Const Const
// Image Index for nodes. Relative to ImageOffset; // Image Index for nodes. Relative to ImageOffset;
// Must match the TObjectType
iiDataDict = 0; iiDataDict = 0;
iiTables = 1; iiTables = 1;
iiTable = 2; iiTable = 2;
iiFields = 3; iiFields = 3;
iiField = 4; iiField = 4;
iiConnection = 5;
iiTableData = 6;
iiIndexes = 7;
iiIndex = 8;
implementation implementation
@ -98,6 +111,7 @@ ResourceString
SNodeTables = 'Tables'; SNodeTables = 'Tables';
SNodeFields = 'Fields'; SNodeFields = 'Fields';
SNewDictionary = 'New dictionary'; SNewDictionary = 'New dictionary';
SNodeIndexes = 'Indexes';
{ TDataDictEditor } { TDataDictEditor }
@ -129,6 +143,20 @@ begin
end; end;
function TDataDictEditor.GetCurrentIndex: TDDIndexDef;
Var
N: TTreeNode;
begin
Result:=Nil;
N:=FTV.Selected;
While (N<>Nil) and (GetObjectType(N)<>otIndexDef) do
N:=N.Parent;
if (N<>Nil) then
Result:=TDDIndexDef(N.Data);
end;
function TDataDictEditor.GetCurrentTable: TDDTableDef; function TDataDictEditor.GetCurrentTable: TDDTableDef;
Var Var
@ -186,7 +214,7 @@ begin
FDDNode:=NewNode(FTV,Nil,S,iiDataDict); FDDNode:=NewNode(FTV,Nil,S,iiDataDict);
FDDNode.Data:=FDD; FDDNode.Data:=FDD;
FTablesNode:=NewNode(FTV,FDDNode,SNodeTables,iiTables); FTablesNode:=NewNode(FTV,FDDNode,SNodeTables,iiTables);
ShowTables(FTV,FTablesNode,True); ShowTables(FTV,FTablesNode,True,True);
SetCaption; SetCaption;
FTV.Selected:=FDDNode; FTV.Selected:=FDDNode;
finally finally
@ -233,6 +261,27 @@ begin
end; end;
end; end;
procedure TDataDictEditor.NewIndex(AIndexName: String; TD: TDDTableDef);
Var
TN : TTreeNode;
ID : TDDIndexDef;
begin
TN:=FindNodeWithData(FTV,TD);
TN:=TN.GetFirstChild;
While (TN<>Nil) and (GetObjectType(TN)<>otIndexDefs) do
TN:=TN.GetNextSibling;
If (TN<>Nil) then
begin
ID:=TD.Indexes.AddDDIndexDef(AIndexName);
TN:=NewNode(FTV,TN,AIndexName,iiIndex);
TN.Data:=ID;
FTV.Selected:=TN;
Modified:=True;
end;
end;
procedure TDataDictEditor.SetCaption; procedure TDataDictEditor.SetCaption;
Var Var
@ -270,6 +319,8 @@ begin
otTable : SelectTable(O as TDDTableDef); otTable : SelectTable(O as TDDTableDef);
otFields : SelectFields(OP as TDDTableDef); otFields : SelectFields(OP as TDDTableDef);
otField : SelectField(TDDFieldDef(O)); otField : SelectField(TDDFieldDef(O));
otIndexDefs : SelectIndexes(OP as TDDTableDef);
otIndexDef : SelectIndex(TDDIndexDef(O));
end; end;
end; end;
@ -313,7 +364,7 @@ begin
TV:=TTreeView.Create(Self); TV:=TTreeView.Create(Self);
TV.Parent:=FEdit; TV.Parent:=FEdit;
TV.Align:=alClient; TV.Align:=alClient;
ShowTables(TV,Nil,False); ShowTables(TV,Nil,False,false);
TV.OnDblClick:=@TablesDblClick; TV.OnDblClick:=@TablesDblClick;
end; end;
@ -344,6 +395,20 @@ begin
TV.OnDblClick:=@FieldsDblClick; TV.OnDblClick:=@FieldsDblClick;
end; end;
procedure TDataDictEditor.SelectIndexes(TableDef: TDDTableDef);
Var
TV : TTreeView;
begin
ClearEditor;
TV:=TTreeView.Create(Self);
TV.Parent:=FEdit;
TV.Align:=alClient;
ShowIndexes(TV,Nil,TableDef);
TV.OnDblClick:=@IndexesDblClick;
end;
procedure TDataDictEditor.SetModified(const AValue: Boolean); procedure TDataDictEditor.SetModified(const AValue: Boolean);
begin begin
FModified:=AValue; FModified:=AValue;
@ -379,6 +444,19 @@ begin
FTV.Selected:=FindNodeWithData(FTV,N.Data); FTV.Selected:=FindNodeWithData(FTV,N.Data);
end; end;
procedure TDataDictEditor.IndexesDblClick(Sender: TObject);
Var
TV : TTreeView;
N : TTreeNode;
begin
TV:=Sender As TTreeView;
N:=TV.Selected;
If (GetObjectType(N)=otIndexDef) and (N.Data<>Nil) then
FTV.Selected:=FindNodeWithData(FTV,N.Data);
end;
procedure TDataDictEditor.ClearEditor; procedure TDataDictEditor.ClearEditor;
begin begin
@ -414,6 +492,12 @@ begin
CreatePropertyGrid(FD); CreatePropertyGrid(FD);
end; end;
procedure TDataDictEditor.SelectIndex(ID: TDDIndexDef);
begin
ClearEditor;
CreatePropertyGrid(ID);
end;
function TDataDictEditor.GetObjectType(Node: TTreeNode): TObjectType; function TDataDictEditor.GetObjectType(Node: TTreeNode): TObjectType;
Var Var
@ -430,7 +514,7 @@ begin
end; end;
end; end;
procedure TDataDictEditor.ShowTables(TV : TTreeView;ParentNode: TTreeNode; AddFieldsNode: Boolean); procedure TDataDictEditor.ShowTables(TV : TTreeView;ParentNode: TTreeNode; AddFieldsNode: Boolean; AddIndexesNode : Boolean);
Var Var
TN,FN : TTreeNode; TN,FN : TTreeNode;
@ -454,6 +538,11 @@ begin
FN:=NewNode(TV,TN,SNodeFields,iiFields); FN:=NewNode(TV,TN,SNodeFields,iiFields);
ShowFields(TV,FN,TD); ShowFields(TV,FN,TD);
end; end;
If AddIndexesNode then
begin
FN:=NewNode(TV,TN,SNodeIndexes,iiIndexes);
ShowIndexes(TV,FN,TD);
end;
end; end;
If Assigned(ParentNode) then If Assigned(ParentNode) then
ParentNode.Expand(False); ParentNode.Expand(False);
@ -489,6 +578,34 @@ begin
end; end;
end; end;
procedure TDataDictEditor.ShowIndexes(TV: TTreeView; TableNode: TTreeNode;
TableDef: TDDTableDef);
Var
TN : TTreeNode;
TL : TStringList;
ID : TDDIndexDef;
I : Integer;
begin
TL:=TStringList.Create;
Try
TL.Sorted:=true;
For I:=0 to TableDef.Indexes.Count-1 do
TL.AddObject(TableDef.Indexes[i].IndexName,TableDef.Indexes[i]);
For I:=0 to TL.Count-1 do
begin
ID:=TL.Objects[i] as TDDIndexDef;
TN:=NewNode(TV,TableNode,ID.IndexName,iiindex);
TN.Data:=ID;
end;
If Assigned(TableNode) then
TableNode.Expand(False);
Finally
FreeAndNil(TL);
end;
end;
procedure TDataDictEditor.LoadFromFile(AFileName: String); procedure TDataDictEditor.LoadFromFile(AFileName: String);
begin begin
FDD.LoadFromFile(AFileName); FDD.LoadFromFile(AFileName);
@ -551,5 +668,29 @@ begin
Modified:=True; Modified:=True;
end; end;
procedure TDataDictEditor.DeleteIndex(ID: TDDIndexDef);
Var
N,NN : TTreeNode;
begin
N:=FindNodeWithData(FTV,Pointer(ID));
NN:=N.GetNextSibling;
If (NN=Nil) then
begin
NN:=N.GetPrevSibling;
If (NN=Nil) then
begin
NN:=N.Parent;
If Assigned(NN) then
NN:=NN.Parent;
end;
end;
N.Free;
FTV.Selected:=NN;
ID.Free;
Modified:=True;
end;
end. end.

View File

@ -1,21 +1,23 @@
object GenerateSQLForm: TGenerateSQLForm object GenerateSQLForm: TGenerateSQLForm
Left = 349 Left = 274
Height = 363 Height = 395
Top = 273 Top = 144
Width = 593 Width = 593
ActiveControl = CBTables ActiveControl = PCSQL
Caption = 'Generate SQL statements' Caption = 'Generate SQL statements'
ClientHeight = 363 ClientHeight = 395
ClientWidth = 593 ClientWidth = 593
OnCreate = FormCreate OnCreate = FormCreate
LCLVersion = '0.9.25' LCLVersion = '0.9.25'
object PCSQL: TPageControl object PCSQL: TPageControl
Height = 327 Height = 359
Width = 593 Width = 593
ActivePage = TSFields ActivePage = TSFields
Align = alClient Align = alClient
TabIndex = 0 TabIndex = 0
TabOrder = 0 TabOrder = 0
OnChange = PCSQLChange
OnPageChanged = PCSQLChange
object TSFields: TTabSheet object TSFields: TTabSheet
Caption = 'Table and &Fields' Caption = 'Table and &Fields'
ChildSizing.EnlargeHorizontal = crsScaleChilds ChildSizing.EnlargeHorizontal = crsScaleChilds
@ -23,15 +25,15 @@ object GenerateSQLForm: TGenerateSQLForm
ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.ControlsPerLine = 3 ChildSizing.ControlsPerLine = 3
ClientHeight = 294 ClientHeight = 326
ClientWidth = 589 ClientWidth = 589
OnResize = TSResize OnResize = TSResize
object POptions: TPanel object POptions: TPanel
Height = 294 Height = 326
Width = 254 Width = 254
Align = alLeft Align = alLeft
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 294 ClientHeight = 326
ClientWidth = 254 ClientWidth = 254
Constraints.MinWidth = 180 Constraints.MinWidth = 180
TabOrder = 0 TabOrder = 0
@ -86,7 +88,7 @@ object GenerateSQLForm: TGenerateSQLForm
object BGenerate: TButton object BGenerate: TButton
Left = 4 Left = 4
Height = 25 Height = 25
Top = 265 Top = 297
Width = 238 Width = 238
Anchors = [akLeft, akRight, akBottom] Anchors = [akLeft, akRight, akBottom]
BorderSpacing.InnerBorder = 4 BorderSpacing.InnerBorder = 4
@ -130,17 +132,25 @@ object GenerateSQLForm: TGenerateSQLForm
'eoAddTerminator=Add terminator' 'eoAddTerminator=Add terminator'
) )
end end
object CBIgnoreSelection: TCheckBox
Left = 6
Height = 21
Top = 257
Width = 190
Caption = 'Create full table creation SQL'
TabOrder = 5
end
end end
object PKeyFields: TPanel object PKeyFields: TPanel
AnchorSideLeft.Control = POptions AnchorSideLeft.Control = POptions
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PSelectFields AnchorSideRight.Control = PSelectFields
Left = 254 Left = 254
Height = 294 Height = 326
Width = 167 Width = 167
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 294 ClientHeight = 326
ClientWidth = 167 ClientWidth = 167
TabOrder = 1 TabOrder = 1
object LLBKeyFields: TLabel object LLBKeyFields: TLabel
@ -155,7 +165,7 @@ object GenerateSQLForm: TGenerateSQLForm
end end
object LBKeyFields: TListBox object LBKeyFields: TListBox
Left = 2 Left = 2
Height = 249 Height = 281
Top = 34 Top = 34
Width = 161 Width = 161
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
@ -167,11 +177,11 @@ object GenerateSQLForm: TGenerateSQLForm
end end
object PSelectFields: TPanel object PSelectFields: TPanel
Left = 421 Left = 421
Height = 294 Height = 326
Width = 168 Width = 168
Align = alRight Align = alRight
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 294 ClientHeight = 326
ClientWidth = 168 ClientWidth = 168
TabOrder = 2 TabOrder = 2
object Label2: TLabel object Label2: TLabel
@ -186,10 +196,10 @@ object GenerateSQLForm: TGenerateSQLForm
end end
object LBFields: TListBox object LBFields: TListBox
Left = 12 Left = 12
Height = 249 Height = 281
Top = 34 Top = 34
Width = 146 Width = 146
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight, akBottom]
MultiSelect = True MultiSelect = True
Sorted = True Sorted = True
TabOrder = 0 TabOrder = 0
@ -216,13 +226,13 @@ object GenerateSQLForm: TGenerateSQLForm
end end
object TSInsert: TTabSheet object TSInsert: TTabSheet
Caption = '&Insert' Caption = '&Insert'
ClientHeight = 327 ClientHeight = 326
ClientWidth = 593 ClientWidth = 589
object MInsert: TMemo object MInsert: TMemo
Left = 8 Left = 8
Height = 311 Height = 310
Top = 8 Top = 8
Width = 577 Width = 573
Align = alClient Align = alClient
BorderSpacing.Around = 8 BorderSpacing.Around = 8
Lines.Strings = ( Lines.Strings = (
@ -285,7 +295,7 @@ object GenerateSQLForm: TGenerateSQLForm
end end
object PButtons: TPanel object PButtons: TPanel
Height = 36 Height = 36
Top = 327 Top = 359
Width = 593 Width = 593
Align = alBottom Align = alBottom
BevelOuter = bvLowered BevelOuter = bvLowered

View File

@ -1,159 +1,76 @@
{ This is an automatically generated lazarus resource file } { This is an automatically generated lazarus resource file }
LazarusResources.Add('TGenerateSQLForm','FORMDATA',[ LazarusResources.Add('TGenerateSQLForm','FORMDATA',[
'TPF0'#16'TGenerateSQLForm'#15'GenerateSQLForm'#4'Left'#3']'#1#6'Height'#3'k' 'TPF0'#16'TGenerateSQLForm'#15'GenerateSQLForm'#4'Left'#3#18#1#6'Height'#3#139
+#1#3'Top'#3#17#1#5'Width'#3'Q'#2#13'ActiveControl'#7#8'CBTables'#7'Caption'#6 +#1#3'Top'#3#144#0#5'Width'#3'Q'#2#13'ActiveControl'#7#5'PCSQL'#7'Caption'#6
+#23'Generate SQL statements'#12'ClientHeight'#3'k'#1#11'ClientWidth'#3'Q'#2#8 +#23'Generate SQL statements'#12'ClientHeight'#3#139#1#11'ClientWidth'#3'Q'#2
+'OnCreate'#7#10'FormCreate'#10'LCLVersion'#6#6'0.9.25'#0#12'TPageControl'#5 +#8'OnCreate'#7#10'FormCreate'#10'LCLVersion'#6#6'0.9.25'#0#12'TPageControl'#5
+'PCSQL'#6'Height'#3'G'#1#5'Width'#3'Q'#2#10'ActivePage'#7#8'TSFields'#5'Alig' +'PCSQL'#6'Height'#3'g'#1#5'Width'#3'Q'#2#10'ActivePage'#7#8'TSFields'#5'Alig'
+'n'#7#8'alClient'#8'TabIndex'#2#0#8'TabOrder'#2#0#0#9'TTabSheet'#8'TSFields' +'n'#7#8'alClient'#8'TabIndex'#2#0#8'TabOrder'#2#0#8'OnChange'#7#11'PCSQLChan'
+#7'Caption'#6#17'Table and &Fields'#29'ChildSizing.EnlargeHorizontal'#7#14'c' +'ge'#13'OnPageChanged'#7#11'PCSQLChange'#0#9'TTabSheet'#8'TSFields'#7'Captio'
+'rsScaleChilds'#27'ChildSizing.EnlargeVertical'#7#14'crsScaleChilds'#28'Chil' +'n'#6#17'Table and &Fields'#29'ChildSizing.EnlargeHorizontal'#7#14'crsScaleC'
+'dSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertica' +'hilds'#27'ChildSizing.EnlargeVertical'#7#14'crsScaleChilds'#28'ChildSizing.'
+'l'#7#14'crsScaleChilds'#27'ChildSizing.ControlsPerLine'#2#3#12'ClientHeight' +'ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14
+#3'&'#1#11'ClientWidth'#3'M'#2#8'OnResize'#7#8'TSResize'#0#6'TPanel'#8'POpti' +'crsScaleChilds'#27'ChildSizing.ControlsPerLine'#2#3#12'ClientHeight'#3'F'#1
+'ons'#6'Height'#3'&'#1#5'Width'#3#254#0#5'Align'#7#6'alLeft'#10'BevelOuter'#7 +#11'ClientWidth'#3'M'#2#8'OnResize'#7#8'TSResize'#0#6'TPanel'#8'POptions'#6
+#6'bvNone'#12'ClientHeight'#3'&'#1#11'ClientWidth'#3#254#0#20'Constraints.Mi' +'Height'#3'F'#1#5'Width'#3#254#0#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvN'
+'nWidth'#3#180#0#8'TabOrder'#2#0#0#6'TLabel'#9'LCBTables'#4'Left'#2#4#6'Heig' +'one'#12'ClientHeight'#3'F'#1#11'ClientWidth'#3#254#0#20'Constraints.MinWidt'
+'ht'#2#16#3'Top'#2#5#5'Width'#3#238#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akR' +'h'#3#180#0#8'TabOrder'#2#0#0#6'TLabel'#9'LCBTables'#4'Left'#2#4#6'Height'#2
+'ight'#0#8'AutoSize'#8#7'Caption'#6#6'Ta&ble'#12'FocusControl'#7#8'CBTables' +#16#3'Top'#2#5#5'Width'#3#238#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0
+#11'ParentColor'#8#0#0#6'TLabel'#9'LSEIndent'#4'Left'#2'('#6'Height'#2#20#3 +#8'AutoSize'#8#7'Caption'#6#6'Ta&ble'#12'FocusControl'#7#8'CBTables'#11'Pare'
+'Top'#3#205#0#5'Width'#3#150#0#9'Alignment'#7#14'taRightJustify'#7'Anchors' +'ntColor'#8#0#0#6'TLabel'#9'LSEIndent'#4'Left'#2'('#6'Height'#2#20#3'Top'#3
+#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#8#7'Caption'#6#7'I&ndent'#6 +#205#0#5'Width'#3#150#0#9'Alignment'#7#14'taRightJustify'#7'Anchors'#11#5'ak'
+'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#13'LSELineLength'#4'L' +'Top'#6'akLeft'#7'akRight'#0#8'AutoSize'#8#7'Caption'#6#7'I&ndent'#6'Layout'
+'eft'#2'$'#6'Height'#2#20#3'Top'#3#234#0#5'Width'#3#154#0#9'Alignment'#7#14 +#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#13'LSELineLength'#4'Left'#2'$'
+'taRightJustify'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#8 +#6'Height'#2#20#3'Top'#3#234#0#5'Width'#3#154#0#9'Alignment'#7#14'taRightJus'
+#7'Caption'#6#11'Line Length'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#9
+'TComboBox'#8'CBTables'#4'Left'#2#4#6'Height'#2#21#3'Top'#2#26#5'Width'#3#238
+#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22
+'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9'MaxLength'#2#0#8'OnCha'
+'nge'#7#14'CBTablesChange'#6'Sorted'#9#5'Style'#7#14'csDropDownList'#8'TabOr'
+'der'#2#0#0#0#7'TButton'#9'BGenerate'#4'Left'#2#4#6'Height'#2#25#3'Top'#3#9#1
+#5'Width'#3#238#0#7'Anchors'#11#6'akLeft'#7'akRight'#8'akBottom'#0#25'Border'
+'Spacing.InnerBorder'#2#4#7'Caption'#6#13'&Generate SQL'#7'Default'#9#7'OnCl'
+'ick'#7#14'BGenerateClick'#8'TabOrder'#2#1#0#0#11'TTISpinEdit'#8'SEindent'#4
+'Left'#3#204#0#6'Height'#2#23#3'Top'#3#202#0#5'Width'#2'"'#7'Anchors'#11#5'a'
+'kTop'#7'akRight'#0#19'Link.TIPropertyName'#6#6'Indent'#8'TabOrder'#2#2#0#0
+#11'TTISpinEdit'#12'SELineLength'#4'Left'#3#205#0#6'Height'#2#23#3'Top'#3#231
+#0#5'Width'#2'"'#7'Anchors'#11#5'akTop'#7'akRight'#0#19'Link.TIPropertyName'
+#6#10'LineLength'#8'TabOrder'#2#3#0#0#13'TTICheckGroup'#10'CLBOptions'#4'Lef'
+'t'#2#6#6'Height'#3#144#0#3'Top'#2'2'#5'Width'#3#234#0#7'Anchors'#11#5'akTop'
+#6'akLeft'#7'akRight'#0#7'Caption'#6#7'Options'#19'Link.TIPropertyName'#6#7
+'Options'#23'Link.AliasValuesStrings'#1#6'.eoLineFeedAfterField=Linefeed aft'
+'er each field'#6'8eoUseOldInWhereParams=Use OLD prefix in where parameters'
+#6'2eoAndTermsInBrackets=Put brackets around AND Terms'#6'#eoQuoteFieldNames'
+'=Quote field names'#6'/eoLineFeedAfterAndTerm=Linefeed after AND terms'#6#30
+'eoAddTerminator=Add terminator'#0#0#0#0#6'TPanel'#10'PKeyFields'#22'AnchorS'
+'ideLeft.Control'#7#8'POptions'#19'AnchorSideLeft.Side'#7#9'asrBottom'#23'An'
+'chorSideRight.Control'#7#13'PSelectFields'#4'Left'#3#254#0#6'Height'#3'&'#1
+#5'Width'#3#167#0#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#12'Clien'
+'tHeight'#3'&'#1#11'ClientWidth'#3#167#0#8'TabOrder'#2#1#0#6'TLabel'#12'LLBK'
+'eyFields'#6'Height'#2#26#5'Width'#3#167#0#5'Align'#7#5'alTop'#9'Alignment'#7
+#8'taCenter'#8'AutoSize'#8#7'Caption'#6#11'&Key fields'#6'Layout'#7#8'tlCent'
+'er'#11'ParentColor'#8#0#0#8'TListBox'#11'LBKeyFields'#4'Left'#2#2#6'Height'
+#3#249#0#3'Top'#2'"'#5'Width'#3#161#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akR'
+'ight'#8'akBottom'#0#11'MultiSelect'#9#6'Sorted'#9#8'TabOrder'#2#0#8'TopInde'
+'x'#2#255#0#0#0#6'TPanel'#13'PSelectFields'#4'Left'#3#165#1#6'Height'#3'&'#1
+#5'Width'#3#168#0#5'Align'#7#7'alRight'#10'BevelOuter'#7#6'bvNone'#12'Client'
+'Height'#3'&'#1#11'ClientWidth'#3#168#0#8'TabOrder'#2#2#0#6'TLabel'#6'Label2'
+#6'Height'#2#26#5'Width'#3#168#0#5'Align'#7#5'alTop'#9'Alignment'#7#8'taCent'
+'er'#8'AutoSize'#8#7'Caption'#6#27'Select/Update/Insert fields'#6'Layout'#7#8
+'tlCenter'#11'ParentColor'#8#0#0#8'TListBox'#8'LBFields'#4'Left'#2#12#6'Heig'
+'ht'#3#249#0#3'Top'#2'"'#5'Width'#3#146#0#7'Anchors'#11#5'akTop'#6'akLeft'#7
+'akRight'#0#11'MultiSelect'#9#6'Sorted'#9#8'TabOrder'#2#0#8'TopIndex'#2#255#0
+#0#0#0#9'TTabSheet'#8'TSSelect'#7'Caption'#6#7'&Select'#12'ClientHeight'#3'G'
+#1#11'ClientWidth'#3'Q'#2#0#5'TMemo'#7'MSelect'#4'Left'#2#8#6'Height'#3'7'#1
+#3'Top'#2#8#5'Width'#3'A'#2#5'Align'#7#8'alClient'#20'BorderSpacing.Around'#2
+#8#13'Lines.Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#8'TSInsert'#7
,'Caption'#6#7'&Insert'#12'ClientHeight'#3'G'#1#11'ClientWidth'#3'Q'#2#0#5'TM'
+'emo'#7'MInsert'#4'Left'#2#8#6'Height'#3'7'#1#3'Top'#2#8#5'Width'#3'A'#2#5'A'
+'lign'#7#8'alClient'#20'BorderSpacing.Around'#2#8#13'Lines.Strings'#1#6#0#0#8
+'TabOrder'#2#0#0#0#0#9'TTabSheet'#8'TSUpdate'#7'Caption'#6#7'&Update'#12'Cli'
+'entHeight'#3'G'#1#11'ClientWidth'#3'Q'#2#0#5'TMemo'#7'MUpdate'#4'Left'#2#8#6
+'Height'#3'7'#1#3'Top'#2#8#5'Width'#3'A'#2#5'Align'#7#8'alClient'#20'BorderS'
+'pacing.Around'#2#8#13'Lines.Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#9'TTabSh'
+'eet'#8'TSDelete'#7'Caption'#6#7'&Delete'#12'ClientHeight'#3'G'#1#11'ClientW'
+'idth'#3'Q'#2#0#5'TMemo'#7'MDelete'#4'Left'#2#8#6'Height'#3'7'#1#3'Top'#2#8#5
+'Width'#3'A'#2#5'Align'#7#8'alClient'#20'BorderSpacing.Around'#2#8#13'Lines.'
+'Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#8'TSCreate'#7'Caption'#6
+#12'Create table'#12'ClientHeight'#3'G'#1#11'ClientWidth'#3'Q'#2#0#5'TMemo'#7
+'MCreate'#4'Left'#2#8#6'Height'#3'7'#1#3'Top'#2#8#5'Width'#3'A'#2#5'Align'#7
+#8'alClient'#20'BorderSpacing.Around'#2#8#13'Lines.Strings'#1#6#0#0#8'TabOrd'
+'er'#2#0#0#0#0#0#6'TPanel'#8'PButtons'#6'Height'#2'$'#3'Top'#3'G'#1#5'Width'
+#3'Q'#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'
+#2'$'#11'ClientWidth'#3'Q'#2#8'TabOrder'#2#1#0#7'TButton'#3'BOK'#4'Left'#3
+#247#1#6'Height'#2#25#3'Top'#2#6#5'Width'#2'S'#7'Anchors'#11#5'akTop'#7'akRi'
+'ght'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'&Ok'#11'ModalResult'
+#2#1#8'TabOrder'#2#0#0#0#7'TButton'#7'BCancel'#4'Left'#3#159#1#6'Height'#2#25
+#3'Top'#2#6#5'Width'#2'S'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpaci'
+'ng.InnerBorder'#2#4#6'Cancel'#9#7'Caption'#6#7'&Cancel'#11'ModalResult'#2#2
+#8'TabOrder'#2#1#0#0#0#0#16'TGenerateSQLForm'#15'GenerateSQLForm'#4'Left'#3
+']'#1#6'Height'#3'k'#1#3'Top'#3#17#1#5'Width'#3'Q'#2#13'ActiveControl'#7#8'C'
+'BTables'#7'Caption'#6#23'Generate SQL statements'#12'ClientHeight'#3'k'#1#11
+'ClientWidth'#3'Q'#2#8'OnCreate'#7#10'FormCreate'#10'LCLVersion'#6#6'0.9.25'
+#0#12'TPageControl'#5'PCSQL'#6'Height'#3'G'#1#5'Width'#3'Q'#2#10'ActivePage'
+#7#8'TSFields'#5'Align'#7#8'alClient'#8'TabIndex'#2#0#8'TabOrder'#2#0#0#9'TT'
+'abSheet'#8'TSFields'#7'Caption'#6#17'Table and &Fields'#29'ChildSizing.Enla'
+'rgeHorizontal'#7#14'crsScaleChilds'#27'ChildSizing.EnlargeVertical'#7#14'cr'
+'sScaleChilds'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'Chil'
+'dSizing.ShrinkVertical'#7#14'crsScaleChilds'#27'ChildSizing.ControlsPerLine'
+#2#3#12'ClientHeight'#3'&'#1#11'ClientWidth'#3'M'#2#8'OnResize'#7#8'TSResize'
+#0#6'TPanel'#8'POptions'#6'Height'#3'&'#1#5'Width'#3#254#0#5'Align'#7#6'alLe'
+'ft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3'&'#1#11'ClientWidth'#3#254
+#0#20'Constraints.MinWidth'#3#180#0#8'TabOrder'#2#0#0#6'TLabel'#9'LCBTables'
+#4'Left'#2#4#6'Height'#2#16#3'Top'#2#5#5'Width'#3#238#0#7'Anchors'#11#5'akTo'
+'p'#6'akLeft'#7'akRight'#0#8'AutoSize'#8#7'Caption'#6#6'Ta&ble'#12'FocusCont'
+'rol'#7#8'CBTables'#11'ParentColor'#8#0#0#6'TLabel'#9'LSEIndent'#4'Left'#2'('
+#6'Height'#2#20#3'Top'#3#205#0#5'Width'#3#150#0#9'Alignment'#7#14'taRightJus'
+'tify'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#8#7'Caption' +'tify'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#8#7'Caption'
+#6#7'I&ndent'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#13'LSE' +#6#11'Line Length'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#9'TComboBox'
+'LineLength'#4'Left'#2'$'#6'Height'#2#20#3'Top'#3#234#0#5'Width'#3#154#0#9'A' +#8'CBTables'#4'Left'#2#4#6'Height'#2#21#3'Top'#2#26#5'Width'#3#238#0#7'Ancho'
+'lignment'#7#14'taRightJustify'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0 +'rs'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEndO'
+#8'AutoSize'#8#7'Caption'#6#11'Line Length'#6'Layout'#7#8'tlCenter'#11'Paren' +'fLineComplete'#20'cbactSearchAscending'#0#9'MaxLength'#2#0#8'OnChange'#7#14
+'tColor'#8#0#0#9'TComboBox'#8'CBTables'#4'Left'#2#4#6'Height'#2#21#3'Top'#2 +'CBTablesChange'#6'Sorted'#9#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#0#0
+#26#5'Width'#3#238#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCo' +#0#7'TButton'#9'BGenerate'#4'Left'#2#4#6'Height'#2#25#3'Top'#3')'#1#5'Width'
+'mpleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9'MaxL' +#3#238#0#7'Anchors'#11#6'akLeft'#7'akRight'#8'akBottom'#0#25'BorderSpacing.I'
+'ength'#2#0#8'OnChange'#7#14'CBTablesChange'#6'Sorted'#9#5'Style'#7#14'csDro' +'nnerBorder'#2#4#7'Caption'#6#13'&Generate SQL'#7'Default'#9#7'OnClick'#7#14
+'pDownList'#8'TabOrder'#2#0#0#0#7'TButton'#9'BGenerate'#4'Left'#2#4#6'Height' +'BGenerateClick'#8'TabOrder'#2#1#0#0#11'TTISpinEdit'#8'SEindent'#4'Left'#3
+#2#25#3'Top'#3#9#1#5'Width'#3#238#0#7'Anchors'#11#6'akLeft'#7'akRight'#8'akB' +#204#0#6'Height'#2#23#3'Top'#3#202#0#5'Width'#2'"'#7'Anchors'#11#5'akTop'#7
+'ottom'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#13'&Generate SQL'#7 +'akRight'#0#19'Link.TIPropertyName'#6#6'Indent'#8'TabOrder'#2#2#0#0#11'TTISp'
+'Default'#9#7'OnClick'#7#14'BGenerateClick'#8'TabOrder'#2#1#0#0#11'TTISpinEd' +'inEdit'#12'SELineLength'#4'Left'#3#205#0#6'Height'#2#23#3'Top'#3#231#0#5'Wi'
+'it'#8'SEindent'#4'Left'#3#204#0#6'Height'#2#23#3'Top'#3#202#0#5'Width'#2'"' +'dth'#2'"'#7'Anchors'#11#5'akTop'#7'akRight'#0#19'Link.TIPropertyName'#6#10
+#7'Anchors'#11#5'akTop'#7'akRight'#0#19'Link.TIPropertyName'#6#6'Indent'#8'T' +'LineLength'#8'TabOrder'#2#3#0#0#13'TTICheckGroup'#10'CLBOptions'#4'Left'#2#6
+'abOrder'#2#2#0#0#11'TTISpinEdit'#12'SELineLength'#4'Left'#3#205#0#6'Height' +#6'Height'#3#144#0#3'Top'#2'2'#5'Width'#3#234#0#7'Anchors'#11#5'akTop'#6'akL'
+#2#23#3'Top'#3#231#0#5'Width'#2'"'#7'Anchors'#11#5'akTop'#7'akRight'#0#19'Li' +'eft'#7'akRight'#0#7'Caption'#6#7'Options'#19'Link.TIPropertyName'#6#7'Optio'
+'nk.TIPropertyName'#6#10'LineLength'#8'TabOrder'#2#3#0#0#13'TTICheckGroup'#10 +'ns'#23'Link.AliasValuesStrings'#1#6'.eoLineFeedAfterField=Linefeed after ea'
+'CLBOptions'#4'Left'#2#6#6'Height'#3#144#0#3'Top'#2'2'#5'Width'#3#234#0#7'An' +'ch field'#6'8eoUseOldInWhereParams=Use OLD prefix in where parameters'#6'2e'
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#0#7'Caption'#6#7'Options'#19'Link.T' +'oAndTermsInBrackets=Put brackets around AND Terms'#6'#eoQuoteFieldNames=Quo'
+'IPropertyName'#6#7'Options'#23'Link.AliasValuesStrings'#1#6'.eoLineFeedAfte' +'te field names'#6'/eoLineFeedAfterAndTerm=Linefeed after AND terms'#6#30'eo'
+'rField=Linefeed after each field'#6'8eoUseOldInWhereParams=Use OLD prefix i' +'AddTerminator=Add terminator'#0#0#0#9'TCheckBox'#17'CBIgnoreSelection'#4'Le'
+'n where parameters'#6'2eoAndTermsInBrackets=Put brackets around AND Terms'#6 +'ft'#2#6#6'Height'#2#21#3'Top'#3#1#1#5'Width'#3#190#0#7'Caption'#6#30'Create'
+'#eoQuoteFieldNames=Quote field names'#6'/eoLineFeedAfterAndTerm=Linefeed af' +' full table creation SQL'#8'TabOrder'#2#5#0#0#0#6'TPanel'#10'PKeyFields'#22
,'ter AND terms'#6#30'eoAddTerminator=Add terminator'#0#0#0#0#6'TPanel'#10'PK' +'AnchorSideLeft.Control'#7#8'POptions'#19'AnchorSideLeft.Side'#7#9'asrBottom'
+'eyFields'#22'AnchorSideLeft.Control'#7#8'POptions'#19'AnchorSideLeft.Side'#7 +#23'AnchorSideRight.Control'#7#13'PSelectFields'#4'Left'#3#254#0#6'Height'#3
+#9'asrBottom'#23'AnchorSideRight.Control'#7#13'PSelectFields'#4'Left'#3#254#0 +'F'#1#5'Width'#3#167#0#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#12
+#6'Height'#3'&'#1#5'Width'#3#167#0#5'Align'#7#8'alClient'#10'BevelOuter'#7#6 +'ClientHeight'#3'F'#1#11'ClientWidth'#3#167#0#8'TabOrder'#2#1#0#6'TLabel'#12
+'bvNone'#12'ClientHeight'#3'&'#1#11'ClientWidth'#3#167#0#8'TabOrder'#2#1#0#6 +'LLBKeyFields'#6'Height'#2#26#5'Width'#3#167#0#5'Align'#7#5'alTop'#9'Alignme'
+'TLabel'#12'LLBKeyFields'#6'Height'#2#26#5'Width'#3#167#0#5'Align'#7#5'alTop' +'nt'#7#8'taCenter'#8'AutoSize'#8#7'Caption'#6#11'&Key fields'#6'Layout'#7#8
+#9'Alignment'#7#8'taCenter'#8'AutoSize'#8#7'Caption'#6#11'&Key fields'#6'Lay' +'tlCenter'#11'ParentColor'#8#0#0#8'TListBox'#11'LBKeyFields'#4'Left'#2#2#6'H'
+'out'#7#8'tlCenter'#11'ParentColor'#8#0#0#8'TListBox'#11'LBKeyFields'#4'Left' +'eight'#3#25#1#3'Top'#2'"'#5'Width'#3#161#0#7'Anchors'#11#5'akTop'#6'akLeft'
+#2#2#6'Height'#3#249#0#3'Top'#2'"'#5'Width'#3#161#0#7'Anchors'#11#5'akTop'#6 +#7'akRight'#8'akBottom'#0#11'MultiSelect'#9#6'Sorted'#9#8'TabOrder'#2#0#8'To'
+'akLeft'#7'akRight'#8'akBottom'#0#11'MultiSelect'#9#6'Sorted'#9#8'TabOrder'#2 +'pIndex'#2#255#0#0#0#6'TPanel'#13'PSelectFields'#4'Left'#3#165#1#6'Height'#3
+#0#8'TopIndex'#2#255#0#0#0#6'TPanel'#13'PSelectFields'#4'Left'#3#165#1#6'Hei' +'F'#1#5'Width'#3#168#0#5'Align'#7#7'alRight'#10'BevelOuter'#7#6'bvNone'#12'C'
+'ght'#3'&'#1#5'Width'#3#168#0#5'Align'#7#7'alRight'#10'BevelOuter'#7#6'bvNon' +'lientHeight'#3'F'#1#11'ClientWidth'#3#168#0#8'TabOrder'#2#2#0#6'TLabel'#6'L'
+'e'#12'ClientHeight'#3'&'#1#11'ClientWidth'#3#168#0#8'TabOrder'#2#2#0#6'TLab' +'abel2'#6'Height'#2#26#5'Width'#3#168#0#5'Align'#7#5'alTop'#9'Alignment'#7#8
+'el'#6'Label2'#6'Height'#2#26#5'Width'#3#168#0#5'Align'#7#5'alTop'#9'Alignme' +'taCenter'#8'AutoSize'#8#7'Caption'#6#27'Select/Update/Insert fields'#6'Layo'
+'nt'#7#8'taCenter'#8'AutoSize'#8#7'Caption'#6#27'Select/Update/Insert fields' +'ut'#7#8'tlCenter'#11'ParentColor'#8#0#0#8'TListBox'#8'LBFields'#4'Left'#2#12
+#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#8'TListBox'#8'LBFields'#4'Lef' +#6'Height'#3#25#1#3'Top'#2'"'#5'Width'#3#146#0#7'Anchors'#11#5'akTop'#6'akLe'
+'t'#2#12#6'Height'#3#249#0#3'Top'#2'"'#5'Width'#3#146#0#7'Anchors'#11#5'akTo' +'ft'#7'akRight'#8'akBottom'#0#11'MultiSelect'#9#6'Sorted'#9#8'TabOrder'#2#0#8
+'p'#6'akLeft'#7'akRight'#0#11'MultiSelect'#9#6'Sorted'#9#8'TabOrder'#2#0#8'T' +'TopIndex'#2#255#0#0#0#0#9'TTabSheet'#8'TSSelect'#7'Caption'#6#7'&Select'#12
+'opIndex'#2#255#0#0#0#0#9'TTabSheet'#8'TSSelect'#7'Caption'#6#7'&Select'#12 ,'ClientHeight'#3'G'#1#11'ClientWidth'#3'Q'#2#0#5'TMemo'#7'MSelect'#4'Left'#2
+'ClientHeight'#3'G'#1#11'ClientWidth'#3'Q'#2#0#5'TMemo'#7'MSelect'#4'Left'#2
+#8#6'Height'#3'7'#1#3'Top'#2#8#5'Width'#3'A'#2#5'Align'#7#8'alClient'#20'Bor' +#8#6'Height'#3'7'#1#3'Top'#2#8#5'Width'#3'A'#2#5'Align'#7#8'alClient'#20'Bor'
+'derSpacing.Around'#2#8#13'Lines.Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#9'TT' +'derSpacing.Around'#2#8#13'Lines.Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#9'TT'
+'abSheet'#8'TSInsert'#7'Caption'#6#7'&Insert'#12'ClientHeight'#3'G'#1#11'Cli' +'abSheet'#8'TSInsert'#7'Caption'#6#7'&Insert'#12'ClientHeight'#3'F'#1#11'Cli'
+'entWidth'#3'Q'#2#0#5'TMemo'#7'MInsert'#4'Left'#2#8#6'Height'#3'7'#1#3'Top'#2 +'entWidth'#3'M'#2#0#5'TMemo'#7'MInsert'#4'Left'#2#8#6'Height'#3'6'#1#3'Top'#2
+#8#5'Width'#3'A'#2#5'Align'#7#8'alClient'#20'BorderSpacing.Around'#2#8#13'Li' +#8#5'Width'#3'='#2#5'Align'#7#8'alClient'#20'BorderSpacing.Around'#2#8#13'Li'
+'nes.Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#8'TSUpdate'#7'Capti' +'nes.Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#8'TSUpdate'#7'Capti'
+'on'#6#7'&Update'#12'ClientHeight'#3'G'#1#11'ClientWidth'#3'Q'#2#0#5'TMemo'#7 +'on'#6#7'&Update'#12'ClientHeight'#3'G'#1#11'ClientWidth'#3'Q'#2#0#5'TMemo'#7
+'MUpdate'#4'Left'#2#8#6'Height'#3'7'#1#3'Top'#2#8#5'Width'#3'A'#2#5'Align'#7 +'MUpdate'#4'Left'#2#8#6'Height'#3'7'#1#3'Top'#2#8#5'Width'#3'A'#2#5'Align'#7
@ -166,7 +83,7 @@ LazarusResources.Add('TGenerateSQLForm','FORMDATA',[
+'Width'#3'Q'#2#0#5'TMemo'#7'MCreate'#4'Left'#2#8#6'Height'#3'7'#1#3'Top'#2#8 +'Width'#3'Q'#2#0#5'TMemo'#7'MCreate'#4'Left'#2#8#6'Height'#3'7'#1#3'Top'#2#8
+#5'Width'#3'A'#2#5'Align'#7#8'alClient'#20'BorderSpacing.Around'#2#8#13'Line' +#5'Width'#3'A'#2#5'Align'#7#8'alClient'#20'BorderSpacing.Around'#2#8#13'Line'
+'s.Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#0#6'TPanel'#8'PButtons'#6'Height'#2 +'s.Strings'#1#6#0#0#8'TabOrder'#2#0#0#0#0#0#6'TPanel'#8'PButtons'#6'Height'#2
+'$'#3'Top'#3'G'#1#5'Width'#3'Q'#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#9 +'$'#3'Top'#3'g'#1#5'Width'#3'Q'#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#9
+'bvLowered'#12'ClientHeight'#2'$'#11'ClientWidth'#3'Q'#2#8'TabOrder'#2#1#0#7 +'bvLowered'#12'ClientHeight'#2'$'#11'ClientWidth'#3'Q'#2#8'TabOrder'#2#1#0#7
+'TButton'#3'BOK'#4'Left'#3#247#1#6'Height'#2#25#3'Top'#2#6#5'Width'#2'S'#7'A' +'TButton'#3'BOK'#4'Left'#3#247#1#6'Height'#2#25#3'Top'#2#6#5'Width'#2'S'#7'A'
+'nchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Captio' +'nchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Captio'

View File

@ -37,6 +37,7 @@ type
BCancel: TButton; BCancel: TButton;
BGenerate: TButton; BGenerate: TButton;
CBTables: TComboBox; CBTables: TComboBox;
CBIgnoreSelection: TCheckBox;
LBKeyFields: TListBox; LBKeyFields: TListBox;
LCBTables: TLabel; LCBTables: TLabel;
Label2: TLabel; Label2: TLabel;
@ -66,6 +67,7 @@ type
procedure BGenerateClick(Sender: TObject); procedure BGenerateClick(Sender: TObject);
procedure CBTablesChange(Sender: TObject); procedure CBTablesChange(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure PCSQLChange(Sender: TObject);
procedure TSResize(Sender: TObject); procedure TSResize(Sender: TObject);
private private
FTableDefs : TDDTableDefs; FTableDefs : TDDTableDefs;
@ -86,6 +88,10 @@ type
Property TableDefs : TDDTableDefs Read FTableDefs Write SetTableDefs; Property TableDefs : TDDTableDefs Read FTableDefs Write SetTableDefs;
Property TableName : String Read GetTableName Write SetTableName; Property TableName : String Read GetTableName Write SetTableName;
Property SelectSQL : TStrings Index 0 Read GetSQLStatement; Property SelectSQL : TStrings Index 0 Read GetSQLStatement;
Property InsertSQL : TStrings Index 1 Read GetSQLStatement;
Property UpdateSQL : TStrings Index 2 Read GetSQLStatement;
Property DeleteSQL : TStrings Index 3 Read GetSQLStatement;
Property CreateSQL : TStrings Index 4 Read GetSQLStatement;
Property TableDef : TDDTableDef Read GetTableDef; Property TableDef : TDDTableDef Read GetTableDef;
end; end;
@ -128,6 +134,10 @@ function TGenerateSQLForm.GetSQLStatement(Index: integer): TStrings;
begin begin
Case Index of Case Index of
0 : Result:=MSelect.Lines; 0 : Result:=MSelect.Lines;
1 : Result:=MInsert.Lines;
2 : Result:=MUpdate.Lines;
3 : Result:=MDelete.Lines;
4 : Result:=MCreate.Lines;
end; end;
end; end;
@ -213,6 +223,11 @@ begin
CreateInsertSQLStrings(FL,MInsert.Lines); CreateInsertSQLStrings(FL,MInsert.Lines);
CreateUpdateSQLStrings(FL,KL,MUpdate.Lines); CreateUpdateSQLStrings(FL,KL,MUpdate.Lines);
CreateDeleteSQLStrings(KL,MDelete.Lines); CreateDeleteSQLStrings(KL,MDelete.Lines);
{$IFNDEF VER2_2}
If CBIgnoreSelection.Checked then
CreateTableSQLStrings(MCreate.Lines)
else
{$ENDIF}
CreateCreateSQLStrings(FL,KL,MCreate.Lines); CreateCreateSQLStrings(FL,KL,MCreate.Lines);
end; end;
FSQLGenerated:=True; FSQLGenerated:=True;
@ -276,6 +291,14 @@ begin
CLBOptions.Link.TIObject:=FGenerator; CLBOptions.Link.TIObject:=FGenerator;
SEIndent.Link.TIObject:=FGenerator; SEIndent.Link.TIObject:=FGenerator;
SELineLength.Link.TIObject:=FGenerator; SELineLength.Link.TIObject:=FGenerator;
{$IFDEF VER2_2}
CBIgnoreSelection.Visible:=False;
{$ENDIF VER2_2}
end;
procedure TGenerateSQLForm.PCSQLChange(Sender: TObject);
begin
end; end;

View File

@ -84,18 +84,37 @@ object MainForm: TMainForm
Action = ADeleteField Action = ADeleteField
end end
object ToolButton3: TToolButton object ToolButton3: TToolButton
Left = 200 Left = 265
Top = 2 Top = 2
Width = 15 Width = 15
Caption = 'ToolButton3' Caption = 'ToolButton3'
Style = tbsSeparator Style = tbsSeparator
end end
object TBGenerateSQL: TToolButton object TBGenerateSQL: TToolButton
Left = 215 Left = 280
Hint = 'Generate SQL statements for the current table' Hint = 'Generate SQL statements for the current table'
Top = 2 Top = 2
Action = AGenerateSQL Action = AGenerateSQL
end end
object ToolButton4: TToolButton
Left = 200
Top = 2
Width = 17
Caption = 'ToolButton4'
Style = tbsSeparator
end
object TBAddIndex: TToolButton
Left = 217
Hint = 'Add new index to current table'
Top = 2
Action = ANewIndex
end
object TBDeleteIndex: TToolButton
Left = 241
Hint = 'Delete current index from table'
Top = 2
Action = ADeleteIndex
end
end end
object PCDD: TPageControl object PCDD: TPageControl
Height = 301 Height = 301
@ -107,10 +126,10 @@ object MainForm: TMainForm
TabOrder = 1 TabOrder = 1
object TSRecent: TTabSheet object TSRecent: TTabSheet
Caption = 'Dictionaries' Caption = 'Dictionaries'
ClientHeight = 309 ClientHeight = 301
ClientWidth = 487 ClientWidth = 487
object LVDicts: TListView object LVDicts: TListView
Height = 309 Height = 301
Width = 487 Width = 487
Align = alClient Align = alClient
Columns = < Columns = <
@ -526,13 +545,49 @@ object MainForm: TMainForm
FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FB
FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00 FF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00F0FBFF00
} }
OnClick = ADeleteFieldUpdate OnClick = ADeleteFieldExecute
end end
object MIDDSep3: TMenuItem object MIDDSep3: TMenuItem
Caption = '-' Caption = '-'
end end
object MIGenerateSQL: TMenuItem object MIGenerateSQL: TMenuItem
Action = AGenerateSQL Action = AGenerateSQL
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000F0FBFF008080
80FF808080FF808080FF808080FF808080FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0
A0FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0A0FFF0FBFF000000FFFFF0FBFF008080
80FFF0FBFF00808080FFF0FBFF00808080FFF0FBFF00A4A0A0FFF0FBFF00A4A0
A0FFF0FBFF00A4A0A0FFF0FBFF00A4A0A0FFF0FBFF000000FFFFF0FBFF000000
00FFF0FBFF00000000FFF0FBFF00000000FFF0FBFF00000000FFF0FBFF000000
00FFF0FBFF00000000FFF0FBFF00000000FFF0FBFF000000FFFF0000FFFF8060
00FFC0C040FFC0C040FFC0C040FFC0C040FFC0C060FFC0C060FFC0C060FFC0C0
60FF806020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF8060
00FFFFFF00FF000000FF000000FF000000FF000000FFC0C040FFC0C040FF80A0
40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF8060
00FFFFFF00FF000000FFC0C0C0FF000000FFFFFF00FFFFFF00FF80A040FF4000
00FF400000FF800040FF800040FF800040FF800040FFFFFFFFFF0000FFFF8060
00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FF806020FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF8060
00FFFFFF00FF000000FFFFFF00FFFFFF00FF80A040FF400000FF400000FF4000
00FF800040FF800040FF800040FF800040FF800040FFFFFFFFFF0000FFFF8060
00FFFFFF00FFFFFF00FFFFFF00FF806000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF8060
00FFFFFF00FFFFFF00FF808000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFC06020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF8060
00FFFFFF00FF808000FFC04000FFC06020FFFFFFFFFFFFFFFFFFC04000FFC040
00FFC04000FFFFFFFFFFC04000FFC04000FFC04000FFFFFFFFFF0000FFFF8060
00FF808020FFC0C0C0FFC0A060FFC04000FFC0C0C0FFC04000FFC0A060FFC060
20FFC04000FFC0C0C0FFC04000FFC0A060FFFFFFFFFFFFFFFFFF0000FFFF8060
00FFC0C0C0FFC06020FFC04000FFC06020FFFFFFFFFFC04000FFFFFFFFFFFFFF
FFFFC04000FFFFFFFFFFC04000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000
FFFFC0C0C0FFC04000FFC0A060FFC0C0C0FFC0DCC0FFC04000FFC0DCC0FFC0DC
C0FFC04000FFFFFFFFFFC04000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000
FFFFC0C0C0FFC06020FFC04000FFC04000FFFFFFFFFFC0A060FFC04000FFC040
00FFC0A060FFFFFFFFFFC04000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000
FFFFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0DCC0FFC0DCC0FFC0DCC0FFC0DC
C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
}
OnClick = AGenerateSQLExecute OnClick = AGenerateSQLExecute
end end
end end
@ -697,12 +752,30 @@ object MainForm: TMainForm
Caption = '&Copy connection' Caption = '&Copy connection'
DisableIfNoHandler = True DisableIfNoHandler = True
end end
object ANewIndex: TAction
Category = 'Dictionary'
Caption = 'New index'
DisableIfNoHandler = True
Hint = 'Add new index to current table'
ImageIndex = 8
OnExecute = ANewIndexExecute
OnUpdate = ANewIndexUpdate
end
object ADeleteIndex: TAction
Category = 'Dictionary'
Caption = 'Delete Index'
DisableIfNoHandler = True
Hint = 'Delete current index from table'
ImageIndex = 9
OnExecute = ADeleteIndexExecute
OnUpdate = ADeleteIndexUpdate
end
end end
object ILMain: TImageList object ILMain: TImageList
left = 47 left = 47
top = 123 top = 123
Bitmap = { Bitmap = {
4C69080000001000000010000000000000000000000000000000000000000000 4C690A0000001000000010000000000000000000000000000000000000000000
000000000000000000FF000000FF000000FF000000FF00000000000000000000 000000000000000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF00000000000000FF000000FF000000FF000000FF0000 0000000000FF000000FF00000000000000FF000000FF000000FF000000FF0000
@ -958,7 +1031,71 @@ object MainForm: TMainForm
FF00808080FFF0FBFF00A4A0A0FFF0FBFF00A4A0A0FFF0FBFF00A4A0A0FFF0FB FF00808080FFF0FBFF00A4A0A0FFF0FBFF00A4A0A0FFF0FBFF00A4A0A0FFF0FB
FF00A4A0A0FFF0FBFF000000FFFFF0FBFF00808080FF808080FF808080FF8080 FF00A4A0A0FFF0FBFF000000FFFFF0FBFF00808080FF808080FF808080FF8080
80FF808080FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0 80FF808080FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0A0FFA4A0
A0FFA4A0A0FFF0FBFF000000FFFF A0FFA4A0A0FFF0FBFF000000FFFF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000000000
00FF000000FF000000FF00000000000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF0000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000000000
00FF000000FF000000FF000000FF000000FF00000000000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000AE9075FFAE9075FFAE9075FFAE9075FFAE90
75FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE90
75FFAE9075FFAE9075FFAC8E74FFAE9075FF000000FF000000FFAE9075FF0000
00FF000000FF000000FF000000FFAE9075FF000000FF000000FF000000FFAE90
75FF000000FF000000FFAE9075FFAE9075FF000000FF000000FFAE9075FFAE90
75FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE90
75FFAE9075FFAE9075FFAE9075FFAE9075FF000000FF000000FFAE9075FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FFAE9075FF0000
00FF000000FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE90
75FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE90
75FFAE9075FFAE9075FFA68A70FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000000000
00FF000000FF000000FF000000FF00000000000000FF000000FF000000FF0000
0000000000FF000000FF0000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000000000
00FF000000FF000000FF000000FF00000000000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000FFFF0000FFFF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000
00FF000000FF000000FF00000000000000FF000000FF000000FF000000FF0000
00FF0000FFFF0000FFFF0000FFFF000000000000FFFF0000FFFF0000FFFF0000
0000000000000000000000000000000000000000000000000000000000000000
FFFF0000FFFF0000FFFF0000000000000000000000FF0000FFFF0000FFFF0000
FFFF000000FF000000FF000000FF000000FF00000000000000FF0000FFFF0000
FFFF0000FFFF00000000000000000000000000000000000000000000FFFF0000
FFFF0000FFFF000000000000000000000000000000000000FFFF0000FFFF0000
FFFF000000000000000000000000AE9075FFAE9075FFAE9075FFAE9075FF0000
FFFF0000FFFF0000FFFFAE9075FFAE9075FF0000FFFF0000FFFF0000FFFFAE90
75FFAE9075FFAE9075FFAC8E74FFAE9075FF000000FF000000FFAE9075FF0000
00FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000FFAE90
75FF000000FF000000FFAE9075FFAE9075FF000000FF000000FFAE9075FFAE90
75FFAE9075FF0000FFFF0000FFFF0000FFFF0000FFFFAE9075FFAE9075FFAE90
75FFAE9075FFAE9075FFAE9075FFAE9075FF000000FF000000FFAE9075FF0000
00FF000000FF0000FFFF0000FFFF0000FFFF0000FFFF000000FFAE9075FF0000
00FF000000FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE9075FFAE90
75FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFFAE9075FFAE90
75FFAE9075FFAE9075FFA68A70FF000000000000000000000000000000000000
FFFF0000FFFF0000FFFF00000000000000000000FFFF0000FFFF0000FFFF0000
000000000000000000000000000000000000000000FF000000FF0000FFFF0000
FFFF0000FFFF000000FF000000FF00000000000000FF0000FFFF0000FFFF0000
FFFF000000FF000000FF0000000000000000000000FF0000FFFF0000FFFF0000
FFFF0000000000000000000000000000000000000000000000000000FFFF0000
FFFF0000FFFF0000000000000000000000000000FFFF0000FFFF0000FFFF0000
00FF000000FF000000FF000000FF00000000000000FF000000FF000000FF0000
FFFF0000FFFF0000FFFF000000000000FFFF0000FFFF0000FFFF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000FFFF0000FFFF
} }
end end
object ODDD: TOpenDialog object ODDD: TOpenDialog

File diff suppressed because it is too large Load Diff

View File

@ -50,6 +50,8 @@ type
AClose: TAction; AClose: TAction;
ACloseAll: TAction; ACloseAll: TAction;
ACopyConnection: TAction; ACopyConnection: TAction;
ANewIndex: TAction;
ADeleteIndex: TAction;
ADeleteConnection: TAction; ADeleteConnection: TAction;
ANewConnection: TAction; ANewConnection: TAction;
ASaveAs: TAction; ASaveAs: TAction;
@ -103,6 +105,9 @@ type
ODDD: TOpenDialog; ODDD: TOpenDialog;
PCDD: TPageControl; PCDD: TPageControl;
SDDD: TSaveDialog; SDDD: TSaveDialog;
ToolButton4: TToolButton;
TBAddIndex: TToolButton;
TBDeleteIndex: TToolButton;
TSConnections: TTabSheet; TSConnections: TTabSheet;
ToolButton1: TToolButton; ToolButton1: TToolButton;
TBNewTable: TToolButton; TBNewTable: TToolButton;
@ -121,6 +126,8 @@ type
procedure ACloseExecute(Sender: TObject); procedure ACloseExecute(Sender: TObject);
procedure ADeleteFieldExecute(Sender: TObject); procedure ADeleteFieldExecute(Sender: TObject);
procedure ADeleteFieldUpdate(Sender: TObject); procedure ADeleteFieldUpdate(Sender: TObject);
procedure ADeleteIndexExecute(Sender: TObject);
procedure ADeleteIndexUpdate(Sender: TObject);
procedure ADeleteTableExecute(Sender: TObject); procedure ADeleteTableExecute(Sender: TObject);
procedure ADeleteTableUpdate(Sender: TObject); procedure ADeleteTableUpdate(Sender: TObject);
procedure AExitExecute(Sender: TObject); procedure AExitExecute(Sender: TObject);
@ -129,6 +136,8 @@ type
procedure ANewExecute(Sender: TObject); procedure ANewExecute(Sender: TObject);
procedure ANewFieldExecute(Sender: TObject); procedure ANewFieldExecute(Sender: TObject);
procedure ANewFieldUpdate(Sender: TObject); procedure ANewFieldUpdate(Sender: TObject);
procedure ANewIndexExecute(Sender: TObject);
procedure ANewIndexUpdate(Sender: TObject);
procedure ANewTableExecute(Sender: TObject); procedure ANewTableExecute(Sender: TObject);
procedure ANewTableUpdate(Sender: TObject); procedure ANewTableUpdate(Sender: TObject);
procedure AOpenExecute(Sender: TObject); procedure AOpenExecute(Sender: TObject);
@ -200,8 +209,10 @@ type
function NewConnectionEditor(AName : String): TConnectionEditor; function NewConnectionEditor(AName : String): TConnectionEditor;
procedure DeleteCurrentTable; procedure DeleteCurrentTable;
procedure DeleteCurrentField; procedure DeleteCurrentField;
procedure DeleteCurrentIndex;
Procedure DoNewTable; Procedure DoNewTable;
Procedure DoNewField; Procedure DoNewField;
Procedure DoNewIndex;
procedure ShowGenerateSQL; procedure ShowGenerateSQL;
Property CurrentEditor : TDataDictEditor Read GetCurrentEditor; Property CurrentEditor : TDataDictEditor Read GetCurrentEditor;
Property CurrentConnection : TConnectionEditor Read GetCurrentConnection; Property CurrentConnection : TConnectionEditor Read GetCurrentConnection;
@ -242,6 +253,8 @@ ResourceString
SNewTableName = 'Enter a name for the new table:'; SNewTableName = 'Enter a name for the new table:';
SNewField = 'Create new field in table %s'; SNewField = 'Create new field in table %s';
SNewFieldName = 'Enter a name for the new field:'; SNewFieldName = 'Enter a name for the new field:';
SNewIndex = 'Create new index on table %s';
SNewIndexName = 'Enter a name for the new index:';
SSelectDBFDir = 'Select a directory with DBF files'; SSelectDBFDir = 'Select a directory with DBF files';
SNewConnection = 'New connection'; SNewConnection = 'New connection';
SConnectionDescription = 'Enter a descriptive name for the connection'; SConnectionDescription = 'Enter a descriptive name for the connection';
@ -696,6 +709,17 @@ begin
Assigned(CurrentEditor.CurrentField); Assigned(CurrentEditor.CurrentField);
end; end;
procedure TMainForm.ADeleteIndexExecute(Sender: TObject);
begin
DeleteCurrentIndex;
end;
procedure TMainForm.ADeleteIndexUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled:=Assigned(CurrentEditor) and
Assigned(CurrentEditor.CurrentIndex);
end;
procedure TMainForm.ADeleteTableExecute(Sender: TObject); procedure TMainForm.ADeleteTableExecute(Sender: TObject);
begin begin
DeleteCurrentTable; DeleteCurrentTable;
@ -728,6 +752,17 @@ begin
and (CurrentEditor.CurrentTable<>Nil); and (CurrentEditor.CurrentTable<>Nil);
end; end;
procedure TMainForm.ANewIndexExecute(Sender: TObject);
begin
DoNewIndex;
end;
procedure TMainForm.ANewIndexUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled:=(CurrentEditor<>nil)
and (CurrentEditor.CurrentTable<>Nil);
end;
procedure TMainForm.ANewTableExecute(Sender: TObject); procedure TMainForm.ANewTableExecute(Sender: TObject);
begin begin
DoNewTable; DoNewTable;
@ -1012,6 +1047,14 @@ begin
DeleteField(CurrentField); DeleteField(CurrentField);
end; end;
procedure TMainForm.DeleteCurrentIndex;
begin
if Assigned(CurrentEditor) then
With CurrentEditor do
If Assigned(CurrentIndex) then
DeleteIndex(CurrentIndex);
end;
procedure TMainForm.DoNewField; procedure TMainForm.DoNewField;
Var Var
@ -1032,6 +1075,26 @@ begin
end; end;
end; end;
procedure TMainForm.DoNewIndex;
Var
TD : TDDTableDef;
AIndexName : String;
begin
If Assigned(CurrentEditor) then
begin
TD:=CurrentEditor.CurrentTable;
If Assigned(TD) then
begin
AIndexName:='';
If InputQuery(Format(SNewIndex,[TD.TableName]),SNewIndexName,AIndexName) then
If (AIndexName<>'') then
CurrentEditor.NewIndex(AIndexName,TD);
end;
end;
end;
procedure TMainForm.DoNewTable; procedure TMainForm.DoNewTable;
Var Var

View File

@ -1,26 +1,25 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<CONFIG> <CONFIG>
<ProjectOptions> <ProjectOptions>
<PathDelim Value="\"/> <PathDelim Value="/"/>
<Version Value="6"/> <Version Value="6"/>
<General> <General>
<SessionStorage Value="InProjectDir"/> <SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/> <MainUnit Value="0"/>
<AutoCreateForms Value="False"/> <AutoCreateForms Value="False"/>
<IconPath Value=".\"/> <IconPath Value="./"/>
<TargetFileExt Value=".exe"/> <TargetFileExt Value=".exe"/>
<Title Value="Lazarus Data Desktop"/> <Title Value="Lazarus Data Desktop"/>
</General> </General>
<PublishOptions> <PublishOptions>
<Version Value="2"/> <Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions> </PublishOptions>
<RunParams> <RunParams>
<local> <local>
<FormatVersion Value="1"/> <FormatVersion Value="1"/>
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/> <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local> </local>
</RunParams> </RunParams>
<RequiredPackages Count="7"> <RequiredPackages Count="7">
@ -77,6 +76,7 @@
<Filename Value="frmgeneratesql.pp"/> <Filename Value="frmgeneratesql.pp"/>
<ComponentName Value="GenerateSQLForm"/> <ComponentName Value="GenerateSQLForm"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<ResourceFilename Value="frmgeneratesql.lrs"/> <ResourceFilename Value="frmgeneratesql.lrs"/>
<UnitName Value="frmgeneratesql"/> <UnitName Value="frmgeneratesql"/>
</Unit4> </Unit4>
@ -115,12 +115,11 @@
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>
<Version Value="5"/> <Version Value="5"/>
<PathDelim Value="\"/>
<Target> <Target>
<Filename Value="lazdatadesktop"/> <Filename Value="lazdatadesktop"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<Libraries Value="\opt\gnome\lib\"/> <Libraries Value="/opt/gnome/lib64/"/>
</SearchPaths> </SearchPaths>
<CodeGeneration> <CodeGeneration>
<Generate Value="Faster"/> <Generate Value="Faster"/>