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

Comparing ibx/trunk/design/IBDBReg.pas (file contents):
Revision 1 by tony, Mon Jul 31 16:43:00 2000 UTC vs.
Revision 80 by tony, Mon Jan 1 11:31:07 2018 UTC

# Line 24 | Line 24
24   {       Corporation. All Rights Reserved.                                }
25   {    Contributor(s): Jeff Overcash                                       }
26   {                                                                        }
27 + {    IBX For Lazarus (Firebird Express)                                  }
28 + {    Contributor: Tony Whyman, MWA Software http://www.mwasoftware.co.uk }
29 + {    Portions created by MWA Software are copyright McCallum Whyman      }
30 + {    Associates Ltd 2011                                                 }
31   {************************************************************************}
32  
33   unit IBDBReg;
34  
35 + {$MODE Delphi}
36 +
37   (*
38   * Compiler defines
39   *)
40   {$A+}                           (* Aligned records: On *)
41   {$B-}                           (* Short circuit boolean expressions: Off *)
36 {$G+}                           (* Imported data: On *)
42   {$H+}                           (* Huge Strings: On *)
43   {$J-}                           (* Modification of Typed Constants: Off *)
44   {$M+}                           (* Generate run-time type information: On *)
# Line 41 | Line 46 | unit IBDBReg;
46   {$Q-}                           (* Overflow checks: Off *)
47   {$R-}                           (* Range checks: Off *)
48   {$T+}                           (* Typed address: On *)
44 {$U+}                           (* Pentim-safe FDIVs: On *)
49   {$W-}                           (* Always generate stack frames: Off *)
50   {$X+}                           (* Extended syntax: On *)
51   {$Z1}                           (* Minimum Enumeration Size: 1 Byte *)
52  
53   interface
54  
55 < uses Windows, SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
56 <     DsgnIntf, DB, ParentageSupport, dsndb, DBReg, ColnEdit, FldLinks, SQLEdit,
57 <     DataModelSupport, IBTable, IBDatabase, IBUpdateSQLEditor,  IBEventsEditor,
58 <     IBXConst;
55 > uses SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
56 >     DB, IBTable, IBDatabase,  IBEventsEditor,  LazarusPackageIntf,
57 >      IBUpdateSQL, IBUpdate, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor,
58 >     dbFieldLinkPropEditor, dbFieldListPropEditor, IBDialogs;
59  
60   type
61  
# Line 87 | Line 91 | type
91      procedure GetValues(Proc: TGetStrProc); override;
92    end;
93  
94 +  { TDBStringProperty }
95 +
96    TDBStringProperty = class(TStringProperty)
97 +  private
98 +    function ConnecttoDB: boolean;
99    public
100      function GetAttributes: TPropertyAttributes; override;
101      procedure GetValueList(List: TStrings); virtual;
102      procedure GetValues(Proc: TGetStrProc); override;
103 +    procedure Edit; override;
104    end;
105  
106 +  { TIBIndexFieldNamesProperty }
107 +
108    TIBIndexFieldNamesProperty = class(TDBStringProperty)
109    public
110      procedure GetValueList(List: TStrings); override;
# Line 121 | Line 132 | type
132      function GetVerbCount: Integer; override;
133    end;
134  
135 +  { TIBArrayGridEditor }
136 +
137 +  TIBArrayGridEditor = class(TComponentEditor)
138 +  public
139 +    procedure ExecuteVerb(Index: Integer); override;
140 +    function GetVerb(Index: Integer): string; override;
141 +    function GetVerbCount: Integer; override;
142 +  end;
143 +
144   { TIBQueryEditor }
145  
146 <  TIBQueryEditor = class(TDataSetEditor)
127 <  protected
128 <    FGetTableNamesProc: TGetTableNamesProc;
129 <    FGetFieldnamesProc: TGetFieldNamesProc;
146 >  TIBQueryEditor = class(TFieldsComponentEditor)
147    public
131    procedure EditSQL;
148      procedure ExecuteVerb(Index: Integer); override;
149      function GetVerb(Index: Integer): string; override;
150      function GetVerbCount: Integer; override;
# Line 136 | Line 152 | type
152  
153   { TIBStoredProcEditor }
154  
155 <  TIBStoredProcEditor = class(TDataSetEditor)
155 >  TIBStoredProcEditor = class(TFieldsComponentEditor)
156    public
157      procedure ExecuteVerb(Index: Integer); override;
158      function GetVerb(Index: Integer): string; override;
# Line 145 | Line 161 | type
161  
162   { TIBDataSetEditor }
163  
164 <  TIBDataSetEditor = class(TDataSetEditor)
149 <  protected
150 <    FGetTableNamesProc: TGetTableNamesProc;
151 <    FGetFieldnamesProc: TGetFieldNamesProc;
164 >  TIBDataSetEditor = class(TFieldsComponentEditor)
165    public
153    procedure EditSQL;
166      procedure ExecuteVerb(Index: Integer); override;
167      function GetVerb(Index: Integer): string; override;
168      function GetVerbCount: Integer; override;
# Line 165 | Line 177 | type
177     function GetVerbCount: Integer; override;
178    end;
179  
180 <  TIBStoredProcParamsProperty = class(TCollectionProperty)
180 > { TIBSQLEditor }
181 >
182 >  TIBSQLEditor  = class(TComponentEditor)
183 >  public
184 >    procedure ExecuteVerb(Index: Integer); override;
185 >    function GetVerb(Index: Integer): string; override;
186 >   function GetVerbCount: Integer; override;
187 >  end;
188 >
189 > { TIBServiceEditor}
190 >
191 >  TIBServiceEditor = class(TComponentEditor)
192 >  public
193 >    procedure ExecuteVerb(Index: Integer); override;
194 >    function GetVerb(Index: Integer): string; override;
195 >   function GetVerbCount: Integer; override;
196 >  end;
197 >
198 >  TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
199    public
200      procedure Edit; override;
201    end;
202  
203 +  { TIBTableFieldLinkProperty }
204 +
205    TIBTableFieldLinkProperty = class(TFieldLinkProperty)
206    private
207      FTable: TIBTable;
208    protected
209 +    function GetIndexDefs: TIndexDefs; override;
210      function GetIndexFieldNames: string; override;
211      function GetMasterFields: string; override;
212      procedure SetIndexFieldNames(const Value: string); override;
# Line 184 | Line 217 | type
217  
218   { TSQLPropertyEditor }
219  
220 <  TSQLPropertyEditor = class(TClassProperty)
188 <  protected
189 <    FGetTableNamesProc: TGetTableNamesProc;
190 <    FGetFieldnamesProc: TGetFieldNamesProc;
220 >  TSQLPropertyEditor = class(TStringsPropertyEditor)
221    public
192    procedure EditSQL;
222      function GetAttributes: TPropertyAttributes; override;
223    end;
224  
# Line 200 | Line 229 | type
229      procedure Edit; override;
230    end;
231  
232 + {TIBSQLSQLPropertyEditor }
233 +
234 +  TIBSQLSQLPropertyEditor = class(TSQLPropertyEditor)
235 +  public
236 +    procedure Edit; override;
237 +  end;
238 +
239   { TIBDatasetSQLProperty }
240  
241    TIBDatasetSQLProperty = class(TSQLPropertyEditor)
# Line 214 | Line 250 | type
250      procedure Edit; override;
251    end;
252  
253 <  TIBEventListProperty = class(TClassProperty)
253 > { TUpdateSQLPropertyEditor }
254 >
255 >   TUpdateSQLPropertyEditor = class(TSQLPropertyEditor)
256 >   protected
257 >     FIBUpdateSQL: TIBUpdateSQL;
258 >     FDatabase: TIBDatabase;
259 >     function GetObjects: boolean;
260 >   end;
261 >
262 > { TIBUpdateSQLProperty }
263 >
264 >  TIBUpdateSQLProperty = class(TSQLPropertyEditor)
265    public
219    function GetAttributes: TPropertyAttributes; override;
266      procedure Edit; override;
267    end;
268  
269 < { DataModel Designer stuff }
269 > { TIBRefreshSQLProperty }
270  
271 <  TIBSQLSprig = class(TSprig)
271 >  TIBRefreshSQLProperty = class(TSQLPropertyEditor)
272    public
273 <    procedure FigureParent; override;
228 <    function AnyProblems: Boolean; override;
229 <    function DragDropTo(AItem: TSprig): Boolean; override;
230 <    function DragOverTo(AItem: TSprig): Boolean; override;
231 <    class function PaletteOverTo(AParent: TSprig; AClass: TClass): Boolean; override;
273 >    procedure Edit; override;
274    end;
275  
276 <  TIBCustomDataSetSprig = class(TDataSetSprig)
235 <  public
236 <    procedure FigureParent; override;
237 <    function AnyProblems: Boolean; override;
238 <    function DragDropTo(AItem: TSprig): Boolean; override;
239 <    function DragOverTo(AItem: TSprig): Boolean; override;
240 <    class function PaletteOverTo(AParent: TSprig; AClass: TClass): Boolean; override;
241 <  end;
276 > { TIBInsertSQLProperty }
277  
278 <  TIBQuerySprig = class(TIBCustomDataSetSprig)
278 >  TIBInsertSQLProperty = class(TSQLPropertyEditor)
279    public
280 <    function AnyProblems: Boolean; override;
280 >    procedure Edit; override;
281    end;
282  
283 <  TIBTableSprig = class(TIBCustomDataSetSprig)
283 > { TIBDeleteSQLProperty }
284 >
285 >  TIBDeleteSQLProperty = class(TSQLPropertyEditor)
286    public
287 <    function AnyProblems: Boolean; override;
251 <    function Caption: string; override;
287 >    procedure Edit; override;
288    end;
289  
290 <  TIBStoredProcSprig = class(TIBCustomDataSetSprig)
290 >  { TIBUpdateSQLUpdateProperty }
291 >
292 >  TIBUpdateSQLUpdateProperty = class(TUpdateSQLPropertyEditor)
293    public
294 <    function AnyProblems: Boolean; override;
257 <    function Caption: string; override;
294 >    procedure Edit; override;
295    end;
296  
297 <  TIBUpdateSQLSprig = class(TSprigAtRoot)
297 > { TIBUpdateSQLRefreshSQLProperty }
298 >
299 >  TIBUpdateSQLRefreshSQLProperty = class(TUpdateSQLPropertyEditor)
300    public
301 <    function AnyProblems: Boolean; override;
301 >    procedure Edit; override;
302    end;
303  
304 <  TIBDatabaseSprig = class(TSprigAtRoot)
304 > { TIBUpdateSQLInsertSQLProperty }
305 >
306 >  TIBUpdateSQLInsertSQLProperty = class(TUpdateSQLPropertyEditor)
307    public
308 <    function AnyProblems: Boolean; override;
268 <    function Caption: string; override;
308 >    procedure Edit; override;
309    end;
310  
311 <  TIBTransactionSprig = class(TSprig)
311 >  { TIBUpdateSQLDeleteProperty }
312 >
313 >  TIBUpdateSQLDeleteProperty = class(TUpdateSQLPropertyEditor)
314    public
315 <    function Caption: string; override;
316 <    procedure FigureParent; override;
275 <    function AnyProblems: Boolean; override;
276 <    function DragDropTo(AItem: TSprig): Boolean; override;
277 <    function DragOverTo(AItem: TSprig): Boolean; override;
278 <    class function PaletteOverTo(AParent: TSprig; AClass: TClass): Boolean; override;
315 >    function GetAttributes: TPropertyAttributes; override;
316 >    procedure Edit; override;
317    end;
318  
319 <  TIBDatabaseInfoSprig = class(TSprig)
319 > { TIBEventListProperty }
320 >
321 >  TIBEventListProperty = class(TClassProperty)
322    public
323 <    class function ParentProperty: string; override;
323 >    function GetAttributes: TPropertyAttributes; override;
324 >    procedure Edit; override;
325    end;
326  
327 <  TIBEventsSprig = class(TSprig)
327 > {TIBGeneratorProperty}
328 >
329 >  TIBGeneratorProperty = class(TPersistentPropertyEditor)
330    public
331 <    class function ParentProperty: string; override;
332 <    function AnyProblems: Boolean; override;
331 >    function GetAttributes: TPropertyAttributes; override;
332 >    procedure Edit; override;
333    end;
334  
335 <  TIBTransactionIsland = class(TIsland)
335 >  { TDBDynamicGridFieldProperty }
336 >
337 >  TDBDynamicGridFieldProperty = class(TFieldProperty)
338    public
339 <    function VisibleTreeParent: Boolean; override;
339 >    procedure FillValues(const Values: TStringList); override;
340    end;
341  
342 <  TIBSQLIsland = class(TIsland)
342 >  { TDBLookupPropertiesGridFieldProperty }
343 >
344 >  TDBLookupPropertiesGridFieldProperty = class(TFieldProperty)
345    public
346 <    function VisibleTreeParent: Boolean; override;
346 >    procedure FillValues(const Values: TStringList); override;
347    end;
348  
349 <  TIBCustomDataSetIsland = class(TDataSetIsland)
349 >  { TIBTreeViewFieldProperty }
350 >
351 >  TIBTreeViewFieldProperty = class(TFieldProperty)
352    public
353 <    function VisibleTreeParent: Boolean; override;
353 >    procedure FillValues(const Values: TStringList); override;
354    end;
355  
356 <  TIBTableIsland = class(TIBCustomDataSetIsland)
356 >  { TIBDynamicGridIndexNamesProperty }
357 >
358 >  TIBDynamicGridIndexNamesProperty = class(TIndexFieldNamesProperty)
359 >  protected
360 >    function GetFieldDefs: TFieldDefs; override;
361 >    function GetIndexFieldNames: string; override;
362 >    procedure SetIndexFieldNames(const Value: string); override;
363    end;
364  
365 <  TIBTableMasterDetailBridge = class(TMasterDetailBridge)
365 >  { TIBFieldDefsProperty }
366 >
367 >  TIBFieldDefsProperty = class(TCollectionPropertyEditor)
368    public
369 <    function CanEdit: Boolean; override;
313 <    class function OmegaIslandClass: TIslandClass; override;
314 <    class function GetOmegaSource(AItem: TPersistent): TDataSource; override;
315 <    class procedure SetOmegaSource(AItem: TPersistent; ADataSource: TDataSource); override;
316 <    function Caption: string; override;
317 <    function Edit: Boolean; override;
369 >    procedure Edit; override;
370    end;
371  
372 <  TIBQueryIsland = class(TIBCustomDataSetIsland)
321 <  end;
372 >  { TIBIndexDefsProperty }
373  
374 <  TIBQueryMasterDetailBridge = class(TMasterDetailBridge)
374 >  TIBIndexDefsProperty = class(TCollectionPropertyEditor)
375    public
376 <    class function RemoveMasterFieldsAsWell: Boolean; override;
326 <    class function OmegaIslandClass: TIslandClass; override;
327 <    class function GetOmegaSource(AItem: TPersistent): TDataSource; override;
328 <    class procedure SetOmegaSource(AItem: TPersistent; ADataSource: TDataSource); override;
329 <    function Caption: string; override;
376 >    procedure Edit; override;
377    end;
378  
379 +
380   procedure Register;
381  
382   implementation
383  
384 < uses IB, IBQuery, IBStoredProc, IBUpdateSQL, IBCustomDataSet,
385 <     IBIntf, IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents,
386 <     IBServices, IBInstall, IBDatabaseEdit, IBTransactionEdit,
387 <     IBBatchMove, DBLogDlg;
384 > uses IB, IBQuery, IBStoredProc, IBCustomDataSet, FBMessages,
385 >     IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents, IBTypes,
386 >     IBServices, IBDatabaseEdit, IBTransactionEdit,
387 >     IBBatchMove, IBExtract,LResources, IBSelectSQLEditor,
388 >     IBModifySQLEditor,IBDeleteSQLEditor,IBRefreshSQLEditor,
389 >     IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor,
390 >     IBSQLEditor, ibserviceeditor, LCLVersion, IBDynamicGrid, IBLookupComboEditBox,
391 >     IBTreeView, DBControlGrid, ibxscript, IBLocalDBSupport, IBDSDialogs,
392 >     IBArrayGrid, IBVersion, IBDataOutput;
393 >
394 > const
395 >  IBPalette1 = 'Firebird'; {do not localize}
396 >  IBPalette2 = 'Firebird Admin'; {do not localize}
397 >  IBPalette3 = 'Firebird Data Controls';   {do not localize}
398 >  
399 > resourcestring
400 >   SInterbaseExpressVersion = 'Firebird Express for Lazarus ' + IBX_VERSION;
401 >   SEditSQL = 'Edit SQL';
402 >   SIBSQLEditor = 'IBSQL Editor';
403 >   SIBServiceEditor = 'Edit IB Service';
404 >   SIBUpdateSQLEditor = '&UpdateSQL Editor...';
405 >   SIBDataSetEditor = '&Dataset Editor...';
406 >   SExecute = 'E&xecute';
407 >   SIBDatabaseEditor = 'Da&tabase Editor...';
408 >   SIBTransactionEditor = '&Transaction Editor...';
409 >   SIBUpdateLayout = 'Update Layout';
410  
411   procedure Register;
412   begin
413 <  RegisterComponents(IBPalette1, [TIBTable, TIBQuery,
414 <    TIBStoredProc, TIBDatabase, TIBTransaction, TIBUpdateSQL,
415 <    TIBDataSet, TIBSQL, TIBDatabaseInfo, TIBSQLMonitor, TIBEvents]);
416 < {$IFDEF IB6_ONLY}
417 <  if (TryIBLoad) and (GetIBClientVersion >= 6) then
413 >  if not TryIBLoad then
414 >  begin
415 >    MessageDlg('IBX is unable to locate the Firebird Library - have you remembered to install it?',mtError,[mbOK],0);
416 >    Exit;
417 >  end;
418 >
419 >  RegisterNoIcon([TIBStringField, TIBBCDField, TIBMemoField, TIBArrayField]);
420 >  {$if lcl_fullversion < 01010000}
421 >  {see http://bugs.freepascal.org/view.php?id=19035 }
422 >  RegisterNoIcon([TIntegerField]);
423 >  {$endif}
424 >  RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet,
425 >   TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBUpdate, TIBEvents,
426 >     TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
427 >       TIBStoredProc,TIBBatchMove,  TIBTable,TIBExtract, TIBXScript, TIBLocalDBSupport,
428 >       TIBBlockFormatOut,TIBCSVDataOut,TIBInsertStmtsOut]);
429 >  if FirebirdAPI.HasServiceAPI  then
430      RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
431        TIBRestoreService, TIBValidationService, TIBStatisticalService,
432 <      TIBLogService, TIBSecurityService, TIBServerProperties,
433 <      TIBInstall, TIBUninstall]);
434 < {$ENDIF}
435 <  RegisterClasses([TIBStringField, TIBBCDField]);
354 <  RegisterFields([TIBStringField, TIBBCDField]);
432 >      TIBLogService, TIBSecurityService, TIBServerProperties]);
433 >
434 >
435 >  RegisterComponents(IBPalette3,[TIBLookupComboEditBox,TIBDynamicGrid,TIBTreeView,TDBControlGrid, TIBArrayGrid]);
436    RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
437    RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
438    RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty);
# Line 359 | Line 440 | begin
440    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexName', TIBIndexNameProperty); {do not localize}
441    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexFieldNames', TIBIndexFieldNamesProperty); {do not localize}
442    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
443 +  RegisterPropertyEditor(TypeInfo(TFieldDefs), TIBTable, 'FieldDefs', TIBFieldDefsProperty); {do not localize}
444 +  RegisterPropertyEditor(TypeInfo(TIndexDefs), TIBTable, 'IndexDefs', TIBIndexDefsProperty); {do not localize}
445    RegisterPropertyEditor(TypeInfo(TStrings), TIBQuery, 'SQL', TIBQuerySQLProperty); {do not localize}
446    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'SelectSQL', TIBDatasetSQLProperty); {do not localize}
447 <  RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLProperty); {do not localize}
447 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'ModifySQL', TIBUpdateSQLProperty); {do not localize}
448 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'InsertSQL', TIBInsertSQLProperty); {do not localize}
449 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'RefreshSQL', TIBRefreshSQLProperty); {do not localize}
450 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'DeleteSQL', TIBDeleteSQLProperty); {do not localize}
451 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLSQLPropertyEditor); {do not localize}
452 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'RefreshSQL', TIBUpdateSQLRefreshSQLProperty); {do not localize}
453 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize}
454 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize}
455 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize}
456    RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize}
457 +  RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
458 +  RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
459  
460    RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor);
461    RegisterComponentEditor(TIBTransaction, TIBTransactionEditor);
# Line 370 | Line 463 | begin
463    RegisterComponentEditor(TIBDataSet, TIBDataSetEditor);
464    RegisterComponentEditor(TIBQuery, TIBQueryEditor);
465    RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor);
466 +  RegisterComponentEditor(TIBSQL, TIBSQLEditor);
467 +  RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
468 +  RegisterComponentEditor(TIBArrayGrid, TIBArrayGridEditor);
469 +
470 +
471 +  {Firebird Data Access Controls}
472 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'KeyField', TDBDynamicGridFieldProperty);
473 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'ListField', TDBDynamicGridFieldProperty);
474 +  RegisterPropertyEditor(TypeInfo(string), TIBDynamicGrid, 'IndexFieldNames', TIBDynamicGridIndexNamesProperty);
475 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'DataFieldName', TDBLookupPropertiesGridFieldProperty);
476 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'KeyField', TIBTreeViewFieldProperty);
477 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'TextField', TIBTreeViewFieldProperty);
478 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ParentField', TIBTreeViewFieldProperty);
479 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'HasChildField', TIBTreeViewFieldProperty);
480 +
481 +  IBGUIInterface :=  TIBDSLCLInterface.Create;
482 + end;
483 +
484 + procedure LoadDataSourceFields(DataSource: TDataSource; List: TStrings);
485 + var
486 +  DataSet: TDataSet;
487 +  i: Integer;
488 + begin
489 +  if Assigned(DataSource) then
490 +  begin
491 +    DataSet := DataSource.DataSet;
492 +    if Assigned(DataSet) then
493 +    begin
494 +      if DataSet.Fields.Count > 0 then
495 +        DataSet.GetFieldNames(List)
496 +      else
497 +      begin
498 +        DataSet.FieldDefs.Update;
499 +        for i := 0 to DataSet.FieldDefs.Count - 1 do
500 +          List.Add(DataSet.FieldDefs[i].Name);
501 +      end;
502 +    end;
503 +  end;
504 + end;
505 +
506 + { TIBIndexDefsProperty }
507 +
508 + procedure TIBIndexDefsProperty.Edit;
509 + var IndexDefs: TIndexDefs;
510 + begin
511 +  IndexDefs := TIndexDefs(GetObjectValue);
512 +  if IndexDefs <> nil then
513 +    IndexDefs.Update;
514 +  inherited Edit;
515 + end;
516 +
517 + { TIBFieldDefsProperty }
518 +
519 + procedure TIBFieldDefsProperty.Edit;
520 + var FieldDefs: TFieldDefs;
521 + begin
522 +  FieldDefs := TFieldDefs(GetObjectValue);
523 +  if FieldDefs <> nil then
524 +    FieldDefs.Update;
525 +  inherited Edit;
526 + end;
527 +
528 + { TIBArrayGridEditor }
529 +
530 + procedure TIBArrayGridEditor.ExecuteVerb(Index: Integer);
531 + begin
532 +  if Index < inherited GetVerbCount then
533 +    inherited ExecuteVerb(Index)
534 +  else
535 +  case Index of
536 +    0: TIBArrayGrid(Component).UpdateLayout;
537 +  end;
538 + end;
539 +
540 + function TIBArrayGridEditor.GetVerb(Index: Integer): string;
541 + begin
542 +  if Index < inherited GetVerbCount then
543 +    Result := inherited GetVerb(Index) else
544 +  begin
545 +    Dec(Index, inherited GetVerbCount);
546 +    case Index of
547 +      0: Result := SIBUpdateLayout;
548 +      1 : Result := SInterbaseExpressVersion ;
549 +    end;
550 +  end;
551 + end;
552  
553 <  RegisterSprigType(TIBDatabase, TIBDatabaseSprig);
554 <  RegisterSprigType(TIBTransaction, TIBTransactionSprig);
553 > function TIBArrayGridEditor.GetVerbCount: Integer;
554 > begin
555 >  Result := 2;
556 > end;
557  
558 <  RegisterSprigType(TIBDatabaseInfo, TIBDatabaseInfoSprig);
378 <  RegisterSprigType(TIBEvents, TIBEventsSprig);
379 <  RegisterSprigType(TIBSQL, TIBSQLSprig);
380 <
381 <  RegisterSprigType(TIBUpdateSQL, TIBUpdateSQLSprig);
382 <
383 <  RegisterSprigType(TIBCustomDataSet, TIBCustomDataSetSprig);
384 <  RegisterSprigType(TIBQuery, TIBQuerySprig);
385 <  RegisterSprigType(TIBTable, TIBTableSprig);
386 <  RegisterSprigType(TIBStoredProc, TIBStoredProcSprig);
387 <
388 <  RegisterIslandType(TIBTransactionSprig, TIBTransactionIsland);
389 <  RegisterIslandType(TIBSQLSprig, TIBSQLIsland);
390 <  RegisterIslandType(TIBCustomDataSetSprig, TIBCustomDataSetIsland);
391 <  RegisterIslandType(TIBTableSprig, TIBTableIsland);
392 <  RegisterIslandType(TIBQuerySprig, TIBQueryIsland);
558 > { TDBLookupPropertiesGridFieldProperty }
559  
560 <  RegisterBridgeType(TDataSetIsland, TIBTableIsland, TIBTableMasterDetailBridge);
561 <  RegisterBridgeType(TDataSetIsland, TIBQueryIsland, TIBQueryMasterDetailBridge);
560 > procedure TDBLookupPropertiesGridFieldProperty.FillValues(
561 >  const Values: TStringList);
562 > var
563 >  P: TDBLookupProperties;
564 > begin
565 >  P :=TDBLookupProperties(GetComponent(0));
566 >  if not (P is TDBLookupProperties) then exit;
567 >  LoadDataSourceFields(TIBDynamicGrid(P.Owner.Grid).DataSource, Values);
568 > end;
569 >
570 > { TIBTreeViewFieldProperty }
571 >
572 > procedure TIBTreeViewFieldProperty.FillValues(const Values: TStringList);
573 > var ListSource: TDataSource;
574 > begin
575 >  ListSource :=  TIBTreeView(GetComponent(0)).DataSource;
576 >  LoadDataSourceFields(ListSource, Values);
577 > end;
578 >
579 > { TIBDynamicGridIndexNamesProperty }
580 >
581 > function TIBDynamicGridIndexNamesProperty.GetFieldDefs: TFieldDefs;
582 > var Grid: TIBDynamicGrid;
583 > begin
584 >  Result := nil;
585 >  Grid := TIBDynamicGrid(GetComponent(0));
586 >  if assigned(Grid.DataSource) and assigned(Grid.DataSource.DataSet) then
587 >     Result := Grid.DataSource.DataSet.FieldDefs
588 > end;
589 >
590 > function TIBDynamicGridIndexNamesProperty.GetIndexFieldNames: string;
591 > var Grid: TIBDynamicGrid;
592 > begin
593 >  Grid := TIBDynamicGrid(GetComponent(0));
594 >  Result := Grid.IndexFieldNames
595 > end;
596 >
597 > procedure TIBDynamicGridIndexNamesProperty.SetIndexFieldNames(
598 >  const Value: string);
599 > var Grid: TIBDynamicGrid;
600 > begin
601 >  Grid := TIBDynamicGrid(GetComponent(0));
602 >  Grid.IndexFieldNames := Value
603 > end;
604 >
605 > { TDBDynamicGridFieldProperty }
606 >
607 > procedure TDBDynamicGridFieldProperty.FillValues(const Values: TStringList);
608 > var
609 >  P: TDBLookupProperties;
610 > begin
611 >  P :=TDBLookupProperties(GetComponent(0));
612 >  if not (P is TDBLookupProperties) then exit;
613 >  LoadDataSourceFields(P.ListSource, Values);
614 > end;
615 >
616 > { TIBServiceEditor }
617 >
618 > procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
619 > begin
620 >  if Index < inherited GetVerbCount then
621 >    inherited ExecuteVerb(Index) else
622 >  begin
623 >    Dec(Index, inherited GetVerbCount);
624 >    case Index of
625 >      0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
626 >    end;
627 >  end;
628 > end;
629 >
630 > function TIBServiceEditor.GetVerb(Index: Integer): string;
631 > begin
632 >  if Index < inherited GetVerbCount then
633 >    Result := inherited GetVerb(Index) else
634 >  begin
635 >    Dec(Index, inherited GetVerbCount);
636 >    case Index of
637 >      0: Result := SIBServiceEditor;
638 >      1 : Result := SInterbaseExpressVersion;
639 >    end;
640 >  end;
641 > end;
642 >
643 > function TIBServiceEditor.GetVerbCount: Integer;
644 > begin
645 >  Result := inherited GetVerbCount + 2;
646   end;
647  
648   { TIBFileNameProperty }
# Line 401 | Line 651 | begin
651    with TOpenDialog.Create(Application) do
652      try
653        InitialDir := ExtractFilePath(GetStrValue);
654 <      Filter := 'Database Files|*.gdb'; {do not localize}
654 >      Filter := SDatabaseFilter; {do not localize}
655        if Execute then
656          SetStrValue(FileName);
657      finally
# Line 429 | Line 679 | var
679     i : integer;
680   begin
681      StoredProc := GetComponent(0) as TIBStoredProc;
682 +    if StoredProc.Database = nil then
683 +      Exit;
684 +
685      with StoredProc do
686 +    try
687        for I := 0 to StoredProcedureNames.Count - 1 do
688          Proc (StoredProcedureNames[i]);
689 +    except on E: Exception do
690 +      MessageDlg(E.Message,mtError,[mbOK],0)
691 +    end;
692   end;
693  
694   { TIBTableNameProperty }
695  
696   procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
697   var
698 <   TableName : TIBTable;
698 >   Table : TIBTable;
699     i : integer;
700   begin
701 <  TableName := GetComponent(0) as TIBTable;
702 <  with TableName do
701 >  Table := GetComponent(0) as TIBTable;
702 >   if Table.Database = nil then
703 >      Exit;
704 >  with Table do
705      for I := 0 to TableNames.Count - 1 do
706        Proc (TableNames[i]);
707   end;
708  
709   { TDBStringProperty }
710  
711 + function TDBStringProperty.ConnecttoDB: boolean;
712 + var DataSet: TIBCustomDataSet;
713 + begin
714 +  Result := false;
715 +  DataSet := (GetComponent(0) as TIBCustomDataSet);
716 +  if assigned(Dataset.Database) then
717 +  begin
718 +    try
719 +      DataSet.Database.Connected := true;
720 +    except on E: Exception do
721 +      ShowMessage(E.Message)
722 +    end;
723 +    Result := DataSet.Database.Connected
724 +  end;
725 + end;
726 +
727   function TDBStringProperty.GetAttributes: TPropertyAttributes;
728   begin
729    Result := [paValueList, paSortList, paMultiSelect];
# Line 463 | Line 738 | var
738    I: Integer;
739    Values: TStringList;
740   begin
741 +  if not ConnecttoDB then Exit;
742    Values := TStringList.Create;
743    try
744      GetValueList(Values);
# Line 472 | Line 748 | begin
748    end;
749   end;
750  
751 + procedure TDBStringProperty.Edit;
752 + begin
753 +  if ConnecttoDB then
754 +    inherited Edit;
755 + end;
756 +
757   { Utility Functions }
758  
759   function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
# Line 521 | Line 803 | end;
803  
804   { TSQLPropertyEditor }
805  
524 procedure TSQLPropertyEditor.EditSQL;
525 var
526  SQLText: string;
527  SQL: TStrings;
528 begin
529  SQL := TStringList.Create;
530  try
531    SQL.Assign(TStrings(GetOrdValue));
532    SQLText := SQL.Text;
533    if (SQLEdit.EditSQL(SQLText, FGetTableNamesProc, FGetFieldNamesProc)) and
534      (SQL.Text <> SQLText) then
535    begin
536      SQL.Text := SQLText;
537      SetOrdValue(LongInt(SQL));
538    end;
539  finally
540    SQL.free;
541  end;
542 end;
543
806   function TSQLPropertyEditor.GetAttributes: TPropertyAttributes;
807   begin
808 <  Result := inherited GetAttributes + [paDialog] - [paSubProperties];
808 >  Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
809   end;
810  
811   { TIBQuerySQLProperty }
# Line 552 | Line 814 | procedure TIBQuerySQLProperty.Edit;
814   var
815    Query: TIBQuery;
816   begin
817 <  Query := TIBQuery(GetComponent(0));
818 <  if Assigned(Query.Database) then
557 <  begin
558 <    FGetTableNamesProc := Query.Database.GetTableNames;
559 <    FGetFieldNamesProc := Query.Database.GetFieldNames;
560 <  end
561 <  else
562 <  begin
563 <    FGetTableNamesProc := nil;
564 <    FGetFieldNamesProc := nil;
565 <  end;
566 <  EditSQL;
817 >  Query := GetComponent(0) as TIBQuery;
818 >  if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
819   end;
820  
821   { TIBDatasetSQLProperty }
# Line 572 | Line 824 | procedure TIBDatasetSQLProperty.Edit;
824   var
825    IBDataset: TIBDataset;
826   begin
827 <  IBDataset := TIBDataset(GetComponent(0));
828 <  if Assigned(IBDataSet.Database) then
577 <  begin
578 <    FGetTableNamesProc := IBDataset.Database.GetTableNames;
579 <    FGetFieldNamesProc := IBDataset.Database.GetFieldNames;
580 <  end
581 <  else
582 <  begin
583 <    FGetTableNamesProc := nil;
584 <    FGetFieldNamesProc := nil;
585 <  end;
586 <  EditSQL;
827 >  IBDataset := GetComponent(0) as TIBDataset;
828 >  if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
829   end;
830  
831   { TIBSQLProperty }
# Line 592 | Line 834 | procedure TIBSQLProperty.Edit;
834   var
835    IBSQL: TIBSQL;
836   begin
837 <  IBSQL := TIBSQL(GetComponent(0));
838 <  if Assigned(IBSQL.Database) then
597 <  begin
598 <    FGetTableNamesProc := IBSQL.Database.GetTableNames;
599 <    FGetFieldNamesProc := IBSQL.Database.GetFieldNames;
600 <  end
601 <  else
602 <  begin
603 <    FGetTableNamesProc := nil;
604 <    FGetFieldNamesProc := nil;
605 <  end;
606 <  EditSQL;
837 >  IBSQL := GetComponent(0) as TIBSQL;
838 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
839   end;
840  
841   { TIBUpdateSQLEditor }
842  
843   procedure TIBUpdateSQLEditor.ExecuteVerb(Index: Integer);
844   begin
845 <  if EditIBUpdateSQL(TIBUpdateSQL(Component)) then Designer.Modified;
845 >  if IBUpdateSQLEditor.EditIBUpdateSQL(TIBUpdateSQL(Component)) then Modified;
846   end;
847  
848   function TIBUpdateSQLEditor.GetVerb(Index: Integer): string;
849   begin
850    case Index of
851      0 : Result := SIBUpdateSQLEditor;
852 <    2: Result := SInterbaseExpressVersion;
852 >    1: Result := SInterbaseExpressVersion ;
853    end;
854   end;
855  
856   function TIBUpdateSQLEditor.GetVerbCount: Integer;
857   begin
858 <  Result := 2;
858 >  Result :=  2;
859   end;
860  
861   { TIBDataSetEditor }
862  
631 procedure TIBDataSetEditor.EditSQL;
632 var
633  SQLText: string;
634  SQL: TStrings;
635 begin
636  SQL := TStringList.Create;
637  try
638    SQL.Assign(TIBDataset(Component).SelectSQL);
639    SQLText := SQL.Text;
640    if (SQLEdit.EditSQL(SQLText, FGetTableNamesProc, FGetFieldNamesProc)) and
641      (SQL.Text <> SQLText) then
642    begin
643      SQL.Text := SQLText;
644      TIBDataset(Component).SelectSQL.Assign(SQL);
645    end;
646  finally
647    SQL.free;
648  end;
649 end;
650
863   procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
652 var
653  IBDataset: TIBDataset;
864   begin
865    if Index < inherited GetVerbCount then
866      inherited ExecuteVerb(Index) else
# Line 658 | Line 868 | begin
868      Dec(Index, inherited GetVerbCount);
869      case Index of
870        0:
871 <        if EditIBDataSet(TIBDataSet(Component)) then
871 >        if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
872            Designer.Modified;
873        1: (Component as TIBDataSet).ExecSQL;
664      2:
665      begin
666        IBDataset := TIBDataset(Component);
667        if Assigned(IBDataSet.Database) then
668        begin
669          FGetTableNamesProc := IBDataset.Database.GetTableNames;
670          FGetFieldNamesProc := IBDataset.Database.GetFieldNames;
671        end
672        else
673        begin
674          FGetTableNamesProc := nil;
675          FGetFieldNamesProc := nil;
676        end;
677        EditSQL;
678      end;
874      end;
875    end;
876   end;
# Line 689 | Line 884 | begin
884      case Index of
885        0: Result := SIBDataSetEditor;
886        1: Result := SExecute;
887 <      2: Result := SEditSQL;
693 <      3: Result := SInterbaseExpressVersion;
887 >      2: Result := SInterbaseExpressVersion ;
888      end;
889    end;
890   end;
891  
892   function TIBDataSetEditor.GetVerbCount: Integer;
893   begin
894 <  Result := inherited GetVerbCount + 4;
894 >  Result := inherited GetVerbCount + 3;
895   end;
896  
897   { TIBEventListProperty }
898  
899   function TIBEventListProperty.GetAttributes: TPropertyAttributes;
900   begin
901 <  Result := inherited GetAttributes + [paDialog] - [paSubProperties];
901 >  Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
902   end;
903  
904   procedure TIBEventListProperty.Edit;
905   var
906    Events: TStrings;
907 +  IBEvents: TIBEvents;
908   begin
909 +  IBEvents := GetComponent(0) as TIBEvents;
910    Events := TStringList.Create;
911    try
912 <    Events.Assign( TStrings(GetOrdValue));
913 <    if EditAlerterEvents( Events) then SetOrdValue( longint(Events));
912 >    Events.Assign( IBEvents.Events);
913 >    if EditAlerterEvents( Events) then
914 >    begin
915 >      IBEvents.Events.Assign(Events);
916 >      Modified
917 >    end;
918    finally
919      Events.Free;
920    end;
# Line 741 | Line 941 | begin
941      Dec(Index, inherited GetVerbCount);
942      case Index of
943        0: Result := SIBDatabaseEditor;
944 <      1 : Result := SInterbaseExpressVersion;
944 >      1 : Result := SInterbaseExpressVersion ;
945      end;
946    end;
947   end;
# Line 764 | Line 964 | function TIBTransactionEditor.GetVerb(In
964   begin
965    case Index of
966      0: Result := SIBTransactionEditor;
967 <    1: Result := SInterbaseExpressVersion;
967 >    1: Result := SInterbaseExpressVersion ;
968    end;
969   end;
970  
# Line 775 | Line 975 | end;
975  
976   { TIBQueryEditor }
977  
778 procedure TIBQueryEditor.EditSQL;
779 var
780  SQLText: string;
781  SQL: TStrings;
782 begin
783  SQL := TStringList.Create;
784  try
785    SQL.Assign(TIBQuery(Component).SQL);
786    SQLText := SQL.Text;
787    if (SQLEdit.EditSQL(SQLText, FGetTableNamesProc, FGetFieldNamesProc)) and
788      (SQL.Text <> SQLText) then
789    begin
790      SQL.Text := SQLText;
791      TIBQuery(Component).SQL.Assign(SQL);
792    end;
793  finally
794    SQL.free;
795  end;
796 end;
797
978   procedure TIBQueryEditor.ExecuteVerb(Index: Integer);
979   var
980    Query: TIBQuery;
# Line 806 | Line 986 | begin
986      Dec(Index, inherited GetVerbCount);
987      case Index of
988        0: Query.ExecSQL;
989 <      1:
810 <      begin
811 <        if Assigned(Query.Database) then
812 <        begin
813 <          FGetTableNamesProc := Query.Database.GetTableNames;
814 <          FGetFieldNamesProc := Query.Database.GetFieldNames;
815 <        end
816 <        else
817 <        begin
818 <          FGetTableNamesProc := nil;
819 <          FGetFieldNamesProc := nil;
820 <        end;
821 <        EditSQL;
822 <      end;
989 >      1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
990      end;
991    end;
992   end;
# Line 833 | Line 1000 | begin
1000      case Index of
1001        0: Result := SExecute;
1002        1: Result := SEditSQL;
1003 <      2: Result := SInterbaseExpressVersion;
1003 >      2: Result := SInterbaseExpressVersion ;
1004      end;
1005    end;
1006   end;
# Line 863 | Line 1030 | begin
1030      Dec(Index, inherited GetVerbCount);
1031      case Index of
1032        0: Result := SExecute;
1033 <      1: Result := SInterbaseExpressVersion;
1033 >      1: Result := SInterbaseExpressVersion ;
1034      end;
1035    end;
1036   end;
# Line 895 | Line 1062 | end;
1062   procedure TIBTableFieldLinkProperty.Edit;
1063   begin
1064    FTable := DataSet as TIBTable;
1065 +  if assigned(FTable.Database) then
1066 +    FTable.Database.Connected := true;
1067    inherited Edit;
1068   end;
1069  
1070 + function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
1071 + begin
1072 +  Result :=  FTable.IndexDefs
1073 + end;
1074 +
1075   function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
1076   begin
1077    Result := FTable.IndexFieldNames;
# Line 918 | Line 1092 | begin
1092    FTable.MasterFields := Value;
1093   end;
1094  
1095 < { TIBDatabaseSprig }
1095 > { TIBUpdateSQLProperty }
1096  
1097 < function TIBDatabaseSprig.AnyProblems: Boolean;
1098 < begin
1099 <  Result := (TIBDatabase(Item).DatabaseName = '') or
926 <            (TIBDatabase(Item).DefaultTransaction = nil);
927 < end;
928 <
929 < function TIBDatabaseSprig.Caption: string;
930 < begin
931 <  Result := CaptionFor(TIBDatabase(Item).DatabaseName, UniqueName);
932 < end;
933 <
934 < { TIBTransactionSprig }
935 <
936 < function TIBTransactionSprig.AnyProblems: Boolean;
937 < begin
938 <  Result := TIBTransaction(Item).DefaultDatabase = nil;
939 < end;
940 <
941 < function TIBTransactionSprig.Caption: string;
942 < begin
943 <  if (TIBTransaction(Item).DefaultDatabase <> nil) and
944 <     (TIBTransaction(Item).DefaultDatabase.DefaultTransaction = Item) then
945 <    Result := CaptionFor(Format(SDefaultTransaction, [UniqueName]))
946 <  else
947 <    Result := inherited Caption;
948 < end;
949 <
950 < procedure TIBTransactionSprig.FigureParent;
951 < begin
952 <  SeekParent(TIBTransaction(Item).DefaultDatabase).Add(Self);
953 < end;
954 <
955 < function TIBTransactionSprig.DragDropTo(AItem: TSprig): Boolean;
956 < begin
957 <  Result := False;
958 <  if AItem is TIBDatabaseSprig then
959 <  begin
960 <    Result := TIBDatabase(AItem.Item) <> TIBTransaction(Item).DefaultDatabase;
961 <    if Result then
962 <    begin
963 <      TIBTransaction(Item).DefaultDatabase := TIBDatabase(AItem.Item);
964 <      TIBDatabase(AItem.Item).DefaultTransaction := TIBTransaction(Item);
965 <    end;
966 <  end
967 < end;
968 <
969 < function TIBTransactionSprig.DragOverTo(AItem: TSprig): Boolean;
970 < begin
971 <  Result := (AItem is TIBDatabaseSprig);
972 < end;
973 <
974 < class function TIBTransactionSprig.PaletteOverTo(AParent: TSprig; AClass: TClass): Boolean;
1097 > procedure TIBUpdateSQLProperty.Edit;
1098 > var
1099 >  IBDataset: TIBDataset;
1100   begin
1101 <  Result := (AParent is TIBDatabaseSprig);
1101 >  IBDataset := GetComponent(0) as TIBDataset;
1102 >  if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1103   end;
1104  
1105 < { support stuff for sprigs }
1105 > { TIBUpdateSQLUpdateProperty }
1106  
1107 < function IBAnyProblems(ATransaction: TIBTransaction; ADatabase: TIBDatabase): Boolean;
1107 > procedure TIBUpdateSQLUpdateProperty.Edit;
1108   begin
1109 <  Result := (ATransaction = nil) or
1110 <            (ADatabase = nil) or
985 <            (ATransaction.DefaultDatabase <> ADatabase);
1109 >  GetObjects;
1110 >  if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1111   end;
1112  
1113 < procedure IBFigureParent(ASprig: TSprig; ATransaction: TIBTransaction; ADatabase: TIBDatabase);
989 < begin
990 <  if ATransaction <> nil then
991 <    ASprig.SeekParent(ATransaction).Add(ASprig)
992 <  else if ADatabase <> nil then
993 <    ASprig.SeekParent(ADatabase).Add(ASprig)
994 <  else
995 <    ASprig.Root.Add(ASprig);
996 < end;
1113 > { TIBRefreshSQLProperty }
1114  
1115 < function IBDragOver(ASprig: TSprig): Boolean;
999 < begin
1000 <  Result := (ASprig is TIBTransactionSprig) or
1001 <            (ASprig is TIBDatabaseSprig);
1002 < end;
1003 <
1004 < function IBDropOver(AParent: TSprig; var ATransaction: TIBTransaction; var ADatabase: TIBDatabase): Boolean;
1115 > procedure TIBRefreshSQLProperty.Edit;
1116   var
1117 <  vParentTransaction: TIBTransaction;
1007 <  vParentDatabase: TIBDatabase;
1117 >  IBDataset: TIBDataset;
1118   begin
1119 <  Result := False;
1120 <  if AParent is TIBTransactionSprig then
1011 <  begin
1012 <    vParentTransaction := TIBTransaction(AParent.Item);
1013 <    Result := vParentTransaction <> ATransaction;
1014 <    if Result then
1015 <      ATransaction := vParentTransaction;
1016 <    if (vParentTransaction.DefaultDatabase = nil) or
1017 <       (ADatabase <> vParentTransaction.DefaultDatabase) then
1018 <    begin
1019 <      Result := True;
1020 <      ADatabase := vParentTransaction.DefaultDatabase;
1021 <    end;
1022 <  end else if AParent is TIBDatabaseSprig then
1023 <  begin
1024 <    vParentDatabase := TIBDatabase(AParent.Item);
1025 <    Result := vParentDatabase <> ADatabase;
1026 <    if Result then
1027 <      ADatabase := vParentDatabase;
1028 <    if (vParentDatabase.DefaultTransaction = nil) or
1029 <       (ATransaction <> vParentDatabase.DefaultTransaction) then
1030 <    begin
1031 <      Result := True;
1032 <      ATransaction := vParentDatabase.DefaultTransaction;
1033 <    end;
1034 <  end;
1119 >  IBDataset := GetComponent(0) as TIBDataset;
1120 >  if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1121   end;
1122  
1123 < { TIBSQLSprig }
1123 > { TIBUpdateSQLRefreshSQLProperty }
1124  
1125 < function TIBSQLSprig.AnyProblems: Boolean;
1125 > procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1126   begin
1127 <  Result := IBAnyProblems(TIBSQL(Item).Transaction,
1128 <                          TIBSQL(Item).Database) or
1043 <            (TIBSQL(Item).SQL.Count = 0);
1127 >  GetObjects;
1128 >  if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
1129   end;
1130  
1131 < function TIBSQLSprig.DragDropTo(AItem: TSprig): Boolean;
1047 < var
1048 <  vTransaction: TIBTransaction;
1049 <  vDatabase: TIBDatabase;
1050 < begin
1051 <  with TIBSQL(Item) do
1052 <  begin
1053 <    vTransaction := Transaction;
1054 <    vDatabase := Database;
1055 <    Result := IBDropOver(AItem, vTransaction, vDatabase);
1056 <    if Result then
1057 <    begin
1058 <      Transaction := vTransaction;
1059 <      Database := vDatabase;
1060 <    end;
1061 <  end;
1062 < end;
1131 > { TIBDeleteSQLProperty }
1132  
1133 < function TIBSQLSprig.DragOverTo(AItem: TSprig): Boolean;
1133 > procedure TIBDeleteSQLProperty.Edit;
1134 > var
1135 >  IBDataset: TIBDataSet;
1136   begin
1137 <  Result := IBDragOver(AItem);
1137 >  IBDataset := GetComponent(0) as TIBDataSet;
1138 >  if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
1139   end;
1140  
1141 < procedure TIBSQLSprig.FigureParent;
1070 < begin
1071 <  IBFigureParent(Self, TIBSQL(Item).Transaction,
1072 <                       TIBSQL(Item).Database);
1073 < end;
1141 > { TIBUpdateSQLDeleteProperty }
1142  
1143 < class function TIBSQLSprig.PaletteOverTo(AParent: TSprig; AClass: TClass): Boolean;
1143 > function TIBUpdateSQLDeleteProperty.GetAttributes: TPropertyAttributes;
1144   begin
1145 <  Result := IBDragOver(AParent);
1145 >  Result:=inherited GetAttributes;
1146   end;
1147  
1148 < { TIBCustomDataSetSprig }
1081 <
1082 < function TIBCustomDataSetSprig.AnyProblems: Boolean;
1148 > procedure TIBUpdateSQLDeleteProperty.Edit;
1149   begin
1150 <  Result := IBAnyProblems(TIBCustomDataSet(Item).Transaction,
1151 <                          TIBCustomDataSet(Item).Database);
1150 >  GetObjects;
1151 >  if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1152   end;
1153  
1154 < procedure TIBCustomDataSetSprig.FigureParent;
1089 < begin
1090 <  IBFigureParent(Self, TIBCustomDataSet(Item).Transaction,
1091 <                       TIBCustomDataSet(Item).Database);
1092 < end;
1154 > { TUpdateSQLPropertyEditor }
1155  
1156 < function TIBCustomDataSetSprig.DragDropTo(AItem: TSprig): Boolean;
1095 < var
1096 <  vTransaction: TIBTransaction;
1097 <  vDatabase: TIBDatabase;
1156 > function TUpdateSQLPropertyEditor.GetObjects: boolean;
1157   begin
1158 <  with TIBCustomDataSet(Item) do
1158 >  Result := false;
1159 >  FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
1160 >  if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
1161 >    Exit;
1162 >  FDatabase := nil;
1163 >  if FIBUpdateSQL.DataSet is TIBQuery then
1164    begin
1165 <    vTransaction := Transaction;
1166 <    vDatabase := Database;
1103 <    Result := IBDropOver(AItem, vTransaction, vDatabase);
1104 <    if Result then
1105 <    begin
1106 <      Transaction := vTransaction;
1107 <      Database := vDatabase;
1108 <    end;
1165 >    FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
1166 >    Result := true
1167    end;
1168   end;
1169  
1170 < function TIBCustomDataSetSprig.DragOverTo(AItem: TSprig): Boolean;
1113 < begin
1114 <  Result := IBDragOver(AItem);
1115 < end;
1116 <
1117 < class function TIBCustomDataSetSprig.PaletteOverTo(AParent: TSprig; AClass: TClass): Boolean;
1118 < begin
1119 <  Result := IBDragOver(AParent);
1120 < end;
1121 <
1122 < { TIBStoredProcSprig }
1123 <
1124 < function TIBStoredProcSprig.AnyProblems: Boolean;
1125 < begin
1126 <  Result := inherited AnyProblems or
1127 <            (TIBStoredProc(Item).StoredProcName = '');
1128 < end;
1129 <
1130 < function TIBStoredProcSprig.Caption: string;
1131 < begin
1132 <  Result := CaptionFor(TIBStoredProc(Item).StoredProcName, UniqueName);
1133 < end;
1134 <
1135 < { TIBTableSprig }
1136 <
1137 < function TIBTableSprig.AnyProblems: Boolean;
1138 < begin
1139 <  Result := inherited AnyProblems or
1140 <            (TIBTable(Item).TableName = '');
1141 < end;
1142 <
1143 < function TIBTableSprig.Caption: string;
1144 < begin
1145 <  Result := CaptionFor(TIBTable(Item).TableName, UniqueName);
1146 < end;
1147 <
1148 < { TIBQuerySprig }
1170 > { TIBInsertSQLProperty }
1171  
1172 < function TIBQuerySprig.AnyProblems: Boolean;
1151 < begin
1152 <  Result := inherited AnyProblems or
1153 <            (TIBQuery(Item).SQL.Count = 0);
1154 < end;
1155 <
1156 < { TIBDatabaseInfoSprig }
1157 <
1158 < class function TIBDatabaseInfoSprig.ParentProperty: string;
1159 < begin
1160 <  Result := 'Database'; { do not localize }
1161 < end;
1162 <
1163 < { TIBUpdateSQLSprig }
1164 <
1165 < function TIBUpdateSQLSprig.AnyProblems: Boolean;
1166 < begin
1167 <  with TIBUpdateSQL(Item) do
1168 <    Result := (ModifySQL.Count = 0) and
1169 <              (InsertSQL.Count = 0) and
1170 <              (DeleteSQL.Count = 0) and
1171 <              (RefreshSQL.Count = 0);
1172 < end;
1173 <
1174 < { TIBEventsSprig }
1175 <
1176 < function TIBEventsSprig.AnyProblems: Boolean;
1177 < begin
1178 <  Result := inherited AnyProblems or
1179 <            (TIBEvents(Item).Events.Count = 0);
1180 < end;
1181 <
1182 < class function TIBEventsSprig.ParentProperty: string;
1183 < begin
1184 <  Result := 'Database'; { do not localize }
1185 < end;
1186 <
1187 < { TIBTableMasterDetailBridge }
1188 <
1189 < function TIBTableMasterDetailBridge.CanEdit: Boolean;
1190 < begin
1191 <  Result := True;
1192 < end;
1193 <
1194 < function TIBTableMasterDetailBridge.Caption: string;
1195 < begin
1196 <  if TIBTable(Omega.Item).MasterFields = '' then
1197 <    Result := SNoMasterFields
1198 <  else
1199 <    Result := TIBTable(Omega.Item).MasterFields;
1200 < end;
1201 <
1202 < function TIBTableMasterDetailBridge.Edit: Boolean;
1172 > procedure TIBInsertSQLProperty.Edit;
1173   var
1174 <  vPropEd: TIBTableFieldLinkProperty;
1174 >  IBDataset: TIBDataSet;
1175   begin
1176 <  vPropEd := TIBTableFieldLinkProperty.CreateWith(TDataSet(Omega.Item));
1177 <  try
1208 <    vPropEd.Edit;
1209 <    Result := vPropEd.Changed;
1210 <  finally
1211 <    vPropEd.Free;
1212 <  end;
1176 >  IBDataset := GetComponent(0) as TIBDataSet;
1177 >  if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1178   end;
1179  
1180 < class function TIBTableMasterDetailBridge.GetOmegaSource(
1216 <  AItem: TPersistent): TDataSource;
1217 < begin
1218 <  Result := TIBTable(AItem).MasterSource;
1219 < end;
1220 <
1221 < class function TIBTableMasterDetailBridge.OmegaIslandClass: TIslandClass;
1222 < begin
1223 <  Result := TIBTableIsland;
1224 < end;
1180 > { TIBUpdateSQLInsertSQLProperty }
1181  
1182 < class procedure TIBTableMasterDetailBridge.SetOmegaSource(
1227 <  AItem: TPersistent; ADataSource: TDataSource);
1182 > procedure TIBUpdateSQLInsertSQLProperty.Edit;
1183   begin
1184 <  TIBTable(AItem).MasterSource := ADataSource;
1184 >  GetObjects;
1185 >  if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1186   end;
1187  
1188 < { TIBQueryMasterDetailBridge }
1188 > { TIBGeneratorProperty }
1189  
1190 < function TIBQueryMasterDetailBridge.Caption: string;
1190 > function TIBGeneratorProperty.GetAttributes: TPropertyAttributes;
1191   begin
1192 <  Result := SParamsFields;
1192 >  Result:= inherited GetAttributes + [paDialog] - [paMultiSelect,paValueList];
1193   end;
1194  
1195 < class function TIBQueryMasterDetailBridge.GetOmegaSource(
1240 <  AItem: TPersistent): TDataSource;
1195 > procedure TIBGeneratorProperty.Edit;
1196   begin
1197 <  Result := TIBQuery(AItem).DataSource;
1197 >  if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
1198   end;
1199  
1200 < class function TIBQueryMasterDetailBridge.OmegaIslandClass: TIslandClass;
1246 < begin
1247 <  Result := TIBQueryIsland;
1248 < end;
1249 <
1250 < class function TIBQueryMasterDetailBridge.RemoveMasterFieldsAsWell: Boolean;
1251 < begin
1252 <  Result := False;
1253 < end;
1200 > { TIBSQLEditor }
1201  
1202 < class procedure TIBQueryMasterDetailBridge.SetOmegaSource(
1256 <  AItem: TPersistent; ADataSource: TDataSource);
1202 > procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1203   begin
1204 <  TIBQuery(AItem).DataSource := ADataSource;
1204 >  if IBSQLEditor.EditSQL(TIBSQL(Component)) then Modified;
1205   end;
1206  
1207 < { TIBCustomDataSetIsland }
1262 <
1263 < function TIBCustomDataSetIsland.VisibleTreeParent: Boolean;
1207 > function TIBSQLEditor.GetVerb(Index: Integer): string;
1208   begin
1209 <  Result := False;
1209 >  case Index of
1210 >    0 : Result := SIBSQLEditor;
1211 >    1: Result := SInterbaseExpressVersion ;
1212 >  end;
1213   end;
1214  
1215 < { TIBSQLIsland }
1269 <
1270 < function TIBSQLIsland.VisibleTreeParent: Boolean;
1215 > function TIBSQLEditor.GetVerbCount: Integer;
1216   begin
1217 <  Result := False;
1217 >  Result:= 2
1218   end;
1219  
1220 < { TIBTransactionIsland }
1220 > { TIBSQLSQLPropertyEditor }
1221  
1222 < function TIBTransactionIsland.VisibleTreeParent: Boolean;
1222 > procedure TIBSQLSQLPropertyEditor.Edit;
1223 > var
1224 >  IBSQL: TIBSQL;
1225   begin
1226 <  Result := TIBTransaction(Sprig.Item).DefaultDatabase = nil;
1226 >  IBSQL := GetComponent(0) as TIBSQL;
1227 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
1228   end;
1229  
1230 + initialization
1231 +  {$I IBDBReg.lrs}
1232   end.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines