ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/ibupdatesqleditor.pas
(Generate patch)

Comparing ibx/trunk/design/ibupdatesqleditor.pas (file contents):
Revision 19 by tony, Mon Jul 7 13:00:15 2014 UTC vs.
Revision 209 by tony, Wed Mar 14 12:48:51 2018 UTC

# Line 1 | Line 1
1 < (*
2 < *  IBX For Lazarus (Firebird Express)
3 < *
4 < *  The contents of this file are subject to the Initial Developer's
5 < *  Public License Version 1.0 (the "License"); you may not use this
6 < *  file except in compliance with the License. You may obtain a copy
7 < *  of the License here:
8 < *
9 < *    http://www.firebirdsql.org/index.php?op=doc&id=idpl
10 < *
11 < *  Software distributed under the License is distributed on an "AS
12 < *  IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
13 < *  implied. See the License for the specific language governing rights
14 < *  and limitations under the License.
15 < *
16 < *  The Initial Developer of the Original Code is Tony Whyman.
17 < *
18 < *  The Original Code is (C) 2011 Tony Whyman, MWA Software
19 < *  (http://www.mwasoftware.co.uk).
20 < *
21 < *  All Rights Reserved.
22 < *
23 < *  Contributor(s): ______________________________________.
24 < *
25 < *)
26 < unit IBUpdateSQLEditor;
27 <
28 < {$mode objfpc}{$H+}
29 <
30 < interface
31 <
32 < uses
33 <  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
34 <  ComCtrls, StdCtrls, ExtCtrls, IBSystemTables, IBUpdateSQL, IBDatabase;
35 <
36 < type
37 <
38 <  { TIBUpdateSQLEditorForm }
39 <
40 <  TIBUpdateSQLEditorForm = class(TForm)
41 <    GenerateParams: TCheckBox;
42 <    TestBtn: TButton;
43 <    CancelButton: TButton;
44 <    FieldsPage: TTabSheet;
45 <    GenerateBtn: TButton;
46 <    GroupBox1: TGroupBox;
47 <    IBTransaction1: TIBTransaction;
48 <    IncludePrimaryKeys: TCheckBox;
49 <    PrimaryKeyList: TListBox;
50 <    Label1: TLabel;
51 <    Label2: TLabel;
52 <    Label3: TLabel;
53 <    Label4: TLabel;
54 <    OkButton: TButton;
55 <    PageControl: TPageControl;
56 <    QuoteFields: TCheckBox;
57 <    SQLMemo: TMemo;
58 <    SQLPage: TTabSheet;
59 <    StatementType: TRadioGroup;
60 <    FieldList: TListBox;
61 <    TableNamesCombo: TComboBox;
62 <    procedure TestBtnClick(Sender: TObject);
63 <    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
64 <    procedure FormShow(Sender: TObject);
65 <    procedure GenerateBtnClick(Sender: TObject);
66 <    procedure SQLMemoChange(Sender: TObject);
67 <    procedure SQLPageShow(Sender: TObject);
68 <    procedure StatementTypeClick(Sender: TObject);
69 <    procedure TableNamesComboCloseUp(Sender: TObject);
70 <  private
71 <    { private declarations }
72 <    FUpdateObject: TIBUpdateSQL;
73 <    FIBSystemTables: TIBSystemTables;
74 <    FDirty: boolean;
75 <    FCurrentStatement: integer;
76 <    FModifySQL: TStringList;
77 <    FInsertSQL: TStringList;
78 <    FDeleteSQL: TStringList;
79 <    FRefreshSQL: TStringList;
80 <    procedure UpdateSQLMemo;
81 <  public
82 <    { public declarations }
83 <    constructor Create(TheOwner: TComponent); override;
84 <    destructor Destroy; override;
85 <    procedure SetUpdateObject(AObject: TIBUpdateSQL);
86 <  end;
87 <
88 < var
89 <  IBUpdateSQLEditorForm: TIBUpdateSQLEditorForm;
90 <
91 < function EditIBUpdateSQL(UpdateObject: TIBUpdateSQL): boolean;
92 <
93 < implementation
94 <
95 < uses IBQuery;
96 <
97 < {$R *.lfm}
98 <
99 < function EditIBUpdateSQL(UpdateObject: TIBUpdateSQL): boolean;
100 < begin
101 <  Result := false;
102 <  if assigned(UpdateObject.DataSet) and assigned(UpdateObject.DataSet.Database) then
103 <    try
104 <      UpdateObject.DataSet.Database.Connected := true;
105 <    except on E: Exception do
106 <      ShowMessage(E.Message)
107 <    end;
108 <
109 <  with TIBUpdateSQLEditorForm.Create(Application) do
110 <  try
111 <    SetUpdateObject(UpdateObject);
112 <    if assigned(UpdateObject.DataSet) then
113 <      GenerateParams.Checked := UpdateObject.DataSet.GenerateParamNames;
114 <    Result := ShowModal = mrOK;
115 <    if Result and assigned(UpdateObject.DataSet) then
116 <      UpdateObject.DataSet.GenerateParamNames := GenerateParams.Checked
117 <  finally
118 <    Free
119 <  end;
120 <
121 < end;
122 <
123 < { TIBUpdateSQLEditorForm }
124 <
125 < procedure TIBUpdateSQLEditorForm.FormShow(Sender: TObject);
126 < var TableName: string;
127 < begin
128 <  GenerateBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
129 <  TestBtn.Enabled := (IBTransaction1.DefaultDatabase <> nil) and IBTransaction1.DefaultDatabase.Connected;
130 <  PageControl.ActivePage := FieldsPage;
131 <  FModifySQL.Assign(FUpdateObject.ModifySQL);
132 <  FInsertSQL.Assign(FUpdateObject.InsertSQL);
133 <  FDeleteSQL.Assign(FUpdateObject.DeleteSQL);
134 <  FRefreshSQL.Assign(FUpdateObject.RefreshSQL);
135 <  FCurrentStatement := -1;
136 <  TableNamesCombo.Items.Clear;
137 <  FIBSystemTables.GetTableNames(TableNamesCombo.Items);
138 <  if TableNamesCombo.Items.Count > 0 then
139 <  begin
140 <    TableNamesCombo.ItemIndex := 0;
141 <    if assigned(FUpdateObject.DataSet) and (FUpdateObject.DataSet is TIBQuery) and
142 <       ((FUpdateObject.DataSet as TIBQuery).SQL.Text <> '') then
143 <    try
144 <       FIBSystemTables.GetTableAndColumns((FUpdateObject.DataSet as TIBQuery).SQL.Text,TableName,nil);
145 <       TableNamesCombo.ItemIndex := TableNamesCombo.Items.IndexOf(TableName);
146 <    except  //ignore
147 <    end;
148 <    FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,IncludePrimaryKeys.checked,false);
149 <    FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items);
150 <  end;
151 < end;
152 <
153 < procedure TIBUpdateSQLEditorForm.FormClose(Sender: TObject;
154 <  var CloseAction: TCloseAction);
155 < begin
156 <  if ModalResult = mrOK then
157 <  begin
158 <    UpdateSQLMemo;
159 <    FUpdateObject.ModifySQL.Assign(FModifySQL);
160 <    FUpdateObject.InsertSQL.Assign(FInsertSQL);
161 <    FUpdateObject.DeleteSQL.Assign(FDeleteSQL);
162 <    FUpdateObject.RefreshSQL.Assign(FRefreshSQL);
163 <  end;
164 < end;
165 <
166 < procedure TIBUpdateSQLEditorForm.TestBtnClick(Sender: TObject);
167 < begin
168 <  if SQLMemo.Lines.Text <> '' then
169 <    FIBSystemTables.TestSQL(SQLMemo.Lines.Text,GenerateParams.Checked);
170 < end;
171 <
172 < procedure TIBUpdateSQLEditorForm.GenerateBtnClick(Sender: TObject);
173 < var FieldNames: TStringList;
174 <    I: integer;
175 < begin
176 <  FieldNames := TStringList.Create;
177 <  try
178 <    FUpdateObject.RefreshSQL.Clear;
179 <    FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldNames);
180 <    FIBSystemTables.GenerateRefreshSQL(TableNamesCombo.Text,QuoteFields.Checked,FieldNames,FRefreshSQL);
181 <    FIBSystemTables.GenerateDeleteSQL(TableNamesCombo.Text,QuoteFields.Checked,FDeleteSQL);
182 <    FieldNames.Clear;
183 <    FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldNames,true,false);
184 <    FIBSystemTables.GenerateInsertSQL(TableNamesCombo.Text,QuoteFields.Checked,
185 <        FieldNames,FInsertSQL);
186 <    if FieldList.SelCount = 0 then
187 <    begin
188 <      FIBSystemTables.GenerateModifySQL(TableNamesCombo.Text,QuoteFields.Checked,
189 <        FieldList.Items,FModifySQL);
190 <
191 <    end
192 <    else
193 <    begin
194 <      FieldNames.Clear;
195 <      for I := 0 to FieldList.Items.Count - 1 do
196 <          if FieldList.Selected[I] then
197 <               FieldNames.Add(FieldList.Items[I]);
198 <      FIBSystemTables.GenerateModifySQL(TableNamesCombo.Text,QuoteFields.Checked,
199 <           FieldNames,FModifySQL);
200 <    end;
201 <    FDirty := false;
202 <    PageControl.ActivePage := SQLPage;
203 <  finally
204 <    FieldNames.Free
205 <  end;
206 < end;
207 <
208 < procedure TIBUpdateSQLEditorForm.SQLMemoChange(Sender: TObject);
209 < begin
210 <  FDirty := true
211 < end;
212 <
213 < procedure TIBUpdateSQLEditorForm.SQLPageShow(Sender: TObject);
214 < begin
215 <  UpdateSQLMemo
216 < end;
217 <
218 < procedure TIBUpdateSQLEditorForm.StatementTypeClick(Sender: TObject);
219 < begin
220 <  UpdateSQLMemo
221 < end;
222 <
223 < procedure TIBUpdateSQLEditorForm.TableNamesComboCloseUp(Sender: TObject);
224 < begin
225 <  FIBSystemTables.GetFieldNames(TableNamesCombo.Text,FieldList.Items,IncludePrimaryKeys.checked,false);
226 <  FIBSystemTables.GetPrimaryKeys(TableNamesCombo.Text,PrimaryKeyList.Items);
227 < end;
228 <
229 < procedure TIBUpdateSQLEditorForm.UpdateSQLMemo;
230 < begin
231 <  if FDirty then
232 <    case FCurrentStatement of
233 <    0: //Modify
234 <        FModifySQL.Assign(SQLMemo.Lines);
235 <    1: //Insert
236 <        FInsertSQL.Assign(SQLMemo.Lines);
237 <    2: // Delete
238 <        FDeleteSQL.Assign(SQLMemo.Lines);
239 <    3: //Refresh
240 <        FRefreshSQL.Assign(SQLMemo.Lines);
241 <    end;
242 <  FDirty := false;
243 <  case StatementType.ItemIndex of
244 <  0: // Modify
245 <    SQLMemo.Lines.Assign(FModifySQL)  ;
246 <  1: //Insert
247 <    SQLMemo.Lines.Assign(FInsertSQL)  ;
248 <  2: // Delete
249 <    SQLMemo.Lines.Assign(FDeleteSQL)  ;
250 <  3: //Refresh
251 <    SQLMemo.Lines.Assign(FRefreshSQL)  ;
252 <  end;
253 <  FCurrentStatement := StatementType.ItemIndex;
254 < end;
255 <
256 < constructor TIBUpdateSQLEditorForm.Create(TheOwner: TComponent);
257 < begin
258 <  inherited Create(TheOwner);
259 <  FIBSystemTables := TIBSystemTables.Create;
260 <  FModifySQL := TStringList.Create;
261 <  FInsertSQL := TStringList.Create;
262 <  FDeleteSQL := TStringList.Create;
263 <  FRefreshSQL := TStringList.Create;
264 < end;
265 <
266 < destructor TIBUpdateSQLEditorForm.Destroy;
267 < begin
268 <  if assigned(FIBSystemTables) then FIBSystemTables.Free;
269 <  if assigned(FModifySQL) then FModifySQL.Free;
270 <  if assigned(FInsertSQL) then FInsertSQL.Free;
271 <  if assigned(FDeleteSQL) then FDeleteSQL.Free;
272 <  if assigned(FRefreshSQL) then FRefreshSQL.Free;
273 <  inherited Destroy;
274 < end;
275 <
276 < procedure TIBUpdateSQLEditorForm.SetUpdateObject(AObject: TIBUpdateSQL);
277 < begin
278 <  FUpdateObject := AObject;
279 <  if assigned(FUpdateObject.DataSet) then
280 <  begin
281 <    IBTransaction1.DefaultDatabase := FUpdateObject.DataSet.Database;
282 <    FIBSystemTables.SelectDatabase(FUpdateObject.DataSet.Database,IBTransaction1);
283 <  end;
284 < end;
285 <
286 <
287 < end.
288 <
1 > (*
2 > *  IBX For Lazarus (Firebird Express)
3 > *
4 > *  The contents of this file are subject to the Initial Developer's
5 > *  Public License Version 1.0 (the "License"); you may not use this
6 > *  file except in compliance with the License. You may obtain a copy
7 > *  of the License here:
8 > *
9 > *    http://www.firebirdsql.org/index.php?op=doc&id=idpl
10 > *
11 > *  Software distributed under the License is distributed on an "AS
12 > *  IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
13 > *  implied. See the License for the specific language governing rights
14 > *  and limitations under the License.
15 > *
16 > *  The Initial Developer of the Original Code is Tony Whyman.
17 > *
18 > *  The Original Code is (C) 2011-17 Tony Whyman, MWA Software
19 > *  (http://www.mwasoftware.co.uk).
20 > *
21 > *  All Rights Reserved.
22 > *
23 > *  Contributor(s): ______________________________________.
24 > *
25 > *)
26 >
27 > unit ibupdatesqleditor;
28 >
29 > {$mode objfpc}{$H+}
30 >
31 > interface
32 >
33 > uses
34 >  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
35 >  StdCtrls, ExtCtrls,  IBSQLEditFrame, IBCustomDataSet,
36 >  IBDatabase, IBLookupComboEditBox, IBDynamicGrid, IBUpdateSQL;
37 >
38 > type
39 >
40 >  { TIBUpdateSQLEditorForm }
41 >
42 >  TIBUpdateSQLEditorForm = class(TForm)
43 >    FieldNamesGrid: TIBDynamicGrid;
44 >    GenerateParams: TCheckBox;
45 >    IBSQLEditFrame1: TIBSQLEditFrame;
46 >    IdentityGrid: TIBDynamicGrid;
47 >    IncludeSysTables: TCheckBox;
48 >    Label5: TLabel;
49 >    Label6: TLabel;
50 >    PrimaryKeysGrid: TIBDynamicGrid;
51 >    ReadOnlyGrid: TIBDynamicGrid;
52 >    SelectSelectAll: TCheckBox;
53 >    SelectTableNames: TIBLookupComboEditBox;
54 >    TestBtn: TButton;
55 >    CancelButton: TButton;
56 >    FieldsPage: TTabSheet;
57 >    GenerateButton: TButton;
58 >    GroupBox1: TGroupBox;
59 >    IncludePrimaryKeys: TCheckBox;
60 >    Label1: TLabel;
61 >    Label2: TLabel;
62 >    Label3: TLabel;
63 >    Label4: TLabel;
64 >    OkButton: TButton;
65 >    PageControl: TPageControl;
66 >    QuoteFields: TCheckBox;
67 >    SQLPage: TTabSheet;
68 >    StatementType: TRadioGroup;
69 >    procedure IncludeSysTablesChange(Sender: TObject);
70 >    procedure SelectSelectAllClick(Sender: TObject);
71 >    procedure TestBtnClick(Sender: TObject);
72 >    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
73 >    procedure FormShow(Sender: TObject);
74 >    procedure GenerateButtonClick(Sender: TObject);
75 >    procedure SQLMemoChange(Sender: TObject);
76 >    procedure SQLPageShow(Sender: TObject);
77 >    procedure StatementTypeClick(Sender: TObject);
78 >  private
79 >    { private declarations }
80 >    FUpdateObject: TIBUpdateSQL;
81 >    FDirty: boolean;
82 >    FCurrentStatement: integer;
83 >    FModifySQL: TStringList;
84 >    FInsertSQL: TStringList;
85 >    FDeleteSQL: TStringList;
86 >    FRefreshSQL: TStringList;
87 >    procedure UpdateSQLMemo;
88 >    procedure HandleUserTablesOpened(Sender: TObject);
89 >  protected
90 >    procedure Loaded; override;
91 >  public
92 >    { public declarations }
93 >    constructor Create(TheOwner: TComponent); override;
94 >    destructor Destroy; override;
95 >  end;
96 >
97 > var
98 >  IBUpdateSQLEditorForm: TIBUpdateSQLEditorForm;
99 >
100 >  function EditIBUpdateSQL(UpdateObject: TIBUpdateSQL): boolean;
101 >
102 > implementation
103 >
104 > {$R *.lfm}
105 >
106 > function EditIBUpdateSQL(UpdateObject: TIBUpdateSQL): boolean;
107 > begin
108 >  Result := false;
109 >  if assigned(UpdateObject) and assigned(UpdateObject.DataSet) and assigned(UpdateObject.DataSet.Database) then
110 >  try
111 >    UpdateObject.DataSet.Database.Connected := true;
112 >  except on E: Exception do
113 >    ShowMessage(E.Message)
114 >  end;
115 >
116 >  with TIBUpdateSQLEditorForm.Create(Application) do
117 >  try
118 >    if assigned(UpdateObject) and assigned(UpdateObject.DataSet) then
119 >    begin
120 >      IBSQLEditFrame1.Database := UpdateObject.DataSet.Database;
121 >      GenerateParams.Checked := UpdateObject.DataSet.GenerateParamNames;
122 >    end;
123 >    with IBSQLEditFrame1 do
124 >      IncludeReadOnlyFields := false;
125 >    FUpdateObject := UpdateObject;
126 >    Result := ShowModal = mrOK;
127 >    if Result then
128 >      UpdateObject.DataSet.GenerateParamNames := GenerateParams.Checked
129 >  finally
130 >    Free
131 >  end;
132 >
133 > end;
134 >
135 > { TIBUpdateSQLEditorForm }
136 >
137 > procedure TIBUpdateSQLEditorForm.FormShow(Sender: TObject);
138 > begin
139 >  PageControl.ActivePage := FieldsPage;
140 >  FModifySQL.Assign(FUpdateObject.ModifySQL);
141 >  FInsertSQL.Assign(FUpdateObject.InsertSQL);
142 >  FDeleteSQL.Assign(FUpdateObject.DeleteSQL);
143 >  FRefreshSQL.Assign(FUpdateObject.RefreshSQL);
144 >  GenerateButton.Enabled := (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected;
145 >  TestBtn.Enabled := (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected;
146 >  FCurrentStatement := -1;
147 >  if (IBSQLEditFrame1.Database <> nil) and IBSQLEditFrame1.Database.Connected then
148 >  begin
149 >    IBSQLEditFrame1.UserTables.Active := true;
150 >    IBSQLEditFrame1.SyncQueryBuilder(FRefreshSQL);
151 >  end;
152 > end;
153 >
154 > procedure TIBUpdateSQLEditorForm.FormClose(Sender: TObject;
155 >  var CloseAction: TCloseAction);
156 > begin
157 >  if ModalResult = mrOK then
158 >  begin
159 >    UpdateSQLMemo;
160 >    FUpdateObject.ModifySQL.Assign(FModifySQL);
161 >    FUpdateObject.InsertSQL.Assign(FInsertSQL);
162 >    FUpdateObject.DeleteSQL.Assign(FDeleteSQL);
163 >    FUpdateObject.RefreshSQL.Assign(FRefreshSQL);
164 >  end;
165 > end;
166 >
167 > procedure TIBUpdateSQLEditorForm.TestBtnClick(Sender: TObject);
168 > begin
169 >  IBSQLEditFrame1.TestSQL(GenerateParams.Checked);
170 > end;
171 >
172 > procedure TIBUpdateSQLEditorForm.IncludeSysTablesChange(Sender: TObject);
173 > begin
174 >  IBSQLEditFrame1.IncludeSystemTables := IncludeSysTables.Checked;
175 > end;
176 >
177 > procedure TIBUpdateSQLEditorForm.SelectSelectAllClick(Sender: TObject);
178 > begin
179 >  IBSQLEditFrame1.SelectAllFields(SelectSelectAll.Checked);
180 > end;
181 >
182 > procedure TIBUpdateSQLEditorForm.GenerateButtonClick(Sender: TObject);
183 > begin
184 >  IBSQLEditFrame1.GenerateRefreshSQL(QuoteFields.Checked,FRefreshSQL,true);
185 >  IBSQLEditFrame1.GenerateDeleteSQL(QuoteFields.Checked,FDeleteSQL);
186 >  IBSQLEditFrame1.GenerateInsertSQL(QuoteFields.Checked,FInsertSQL);
187 >  IBSQLEditFrame1.GenerateModifySQL(QuoteFields.Checked,FModifySQL, IncludePrimaryKeys.Checked);
188 >  FDirty := false;
189 >  PageControl.ActivePage := SQLPage;
190 > end;
191 >
192 > procedure TIBUpdateSQLEditorForm.SQLMemoChange(Sender: TObject);
193 > begin
194 >  FDirty := true
195 > end;
196 >
197 > procedure TIBUpdateSQLEditorForm.SQLPageShow(Sender: TObject);
198 > begin
199 >  UpdateSQLMemo
200 > end;
201 >
202 > procedure TIBUpdateSQLEditorForm.StatementTypeClick(Sender: TObject);
203 > begin
204 >  UpdateSQLMemo
205 > end;
206 >
207 > procedure TIBUpdateSQLEditorForm.UpdateSQLMemo;
208 > begin
209 >  if FDirty then
210 >    case FCurrentStatement of
211 >    0: //Modify
212 >        FModifySQL.Assign(IBSQLEditFrame1.SQLText.Lines);
213 >    1: //Insert
214 >        FInsertSQL.Assign(IBSQLEditFrame1.SQLText.Lines);
215 >    2: // Delete
216 >        FDeleteSQL.Assign(IBSQLEditFrame1.SQLText.Lines);
217 >    3: //Refresh
218 >        FRefreshSQL.Assign(IBSQLEditFrame1.SQLText.Lines);
219 >    end;
220 >  FDirty := false;
221 >  case StatementType.ItemIndex of
222 >  0: // Modify
223 >    IBSQLEditFrame1.SQLText.Lines.Assign(FModifySQL)  ;
224 >  1: //Insert
225 >    IBSQLEditFrame1.SQLText.Lines.Assign(FInsertSQL)  ;
226 >  2: // Delete
227 >    IBSQLEditFrame1.SQLText.Lines.Assign(FDeleteSQL)  ;
228 >  3: //Refresh
229 >    IBSQLEditFrame1.SQLText.Lines.Assign(FRefreshSQL)  ;
230 >  end;
231 >  FCurrentStatement := StatementType.ItemIndex;
232 > end;
233 >
234 > procedure TIBUpdateSQLEditorForm.HandleUserTablesOpened(Sender: TObject);
235 > begin
236 >  SelectSelectAll.Checked := true;
237 > end;
238 >
239 > procedure TIBUpdateSQLEditorForm.Loaded;
240 > begin
241 >  inherited Loaded;
242 >  if IBSQLEditFrame1 <> nil then
243 >  begin
244 >    IBSQLEditFrame1.OnUserTablesOpened := @HandleUserTablesOpened;
245 >    if SelectTableNames <> nil then
246 >      SelectTableNames.ListSource :=  IBSQLEditFrame1.UserTableSource;
247 >    if FieldNamesGrid <> nil then
248 >      FieldNamesGrid.DataSource := IBSQLEditFrame1.FieldsSource;
249 >    if PrimaryKeysGrid <> nil then
250 >      PrimaryKeysGrid.DataSource := IBSQLEditFrame1.PrimaryKeySource;
251 >    if IdentityGrid <> nil then
252 >      IdentityGrid.DataSource := IBSQLEditFrame1.IdentityColsSource;
253 >    if ReadOnlyGrid <> nil then
254 >      ReadOnlyGrid.DataSource := IBSQLEditFrame1.ReadOnlyFieldsSource;
255 >  end;
256 > end;
257 >
258 > constructor TIBUpdateSQLEditorForm.Create(TheOwner: TComponent);
259 > begin
260 >  inherited Create(TheOwner);
261 >  FModifySQL := TStringList.Create;
262 >  FInsertSQL := TStringList.Create;
263 >  FDeleteSQL := TStringList.Create;
264 >  FRefreshSQL := TStringList.Create;
265 > end;
266 >
267 > destructor TIBUpdateSQLEditorForm.Destroy;
268 > begin
269 >  if assigned(FModifySQL) then FModifySQL.Free;
270 >  if assigned(FInsertSQL) then FInsertSQL.Free;
271 >  if assigned(FDeleteSQL) then FDeleteSQL.Free;
272 >  if assigned(FRefreshSQL) then FRefreshSQL.Free;
273 >  inherited Destroy;
274 > end;
275 >
276 > end.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines