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 5 by tony, Fri Feb 18 16:26:16 2011 UTC vs.
Revision 263 by tony, Thu Dec 6 15:55:01 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 - 2018                                               }
31   {************************************************************************}
32  
33   unit IBDBReg;
# Line 35 | Line 39 | unit IBDBReg;
39   *)
40   {$A+}                           (* Aligned records: On *)
41   {$B-}                           (* Short circuit boolean expressions: Off *)
38 {$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 43 | Line 46 | unit IBDBReg;
46   {$Q-}                           (* Overflow checks: Off *)
47   {$R-}                           (* Range checks: Off *)
48   {$T+}                           (* Typed address: On *)
46 {$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 <     DB, IBTable, IBDatabase,  IBEventsEditor,
57 <      IBUpdateSQL, IBXConst, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor;
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 60 | Line 63 | type
63    Property editor the DataBase Name property.  Brings up the Open dialog }
64  
65    TIBFileNameProperty = class(TStringProperty)
66 +  protected
67 +    function GetFilter: string; virtual;
68    public
69      procedure Edit; override;
70      function GetAttributes: TPropertyAttributes; override;
71    end;
72  
73 +  { TIBLibraryNameProperty }
74 +
75 +  TIBLibraryNameProperty = class(TIBFileNameProperty)
76 +  protected
77 +    function GetFilter: string; override;
78 +  end;
79 +
80    { TIBNameProperty
81    }
82    TIBNameProperty = class(TStringProperty)
# Line 80 | Line 92 | type
92      procedure GetValues(Proc: TGetStrProc); override;
93    end;
94  
95 +  { TIBPackageNameProperty
96 +    Editor for the TIBStoredProc.PackageName property.  Displays a drop-down list of all
97 +    the StoredProcedures in the Database.}
98 +  TIBPackageNameProperty = class(TIBNameProperty)
99 +  public
100 +    procedure GetValues(Proc: TGetStrProc); override;
101 +  end;
102 +
103    { TIBTableNameProperty
104      Editor for the TIBTable.TableName property.  Displays a drop-down list of all
105      the Tables in the Database.}
# Line 88 | Line 108 | type
108      procedure GetValues(Proc: TGetStrProc); override;
109    end;
110  
111 +  { TDBStringProperty }
112 +
113    TDBStringProperty = class(TStringProperty)
114 +  private
115 +    function ConnecttoDB: boolean;
116    public
117      function GetAttributes: TPropertyAttributes; override;
118      procedure GetValueList(List: TStrings); virtual;
119      procedure GetValues(Proc: TGetStrProc); override;
120 +    procedure Edit; override;
121    end;
122  
123 +  { TIBIndexFieldNamesProperty }
124 +
125    TIBIndexFieldNamesProperty = class(TDBStringProperty)
126    public
127      procedure GetValueList(List: TStrings); override;
# Line 122 | Line 149 | type
149      function GetVerbCount: Integer; override;
150    end;
151  
152 +  { TIBArrayGridEditor }
153 +
154 +  TIBArrayGridEditor = class(TComponentEditor)
155 +  public
156 +    procedure ExecuteVerb(Index: Integer); override;
157 +    function GetVerb(Index: Integer): string; override;
158 +    function GetVerbCount: Integer; override;
159 +  end;
160 +
161   { TIBQueryEditor }
162  
163 <  TIBQueryEditor = class(TComponentEditor)
163 >  TIBQueryEditor = class(TFieldsComponentEditor)
164    public
165      procedure ExecuteVerb(Index: Integer); override;
166      function GetVerb(Index: Integer): string; override;
# Line 133 | Line 169 | type
169  
170   { TIBStoredProcEditor }
171  
172 <  TIBStoredProcEditor = class(TComponentEditor)
172 >  TIBStoredProcEditor = class(TFieldsComponentEditor)
173    public
174      procedure ExecuteVerb(Index: Integer); override;
175      function GetVerb(Index: Integer): string; override;
# Line 142 | Line 178 | type
178  
179   { TIBDataSetEditor }
180  
181 <  TIBDataSetEditor = class(TComponentEditor)
181 >  TIBDataSetEditor = class(TFieldsComponentEditor)
182    public
183      procedure ExecuteVerb(Index: Integer); override;
184      function GetVerb(Index: Integer): string; override;
# Line 158 | Line 194 | type
194     function GetVerbCount: Integer; override;
195    end;
196  
197 <  TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
197 > { TIBSQLEditor }
198 >
199 >  TIBSQLEditor  = class(TComponentEditor)
200    public
201 <    procedure Edit; override;
201 >    procedure ExecuteVerb(Index: Integer); override;
202 >    function GetVerb(Index: Integer): string; override;
203 >   function GetVerbCount: Integer; override;
204 >  end;
205 >
206 > { TIBServiceEditor}
207 >
208 >  TIBServiceEditor = class(TComponentEditor)
209 >  public
210 >    procedure ExecuteVerb(Index: Integer); override;
211 >    function GetVerb(Index: Integer): string; override;
212 >   function GetVerbCount: Integer; override;
213 >  end;
214 >
215 >  { TIBXServiceEditor }
216 >
217 >  TIBXServiceEditor = class(TComponentEditor)
218 >  public
219 >    procedure ExecuteVerb(Index: Integer); override;
220 >    function GetVerb(Index: Integer): string; override;
221 >    function GetVerbCount: Integer; override;
222    end;
223 < (*
223 >
224 >  TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
225 >  end;
226 >
227 >  { TIBTableFieldLinkProperty }
228 >
229    TIBTableFieldLinkProperty = class(TFieldLinkProperty)
230    private
231      FTable: TIBTable;
232    protected
233 +    function GetIndexDefs: TIndexDefs; override;
234      function GetIndexFieldNames: string; override;
235      function GetMasterFields: string; override;
236      procedure SetIndexFieldNames(const Value: string); override;
# Line 174 | Line 238 | type
238    public
239      procedure Edit; override;
240    end;
241 < *)
241 >
242   { TSQLPropertyEditor }
243  
244    TSQLPropertyEditor = class(TStringsPropertyEditor)
# Line 189 | Line 253 | type
253      procedure Edit; override;
254    end;
255  
256 + {TIBSQLSQLPropertyEditor }
257 +
258 +  TIBSQLSQLPropertyEditor = class(TSQLPropertyEditor)
259 +  public
260 +    procedure Edit; override;
261 +  end;
262 +
263   { TIBDatasetSQLProperty }
264  
265    TIBDatasetSQLProperty = class(TSQLPropertyEditor)
# Line 269 | Line 340 | type
340      procedure Edit; override;
341    end;
342  
343 +  { TIBUpdateRefreshSQLProperty }
344 +
345 +  TIBUpdateRefreshSQLProperty = class(TSQLPropertyEditor)
346 +  protected
347 +    FIBUpdate: TIBUpdate;
348 +    FDatabase: TIBDatabase;
349 +    function GetObjects: boolean;
350 +  public
351 +    procedure Edit; override;
352 +  end;
353 +
354 +
355   { TIBEventListProperty }
356  
357    TIBEventListProperty = class(TClassProperty)
# Line 285 | Line 368 | type
368      procedure Edit; override;
369    end;
370  
371 +  { TDBDynamicGridFieldProperty }
372 +
373 +  TDBDynamicGridFieldProperty = class(TFieldProperty)
374 +  public
375 +    procedure FillValues(const Values: TStringList); override;
376 +  end;
377 +
378 +  { TDBLookupPropertiesGridFieldProperty }
379 +
380 +  TDBLookupPropertiesGridFieldProperty = class(TFieldProperty)
381 +  public
382 +    procedure FillValues(const Values: TStringList); override;
383 +  end;
384 +
385 +  { TIBTreeViewFieldProperty }
386 +
387 +  TIBTreeViewFieldProperty = class(TFieldProperty)
388 +  public
389 +    procedure FillValues(const Values: TStringList); override;
390 +  end;
391 +
392 +  { TIBDynamicGridIndexNamesProperty }
393 +
394 +  TIBDynamicGridIndexNamesProperty = class(TIndexFieldNamesProperty)
395 +  protected
396 +    function GetFieldDefs: TFieldDefs; override;
397 +    function GetIndexFieldNames: string; override;
398 +    procedure SetIndexFieldNames(const Value: string); override;
399 +  end;
400 +
401 +  { TIBFieldDefsProperty }
402 +
403 +  TIBFieldDefsProperty = class(TCollectionPropertyEditor)
404 +  public
405 +    procedure Edit; override;
406 +  end;
407 +
408 +  { TIBIndexDefsProperty }
409 +
410 +  TIBIndexDefsProperty = class(TCollectionPropertyEditor)
411 +  public
412 +    procedure Edit; override;
413 +  end;
414 +
415 +
416   procedure Register;
417  
418   implementation
419  
420 < uses IB, IBQuery, IBStoredProc, IBCustomDataSet,
421 <     IBIntf, IBSQL, (*IBSQLMonitor,*) IBDatabaseInfo, IBEvents,
422 <     IBServices, (*IBInstall,*) IBDatabaseEdit, IBTransactionEdit,
423 <     IBBatchMove, DBLoginDlg, IBExtract,LResources, IBSelectSQLEditor,
420 > uses IB, IBQuery, IBStoredProc, IBCustomDataSet, FBMessages,
421 >     IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents, IBTypes,
422 >     IBServices, IBXServices, IBDatabaseEdit, IBTransactionEdit,
423 >     IBBatchMove, IBExtract,LResources, IBSelectSQLEditor,
424       IBModifySQLEditor,IBDeleteSQLEditor,IBRefreshSQLEditor,
425 <     IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor;
425 >     IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor,
426 >     IBSQLEditor, ibserviceeditor, LCLVersion, IBDynamicGrid, IBLookupComboEditBox,
427 >     IBTreeView, DBControlGrid, ibxscript, IBLocalDBSupport, IBDSDialogs,
428 >     IBArrayGrid, IBVersion, IBDataOutput, IBXServiceEditor;
429 >
430 > const
431 >  IBPalette1 = 'Firebird'; {do not localize}
432 >  IBPalette2 = 'Firebird Legacy Admin'; {do not localize}
433 >  IBPalette3 = 'Firebird Data Controls';   {do not localize}
434 >  IBPalette4 = 'Firebird Admin'; {do not localize}
435 >
436 > resourcestring
437 >   SInterbaseExpressVersion = 'Firebird Express for Lazarus ' + IBX_VERSION;
438 >   SEditSQL = 'Edit SQL';
439 >   SIBSQLEditor = 'IBSQL Editor';
440 >   SIBServiceEditor = 'Edit IB Service';
441 >   SIBUpdateSQLEditor = '&UpdateSQL Editor...';
442 >   SIBDataSetEditor = '&Dataset Editor...';
443 >   SExecute = 'E&xecute';
444 >   SIBDatabaseEditor = 'Da&tabase Editor...';
445 >   SIBTransactionEditor = '&Transaction Editor...';
446 >   SIBUpdateLayout = 'Update Layout';
447  
448   procedure Register;
449   begin
450 <  RegisterComponents(IBPalette1, [TIBTable, TIBQuery,
451 <    TIBStoredProc, TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBBatchMove,
452 <    TIBDataSet, TIBSQL, TIBDatabaseInfo, (*TIBSQLMonitor,*) TIBEvents, TIBExtract]);
453 <  if (TryIBLoad) and IBServiceAPIPresent  then
450 >  AllowUseOfFBLIB := true;
451 >  if not TryIBLoad then
452 >  begin
453 >    MessageDlg('IBX is unable to locate the Firebird Library - have you remembered to install it?',mtError,[mbOK],0);
454 >    Exit;
455 >  end;
456 >
457 >  RegisterNoIcon([TIBStringField, TIBBCDField, TIBMemoField, TIBArrayField,
458 >    TIBSmallintField, TIBIntegerField, TIBLargeIntField]);
459 >  {$if lcl_fullversion < 01010000}
460 >  {see http://bugs.freepascal.org/view.php?id=19035 }
461 >  RegisterNoIcon([TIntegerField]);
462 >  {$endif}
463 >  RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet,
464 >   TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBUpdate, TIBEvents,
465 >     TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
466 >       TIBStoredProc,TIBBatchMove,  TIBTable,TIBExtract, TIBXScript, TIBLocalDBSupport,
467 >       TIBBlockFormatOut,TIBCSVDataOut,TIBInsertStmtsOut]);
468 >  if FirebirdAPI.HasServiceAPI  then
469 >  begin
470 >    RegisterComponents(IBPalette4, [TIBXServicesConnection, TIBXConfigService,
471 >      TIBXClientSideBackupService, TIBXServerSideBackupService,
472 >      TIBXClientSideRestoreService, TIBXServerSideRestoreService,
473 >      TIBXValidationService, TIBXOnlineValidationService, TIBXStatisticalService,
474 >      TIBXLogService, TIBXSecurityService, TIBXServerProperties,
475 >      TIBXLimboTransactionResolutionService,TIBXServicesUserList, TIBXServicesLimboTransactionsList]);
476      RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
477 <      TIBRestoreService, TIBValidationService, TIBStatisticalService,
477 >      TIBRestoreService, TIBValidationService,
478 >      TIBOnlineValidationService, TIBStatisticalService,
479        TIBLogService, TIBSecurityService, TIBServerProperties]);
480 <  RegisterClasses([TIBStringField, TIBBCDField]);
481 < //  RegisterFields([TIBStringField, TIBBCDField]); --not sure if this is needed in lazarus
480 >  end;
481 >
482 >  RegisterComponents(IBPalette3,[TIBLookupComboEditBox,TIBDynamicGrid,TIBTreeView,TDBControlGrid, TIBArrayGrid]);
483 >
484    RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
485 +  RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'FirebirdLibraryPathName', TIBLibraryNameProperty); {do not localize}
486 +  RegisterPropertyEditor(TypeInfo(TIBFileName), TIBXServicesConnection, 'FirebirdLibraryPathName', TIBLibraryNameProperty); {do not localize}
487    RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
488 +  RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'PackageName', TIBPackageNameProperty); {do not localize}
489    RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty);
490    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'TableName', TIBTableNameProperty); {do not localize}
491    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexName', TIBIndexNameProperty); {do not localize}
492    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexFieldNames', TIBIndexFieldNamesProperty); {do not localize}
493 < //  RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
493 >  RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
494 >  RegisterPropertyEditor(TypeInfo(TFieldDefs), TIBTable, 'FieldDefs', TIBFieldDefsProperty); {do not localize}
495 >  RegisterPropertyEditor(TypeInfo(TIndexDefs), TIBTable, 'IndexDefs', TIBIndexDefsProperty); {do not localize}
496    RegisterPropertyEditor(TypeInfo(TStrings), TIBQuery, 'SQL', TIBQuerySQLProperty); {do not localize}
497    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'SelectSQL', TIBDatasetSQLProperty); {do not localize}
498    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'ModifySQL', TIBUpdateSQLProperty); {do not localize}
499    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'InsertSQL', TIBInsertSQLProperty); {do not localize}
500    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'RefreshSQL', TIBRefreshSQLProperty); {do not localize}
501    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'DeleteSQL', TIBDeleteSQLProperty); {do not localize}
502 <  RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLProperty); {do not localize}
502 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLSQLPropertyEditor); {do not localize}
503    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'RefreshSQL', TIBUpdateSQLRefreshSQLProperty); {do not localize}
504    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize}
505    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize}
506    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize}
507 +  RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdate, 'RefreshSQL', TIBUpdateRefreshSQLProperty); {do not localize}
508    RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize}
509 <  RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'Generator', TIBGeneratorProperty);  {do not localize}
509 >  RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
510 >  RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
511 >  RegisterPropertyEditor(TypeInfo(TPersistent), TIBTable, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
512  
513    RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor);
514    RegisterComponentEditor(TIBTransaction, TIBTransactionEditor);
# Line 334 | Line 516 | begin
516    RegisterComponentEditor(TIBDataSet, TIBDataSetEditor);
517    RegisterComponentEditor(TIBQuery, TIBQueryEditor);
518    RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor);
519 +  RegisterComponentEditor(TIBSQL, TIBSQLEditor);
520 +  RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
521 +  RegisterComponentEditor(TIBArrayGrid, TIBArrayGridEditor);
522 +  RegisterComponentEditor(TIBXServicesConnection, TIBXServiceEditor);
523 +
524 +
525 +  {Firebird Data Access Controls}
526 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'KeyField', TDBDynamicGridFieldProperty);
527 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'ListField', TDBDynamicGridFieldProperty);
528 +  RegisterPropertyEditor(TypeInfo(string), TIBDynamicGrid, 'IndexFieldNames', TIBDynamicGridIndexNamesProperty);
529 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'DataFieldName', TDBLookupPropertiesGridFieldProperty);
530 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'KeyField', TIBTreeViewFieldProperty);
531 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'TextField', TIBTreeViewFieldProperty);
532 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ParentField', TIBTreeViewFieldProperty);
533 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'HasChildField', TIBTreeViewFieldProperty);
534 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ImageIndexField', TIBTreeViewFieldProperty);
535 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'SelectedIndexField', TIBTreeViewFieldProperty);
536 +
537 +  IBGUIInterface :=  TIBDSLCLInterface.Create;
538 + end;
539 +
540 + procedure LoadDataSourceFields(DataSource: TDataSource; List: TStrings);
541 + var
542 +  DataSet: TDataSet;
543 +  i: Integer;
544 + begin
545 +  if Assigned(DataSource) then
546 +  begin
547 +    DataSet := DataSource.DataSet;
548 +    if Assigned(DataSet) then
549 +    begin
550 +      if DataSet.Fields.Count > 0 then
551 +        DataSet.GetFieldNames(List)
552 +      else
553 +      begin
554 +        DataSet.FieldDefs.Update;
555 +        for i := 0 to DataSet.FieldDefs.Count - 1 do
556 +          List.Add(DataSet.FieldDefs[i].Name);
557 +      end;
558 +    end;
559 +  end;
560 + end;
561 +
562 + { TIBLibraryNameProperty }
563 +
564 + function TIBLibraryNameProperty.GetFilter: string;
565 + begin
566 +  Result := SLibraryNameFilter; {do not localise}
567 + end;
568 +
569 + { TIBXServiceEditor }
570 +
571 + procedure TIBXServiceEditor.ExecuteVerb(Index: Integer);
572 + begin
573 +  if Index < inherited GetVerbCount then
574 +    inherited ExecuteVerb(Index) else
575 +  begin
576 +    Dec(Index, inherited GetVerbCount);
577 +    case Index of
578 +      0 : if IBXServiceEditor.EditIBXService(TIBXServicesConnection(Component)) then Designer.Modified;
579 +    end;
580 +  end;
581 + end;
582 +
583 + function TIBXServiceEditor.GetVerb(Index: Integer): string;
584 + begin
585 +  if Index < inherited GetVerbCount then
586 +    Result := inherited GetVerb(Index) else
587 +  begin
588 +    Dec(Index, inherited GetVerbCount);
589 +    case Index of
590 +      0: Result := SIBServiceEditor;
591 +      1 : Result := SInterbaseExpressVersion;
592 +    end;
593 +  end;
594 + end;
595 +
596 + function TIBXServiceEditor.GetVerbCount: Integer;
597 + begin
598 +  Result := inherited GetVerbCount + 2;
599 + end;
600 +
601 + { TIBUpdateRefreshSQLProperty }
602 +
603 + function TIBUpdateRefreshSQLProperty.GetObjects: boolean;
604 + begin
605 +  Result := false;
606 +  FIBUpdate := GetComponent(0) as TIBUpdate;
607 +  if not assigned(FIBUpdate) or not assigned(FIBUpdate.DataSet) then
608 +    Exit;
609 +  FDatabase := nil;
610 +  if FIBUpdate.DataSet is TIBQuery then
611 +  begin
612 +    FDatabase := (FIBUpdate.DataSet as TIBQuery).Database;
613 +    Result := true
614 +  end;
615 + end;
616 +
617 + procedure TIBUpdateRefreshSQLProperty.Edit;
618 + begin
619 +  GetObjects;
620 +  if IBRefreshSQLEditor.EditSQL(FIBUpdate.DataSet,FIBUpdate.RefreshSQL) then Modified;
621 + end;
622 +
623 + { TIBPackageNameProperty }
624 +
625 + procedure TIBPackageNameProperty.GetValues(Proc: TGetStrProc);
626 + var
627 +   StoredProc : TIBStoredProc;
628 +   i : integer;
629 + begin
630 +    StoredProc := GetComponent(0) as TIBStoredProc;
631 +    if StoredProc.Database = nil then
632 +      Exit;
633 +
634 +    with StoredProc do
635 +    try
636 +      for I := 0 to PackageNames.Count - 1 do
637 +        Proc (PackageNames[i]);
638 +    except on E: Exception do
639 +      MessageDlg(E.Message,mtError,[mbOK],0)
640 +    end;
641 + end;
642 +
643 + { TIBIndexDefsProperty }
644 +
645 + procedure TIBIndexDefsProperty.Edit;
646 + var IndexDefs: TIndexDefs;
647 + begin
648 +  IndexDefs := TIndexDefs(GetObjectValue);
649 +  if IndexDefs <> nil then
650 +    IndexDefs.Update;
651 +  inherited Edit;
652 + end;
653 +
654 + { TIBFieldDefsProperty }
655 +
656 + procedure TIBFieldDefsProperty.Edit;
657 + var FieldDefs: TFieldDefs;
658 + begin
659 +  FieldDefs := TFieldDefs(GetObjectValue);
660 +  if FieldDefs <> nil then
661 +    FieldDefs.Update;
662 +  inherited Edit;
663 + end;
664 +
665 + { TIBArrayGridEditor }
666 +
667 + procedure TIBArrayGridEditor.ExecuteVerb(Index: Integer);
668 + begin
669 +  if Index < inherited GetVerbCount then
670 +    inherited ExecuteVerb(Index)
671 +  else
672 +  case Index of
673 +    0: TIBArrayGrid(Component).UpdateLayout;
674 +  end;
675 + end;
676 +
677 + function TIBArrayGridEditor.GetVerb(Index: Integer): string;
678 + begin
679 +  if Index < inherited GetVerbCount then
680 +    Result := inherited GetVerb(Index) else
681 +  begin
682 +    Dec(Index, inherited GetVerbCount);
683 +    case Index of
684 +      0: Result := SIBUpdateLayout;
685 +      1 : Result := SInterbaseExpressVersion ;
686 +    end;
687 +  end;
688 + end;
689 +
690 + function TIBArrayGridEditor.GetVerbCount: Integer;
691 + begin
692 +  Result := 2;
693 + end;
694 +
695 + { TDBLookupPropertiesGridFieldProperty }
696 +
697 + procedure TDBLookupPropertiesGridFieldProperty.FillValues(
698 +  const Values: TStringList);
699 + var
700 +  P: TDBLookupProperties;
701 + begin
702 +  P :=TDBLookupProperties(GetComponent(0));
703 +  if not (P is TDBLookupProperties) then exit;
704 +  LoadDataSourceFields(TIBDynamicGrid(P.Owner.Grid).DataSource, Values);
705 + end;
706 +
707 + { TIBTreeViewFieldProperty }
708 +
709 + procedure TIBTreeViewFieldProperty.FillValues(const Values: TStringList);
710 + var ListSource: TDataSource;
711 + begin
712 +  ListSource :=  TIBTreeView(GetComponent(0)).DataSource;
713 +  LoadDataSourceFields(ListSource, Values);
714 + end;
715 +
716 + { TIBDynamicGridIndexNamesProperty }
717 +
718 + function TIBDynamicGridIndexNamesProperty.GetFieldDefs: TFieldDefs;
719 + var Grid: TIBDynamicGrid;
720 + begin
721 +  Result := nil;
722 +  Grid := TIBDynamicGrid(GetComponent(0));
723 +  if assigned(Grid.DataSource) and assigned(Grid.DataSource.DataSet) then
724 +     Result := Grid.DataSource.DataSet.FieldDefs
725 + end;
726 +
727 + function TIBDynamicGridIndexNamesProperty.GetIndexFieldNames: string;
728 + var Grid: TIBDynamicGrid;
729 + begin
730 +  Grid := TIBDynamicGrid(GetComponent(0));
731 +  Result := Grid.IndexFieldNames
732 + end;
733 +
734 + procedure TIBDynamicGridIndexNamesProperty.SetIndexFieldNames(
735 +  const Value: string);
736 + var Grid: TIBDynamicGrid;
737 + begin
738 +  Grid := TIBDynamicGrid(GetComponent(0));
739 +  Grid.IndexFieldNames := Value
740 + end;
741 +
742 + { TDBDynamicGridFieldProperty }
743 +
744 + procedure TDBDynamicGridFieldProperty.FillValues(const Values: TStringList);
745 + var
746 +  P: TDBLookupProperties;
747 + begin
748 +  P :=TDBLookupProperties(GetComponent(0));
749 +  if not (P is TDBLookupProperties) then exit;
750 +  LoadDataSourceFields(P.ListSource, Values);
751 + end;
752 +
753 + { TIBServiceEditor }
754 +
755 + procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
756 + begin
757 +  if Index < inherited GetVerbCount then
758 +    inherited ExecuteVerb(Index) else
759 +  begin
760 +    Dec(Index, inherited GetVerbCount);
761 +    case Index of
762 +      0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
763 +    end;
764 +  end;
765 + end;
766 +
767 + function TIBServiceEditor.GetVerb(Index: Integer): string;
768 + begin
769 +  if Index < inherited GetVerbCount then
770 +    Result := inherited GetVerb(Index) else
771 +  begin
772 +    Dec(Index, inherited GetVerbCount);
773 +    case Index of
774 +      0: Result := SIBServiceEditor;
775 +      1 : Result := SInterbaseExpressVersion;
776 +    end;
777 +  end;
778 + end;
779 +
780 + function TIBServiceEditor.GetVerbCount: Integer;
781 + begin
782 +  Result := inherited GetVerbCount + 2;
783 + end;
784 +
785 + function TIBFileNameProperty.GetFilter: string;
786 + begin
787 +  Result := SDatabaseFilter; {do not localize}
788   end;
789  
790   { TIBFileNameProperty }
# Line 342 | Line 793 | begin
793    with TOpenDialog.Create(Application) do
794      try
795        InitialDir := ExtractFilePath(GetStrValue);
796 <      Filter := 'Database Files|*.gdb'; {do not localize}
796 >      Filter := GetFilter;
797        if Execute then
798          SetStrValue(FileName);
799      finally
# Line 370 | Line 821 | var
821     i : integer;
822   begin
823      StoredProc := GetComponent(0) as TIBStoredProc;
824 +    if StoredProc.Database = nil then
825 +      Exit;
826 +
827      with StoredProc do
828 +    try
829        for I := 0 to StoredProcedureNames.Count - 1 do
830          Proc (StoredProcedureNames[i]);
831 +    except on E: Exception do
832 +      MessageDlg(E.Message,mtError,[mbOK],0)
833 +    end;
834   end;
835  
836   { TIBTableNameProperty }
837  
838   procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
839   var
840 <   TableName : TIBTable;
840 >   Table : TIBTable;
841     i : integer;
842   begin
843 <  TableName := GetComponent(0) as TIBTable;
844 <  with TableName do
843 >  Table := GetComponent(0) as TIBTable;
844 >   if Table.Database = nil then
845 >      Exit;
846 >  with Table do
847      for I := 0 to TableNames.Count - 1 do
848        Proc (TableNames[i]);
849   end;
850  
851   { TDBStringProperty }
852  
853 + function TDBStringProperty.ConnecttoDB: boolean;
854 + var DataSet: TIBCustomDataSet;
855 + begin
856 +  Result := false;
857 +  DataSet := (GetComponent(0) as TIBCustomDataSet);
858 +  if assigned(Dataset.Database) then
859 +  begin
860 +    try
861 +      DataSet.Database.Connected := true;
862 +    except on E: Exception do
863 +      ShowMessage(E.Message)
864 +    end;
865 +    Result := DataSet.Database.Connected
866 +  end;
867 + end;
868 +
869   function TDBStringProperty.GetAttributes: TPropertyAttributes;
870   begin
871    Result := [paValueList, paSortList, paMultiSelect];
# Line 404 | Line 880 | var
880    I: Integer;
881    Values: TStringList;
882   begin
883 +  if not ConnecttoDB then Exit;
884    Values := TStringList.Create;
885    try
886      GetValueList(Values);
# Line 413 | Line 890 | begin
890    end;
891   end;
892  
893 + procedure TDBStringProperty.Edit;
894 + begin
895 +  if ConnecttoDB then
896 +    inherited Edit;
897 + end;
898 +
899   { Utility Functions }
900  
901   function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
# Line 474 | Line 957 | var
957    Query: TIBQuery;
958   begin
959    Query := GetComponent(0) as TIBQuery;
960 <  if Assigned(Query.Database) and
478 <    IBSelectSQLEditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Modified;
960 >  if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
961   end;
962  
963   { TIBDatasetSQLProperty }
# Line 485 | Line 967 | var
967    IBDataset: TIBDataset;
968   begin
969    IBDataset := GetComponent(0) as TIBDataset;
970 <  if Assigned(IBDataSet.Database) and
489 <     IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.SelectSQL) then Modified;
970 >  if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
971   end;
972  
973   { TIBSQLProperty }
# Line 496 | Line 977 | var
977    IBSQL: TIBSQL;
978   begin
979    IBSQL := GetComponent(0) as TIBSQL;
980 <  if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.Transaction,IBSQL.SQL) then Modified;
980 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
981   end;
982  
983   { TIBUpdateSQLEditor }
# Line 510 | Line 991 | function TIBUpdateSQLEditor.GetVerb(Inde
991   begin
992    case Index of
993      0 : Result := SIBUpdateSQLEditor;
994 <    1: Result := SInterbaseExpressVersion;
994 >    1: Result := SInterbaseExpressVersion ;
995    end;
996   end;
997  
998   function TIBUpdateSQLEditor.GetVerbCount: Integer;
999   begin
1000 <  Result := 2;
1000 >  Result :=  2;
1001   end;
1002  
1003   { TIBDataSetEditor }
1004  
1005   procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
525 var
526  IBDataset: TIBDataset;
1006   begin
1007 +  if Index < inherited GetVerbCount then
1008 +    inherited ExecuteVerb(Index) else
1009 +  begin
1010 +    Dec(Index, inherited GetVerbCount);
1011      case Index of
1012        0:
1013          if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
1014            Designer.Modified;
1015        1: (Component as TIBDataSet).ExecSQL;
1016      end;
1017 +  end;
1018   end;
1019  
1020   function TIBDataSetEditor.GetVerb(Index: Integer): string;
# Line 542 | Line 1026 | begin
1026      case Index of
1027        0: Result := SIBDataSetEditor;
1028        1: Result := SExecute;
1029 <      2: Result := SInterbaseExpressVersion;
1029 >      2: Result := SInterbaseExpressVersion ;
1030      end;
1031    end;
1032   end;
1033  
1034   function TIBDataSetEditor.GetVerbCount: Integer;
1035   begin
1036 <  Result := 3;
1036 >  Result := inherited GetVerbCount + 3;
1037   end;
1038  
1039   { TIBEventListProperty }
# Line 568 | Line 1052 | begin
1052    Events := TStringList.Create;
1053    try
1054      Events.Assign( IBEvents.Events);
1055 <    if EditAlerterEvents( Events) then IBEvents.Events.Assign(Events);
1055 >    if EditAlerterEvents( Events) then
1056 >    begin
1057 >      IBEvents.Events.Assign(Events);
1058 >      Modified
1059 >    end;
1060    finally
1061      Events.Free;
1062    end;
# Line 595 | Line 1083 | begin
1083      Dec(Index, inherited GetVerbCount);
1084      case Index of
1085        0: Result := SIBDatabaseEditor;
1086 <      1 : Result := SInterbaseExpressVersion;
1086 >      1 : Result := SInterbaseExpressVersion ;
1087      end;
1088    end;
1089   end;
# Line 618 | Line 1106 | function TIBTransactionEditor.GetVerb(In
1106   begin
1107    case Index of
1108      0: Result := SIBTransactionEditor;
1109 <    1: Result := SInterbaseExpressVersion;
1109 >    1: Result := SInterbaseExpressVersion ;
1110    end;
1111   end;
1112  
# Line 633 | Line 1121 | procedure TIBQueryEditor.ExecuteVerb(Ind
1121   var
1122    Query: TIBQuery;
1123   begin
1124 +  if Index < inherited GetVerbCount then
1125 +    inherited ExecuteVerb(Index) else
1126 +  begin
1127      Query := Component as TIBQuery;
1128      Dec(Index, inherited GetVerbCount);
1129      case Index of
1130        0: Query.ExecSQL;
1131 <      1: if ibselectsqleditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Designer.Modified;
1131 >      1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
1132      end;
1133 +  end;
1134   end;
1135  
1136   function TIBQueryEditor.GetVerb(Index: Integer): string;
# Line 650 | Line 1142 | begin
1142      case Index of
1143        0: Result := SExecute;
1144        1: Result := SEditSQL;
1145 <      2: Result := SInterbaseExpressVersion;
1145 >      2: Result := SInterbaseExpressVersion ;
1146      end;
1147    end;
1148   end;
1149  
1150   function TIBQueryEditor.GetVerbCount: Integer;
1151   begin
1152 <  Result :=  3;
1152 >  Result := inherited GetVerbCount + 3;
1153   end;
1154  
1155   { TIBStoredProcEditor }
1156  
1157   procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer);
1158   begin
1159 +  if Index < inherited GetVerbCount then
1160 +    inherited ExecuteVerb(Index) else
1161 +  begin
1162 +    Dec(Index, inherited GetVerbCount);
1163      if Index = 0 then (Component as TIBStoredProc).ExecProc;
1164 +  end;
1165   end;
1166  
1167   function TIBStoredProcEditor.GetVerb(Index: Integer): string;
1168   begin
1169 +  if Index < inherited GetVerbCount then
1170 +    Result := inherited GetVerb(Index) else
1171 +  begin
1172 +    Dec(Index, inherited GetVerbCount);
1173      case Index of
1174        0: Result := SExecute;
1175 <      1: Result := SInterbaseExpressVersion;
1175 >      1: Result := SInterbaseExpressVersion ;
1176      end;
1177 +  end;
1178   end;
1179  
1180   function TIBStoredProcEditor.GetVerbCount: Integer;
# Line 680 | Line 1182 | begin
1182    Result := inherited GetVerbCount + 2;
1183   end;
1184  
683 { TIBStoredProcParamsProperty }
684
685 procedure TIBStoredProcParamsProperty.Edit;
686 var
687  StoredProc: TIBStoredProc;
688  Params: TParams;
689 begin
690  StoredProc := (GetComponent(0) as TIBStoredProc);
691  Params := TParams.Create(nil);
692  try
693    StoredProc.CopyParams(Params);
694  finally
695    Params.Free;
696  end;
697  inherited Edit;
698 end;
699 (*
1185   { TIBTableFieldLinkProperty }
1186  
1187   procedure TIBTableFieldLinkProperty.Edit;
1188   begin
1189    FTable := DataSet as TIBTable;
1190 +  if assigned(FTable.Database) then
1191 +    FTable.Database.Connected := true;
1192    inherited Edit;
1193   end;
1194  
1195 + function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
1196 + begin
1197 +  Result :=  FTable.IndexDefs
1198 + end;
1199 +
1200   function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
1201   begin
1202    Result := FTable.IndexFieldNames;
# Line 723 | Line 1215 | end;
1215   procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
1216   begin
1217    FTable.MasterFields := Value;
1218 < end;*)
1218 > end;
1219  
1220   { TIBUpdateSQLProperty }
1221  
# Line 732 | Line 1224 | var
1224    IBDataset: TIBDataset;
1225   begin
1226    IBDataset := GetComponent(0) as TIBDataset;
1227 <  if Assigned(IBDataSet.Database) and
736 <    IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.ModifySQL) then Modified;
1227 >  if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1228   end;
1229  
1230   { TIBUpdateSQLUpdateProperty }
1231  
1232   procedure TIBUpdateSQLUpdateProperty.Edit;
1233   begin
1234 <  if not GetObjects then
1235 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
745 <  else
746 <  if IBModifySQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.ModifySQL) then Modified;
1234 >  GetObjects;
1235 >  if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1236   end;
1237  
1238   { TIBRefreshSQLProperty }
# Line 753 | Line 1242 | var
1242    IBDataset: TIBDataset;
1243   begin
1244    IBDataset := GetComponent(0) as TIBDataset;
1245 <  if Assigned(IBDataSet.Database) and
757 <    IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.RefreshSQL) then Modified;
1245 >  if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1246   end;
1247  
1248   { TIBUpdateSQLRefreshSQLProperty }
1249  
1250   procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1251   begin
1252 <  if not GetObjects then
1253 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
766 <  else
767 <  if IBRefreshSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.RefreshSQL) then Modified;
1252 >  GetObjects;
1253 >  if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
1254   end;
1255  
1256   { TIBDeleteSQLProperty }
1257  
1258   procedure TIBDeleteSQLProperty.Edit;
1259   var
1260 <  IBDataset: TIBDataset;
1260 >  IBDataset: TIBDataSet;
1261   begin
1262 <  IBDataset := GetComponent(0) as TIBDataset;
1263 <  if Assigned(IBDataSet.Database) and
778 <    IBDeleteSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.DeleteSQL) then Modified;
1262 >  IBDataset := GetComponent(0) as TIBDataSet;
1263 >  if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
1264   end;
1265  
1266   { TIBUpdateSQLDeleteProperty }
# Line 787 | Line 1272 | end;
1272  
1273   procedure TIBUpdateSQLDeleteProperty.Edit;
1274   begin
1275 <  if not GetObjects then
1276 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
792 <  else
793 <  if IBDeleteSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.DeleteSQL) then Modified;
1275 >  GetObjects;
1276 >  if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1277   end;
1278  
1279   { TUpdateSQLPropertyEditor }
# Line 801 | Line 1284 | begin
1284    FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
1285    if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
1286      Exit;
1287 +  FDatabase := nil;
1288    if FIBUpdateSQL.DataSet is TIBQuery then
1289    begin
1290      FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
# Line 812 | Line 1296 | end;
1296  
1297   procedure TIBInsertSQLProperty.Edit;
1298   var
1299 <  IBDataset: TIBDataset;
1299 >  IBDataset: TIBDataSet;
1300   begin
1301 <  IBDataset := GetComponent(0) as TIBDataset;
1302 <  if Assigned(IBDataSet.Database) and
819 <    IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.InsertSQL) then Modified;
1301 >  IBDataset := GetComponent(0) as TIBDataSet;
1302 >  if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1303   end;
1304  
1305   { TIBUpdateSQLInsertSQLProperty }
1306  
1307   procedure TIBUpdateSQLInsertSQLProperty.Edit;
1308   begin
1309 <  if not GetObjects then
1310 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
828 <  else
829 <  if IBInsertSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.InsertSQL) then Modified;
1309 >  GetObjects;
1310 >  if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1311   end;
1312  
1313   { TIBGeneratorProperty }
# Line 841 | Line 1322 | begin
1322    if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
1323   end;
1324  
1325 + { TIBSQLEditor }
1326 +
1327 + procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1328 + begin
1329 +  if IBSQLEditor.EditSQL(TIBSQL(Component)) then Modified;
1330 + end;
1331 +
1332 + function TIBSQLEditor.GetVerb(Index: Integer): string;
1333 + begin
1334 +  case Index of
1335 +    0 : Result := SIBSQLEditor;
1336 +    1: Result := SInterbaseExpressVersion ;
1337 +  end;
1338 + end;
1339 +
1340 + function TIBSQLEditor.GetVerbCount: Integer;
1341 + begin
1342 +  Result:= 2
1343 + end;
1344 +
1345 + { TIBSQLSQLPropertyEditor }
1346 +
1347 + procedure TIBSQLSQLPropertyEditor.Edit;
1348 + var
1349 +  IBSQL: TIBSQL;
1350 + begin
1351 +  IBSQL := GetComponent(0) as TIBSQL;
1352 +  if IBSQLEditor.EditSQL(IBSQL) then Modified;
1353 + end;
1354 +
1355   initialization
1356    {$I IBDBReg.lrs}
1357   end.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines