ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/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 315 by tony, Thu Feb 25 11:56:36 2021 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, IBMessages,
421 >     IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents, IBInternals,
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, TIBDateTimeField,
459 >    TIBTimeField]);
460 >  {$if lcl_fullversion < 01010000}
461 >  {see http://bugs.freepascal.org/view.php?id=19035 }
462 >  RegisterNoIcon([TIntegerField]);
463 >  {$endif}
464 >  RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet,
465 >   TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBUpdate, TIBEvents,
466 >     TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
467 >       TIBStoredProc,TIBBatchMove,  TIBTable,TIBExtract, TIBXScript, TIBLocalDBSupport,
468 >       TIBBlockFormatOut,TIBCSVDataOut,TIBInsertStmtsOut]);
469 >  if FirebirdAPI.HasServiceAPI  then
470 >  begin
471 >    RegisterComponents(IBPalette4, [TIBXServicesConnection, TIBXConfigService,
472 >      TIBXClientSideBackupService, TIBXServerSideBackupService,
473 >      TIBXClientSideRestoreService, TIBXServerSideRestoreService,
474 >      TIBXValidationService, TIBXOnlineValidationService, TIBXStatisticalService,
475 >      TIBXLogService, TIBXSecurityService, TIBXServerProperties,
476 >      TIBXLimboTransactionResolutionService,TIBXServicesUserList, TIBXServicesLimboTransactionsList]);
477      RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
478 <      TIBRestoreService, TIBValidationService, TIBStatisticalService,
478 >      TIBRestoreService, TIBValidationService,
479 >      TIBOnlineValidationService, TIBStatisticalService,
480        TIBLogService, TIBSecurityService, TIBServerProperties]);
481 <  RegisterClasses([TIBStringField, TIBBCDField]);
482 < //  RegisterFields([TIBStringField, TIBBCDField]); --not sure if this is needed in lazarus
481 >  end;
482 >
483 >  RegisterComponents(IBPalette3,[TIBLookupComboEditBox,TIBDynamicGrid,TIBTreeView,TDBControlGrid, TIBArrayGrid]);
484 >
485    RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
486 +  RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'FirebirdLibraryPathName', TIBLibraryNameProperty); {do not localize}
487 +  RegisterPropertyEditor(TypeInfo(TIBFileName), TIBXServicesConnection, 'FirebirdLibraryPathName', TIBLibraryNameProperty); {do not localize}
488    RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
489 +  RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'PackageName', TIBPackageNameProperty); {do not localize}
490    RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty);
491    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'TableName', TIBTableNameProperty); {do not localize}
492    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexName', TIBIndexNameProperty); {do not localize}
493    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexFieldNames', TIBIndexFieldNamesProperty); {do not localize}
494 < //  RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
494 >  RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
495 >  RegisterPropertyEditor(TypeInfo(TFieldDefs), TIBTable, 'FieldDefs', TIBFieldDefsProperty); {do not localize}
496 >  RegisterPropertyEditor(TypeInfo(TIndexDefs), TIBTable, 'IndexDefs', TIBIndexDefsProperty); {do not localize}
497    RegisterPropertyEditor(TypeInfo(TStrings), TIBQuery, 'SQL', TIBQuerySQLProperty); {do not localize}
498    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'SelectSQL', TIBDatasetSQLProperty); {do not localize}
499    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'ModifySQL', TIBUpdateSQLProperty); {do not localize}
500    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'InsertSQL', TIBInsertSQLProperty); {do not localize}
501    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'RefreshSQL', TIBRefreshSQLProperty); {do not localize}
502    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'DeleteSQL', TIBDeleteSQLProperty); {do not localize}
503 <  RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLProperty); {do not localize}
503 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLSQLPropertyEditor); {do not localize}
504    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'RefreshSQL', TIBUpdateSQLRefreshSQLProperty); {do not localize}
505    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize}
506    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize}
507    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize}
508 +  RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdate, 'RefreshSQL', TIBUpdateRefreshSQLProperty); {do not localize}
509    RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize}
510 <  RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'Generator', TIBGeneratorProperty);  {do not localize}
510 >  RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
511 >  RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
512 >  RegisterPropertyEditor(TypeInfo(TPersistent), TIBTable, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
513  
514    RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor);
515    RegisterComponentEditor(TIBTransaction, TIBTransactionEditor);
# Line 334 | Line 517 | begin
517    RegisterComponentEditor(TIBDataSet, TIBDataSetEditor);
518    RegisterComponentEditor(TIBQuery, TIBQueryEditor);
519    RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor);
520 +  RegisterComponentEditor(TIBSQL, TIBSQLEditor);
521 +  RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
522 +  RegisterComponentEditor(TIBArrayGrid, TIBArrayGridEditor);
523 +  RegisterComponentEditor(TIBXServicesConnection, TIBXServiceEditor);
524 +
525 +
526 +  {Firebird Data Access Controls}
527 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'KeyField', TDBDynamicGridFieldProperty);
528 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'ListField', TDBDynamicGridFieldProperty);
529 +  RegisterPropertyEditor(TypeInfo(string), TIBDynamicGrid, 'IndexFieldNames', TIBDynamicGridIndexNamesProperty);
530 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'DataFieldName', TDBLookupPropertiesGridFieldProperty);
531 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'KeyField', TIBTreeViewFieldProperty);
532 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'TextField', TIBTreeViewFieldProperty);
533 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ParentField', TIBTreeViewFieldProperty);
534 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'HasChildField', TIBTreeViewFieldProperty);
535 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ImageIndexField', TIBTreeViewFieldProperty);
536 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'SelectedIndexField', TIBTreeViewFieldProperty);
537 +
538 +  IBGUIInterface :=  TIBDSLCLInterface.Create;
539 + end;
540 +
541 + procedure LoadDataSourceFields(DataSource: TDataSource; List: TStrings);
542 + var
543 +  DataSet: TDataSet;
544 +  i: Integer;
545 + begin
546 +  if Assigned(DataSource) then
547 +  begin
548 +    DataSet := DataSource.DataSet;
549 +    if Assigned(DataSet) then
550 +    begin
551 +      if DataSet.Fields.Count > 0 then
552 +        DataSet.GetFieldNames(List)
553 +      else
554 +      begin
555 +        DataSet.FieldDefs.Update;
556 +        for i := 0 to DataSet.FieldDefs.Count - 1 do
557 +          List.Add(DataSet.FieldDefs[i].Name);
558 +      end;
559 +    end;
560 +  end;
561 + end;
562 +
563 + { TIBLibraryNameProperty }
564 +
565 + function TIBLibraryNameProperty.GetFilter: string;
566 + begin
567 +  Result := SLibraryNameFilter; {do not localise}
568 + end;
569 +
570 + { TIBXServiceEditor }
571 +
572 + procedure TIBXServiceEditor.ExecuteVerb(Index: Integer);
573 + begin
574 +  if Index < inherited GetVerbCount then
575 +    inherited ExecuteVerb(Index) else
576 +  begin
577 +    Dec(Index, inherited GetVerbCount);
578 +    case Index of
579 +      0 : if IBXServiceEditor.EditIBXService(TIBXServicesConnection(Component)) then Designer.Modified;
580 +    end;
581 +  end;
582 + end;
583 +
584 + function TIBXServiceEditor.GetVerb(Index: Integer): string;
585 + begin
586 +  if Index < inherited GetVerbCount then
587 +    Result := inherited GetVerb(Index) else
588 +  begin
589 +    Dec(Index, inherited GetVerbCount);
590 +    case Index of
591 +      0: Result := SIBServiceEditor;
592 +      1 : Result := SInterbaseExpressVersion;
593 +    end;
594 +  end;
595 + end;
596 +
597 + function TIBXServiceEditor.GetVerbCount: Integer;
598 + begin
599 +  Result := inherited GetVerbCount + 2;
600 + end;
601 +
602 + { TIBUpdateRefreshSQLProperty }
603 +
604 + function TIBUpdateRefreshSQLProperty.GetObjects: boolean;
605 + begin
606 +  Result := false;
607 +  FIBUpdate := GetComponent(0) as TIBUpdate;
608 +  if not assigned(FIBUpdate) or not assigned(FIBUpdate.DataSet) then
609 +    Exit;
610 +  FDatabase := nil;
611 +  if FIBUpdate.DataSet is TIBQuery then
612 +  begin
613 +    FDatabase := (FIBUpdate.DataSet as TIBQuery).Database;
614 +    Result := true
615 +  end;
616 + end;
617 +
618 + procedure TIBUpdateRefreshSQLProperty.Edit;
619 + begin
620 +  GetObjects;
621 +  if IBRefreshSQLEditor.EditSQL(FIBUpdate.DataSet,FIBUpdate.RefreshSQL) then Modified;
622 + end;
623 +
624 + { TIBPackageNameProperty }
625 +
626 + procedure TIBPackageNameProperty.GetValues(Proc: TGetStrProc);
627 + var
628 +   StoredProc : TIBStoredProc;
629 +   i : integer;
630 + begin
631 +    StoredProc := GetComponent(0) as TIBStoredProc;
632 +    if StoredProc.Database = nil then
633 +      Exit;
634 +
635 +    with StoredProc do
636 +    try
637 +      for I := 0 to PackageNames.Count - 1 do
638 +        Proc (PackageNames[i]);
639 +    except on E: Exception do
640 +      MessageDlg(E.Message,mtError,[mbOK],0)
641 +    end;
642 + end;
643 +
644 + { TIBIndexDefsProperty }
645 +
646 + procedure TIBIndexDefsProperty.Edit;
647 + var IndexDefs: TIndexDefs;
648 + begin
649 +  IndexDefs := TIndexDefs(GetObjectValue);
650 +  if IndexDefs <> nil then
651 +    IndexDefs.Update;
652 +  inherited Edit;
653 + end;
654 +
655 + { TIBFieldDefsProperty }
656 +
657 + procedure TIBFieldDefsProperty.Edit;
658 + var FieldDefs: TFieldDefs;
659 + begin
660 +  FieldDefs := TFieldDefs(GetObjectValue);
661 +  if FieldDefs <> nil then
662 +    FieldDefs.Update;
663 +  inherited Edit;
664 + end;
665 +
666 + { TIBArrayGridEditor }
667 +
668 + procedure TIBArrayGridEditor.ExecuteVerb(Index: Integer);
669 + begin
670 +  if Index < inherited GetVerbCount then
671 +    inherited ExecuteVerb(Index)
672 +  else
673 +  case Index of
674 +    0: TIBArrayGrid(Component).UpdateLayout;
675 +  end;
676 + end;
677 +
678 + function TIBArrayGridEditor.GetVerb(Index: Integer): string;
679 + begin
680 +  if Index < inherited GetVerbCount then
681 +    Result := inherited GetVerb(Index) else
682 +  begin
683 +    Dec(Index, inherited GetVerbCount);
684 +    case Index of
685 +      0: Result := SIBUpdateLayout;
686 +      1 : Result := SInterbaseExpressVersion ;
687 +    end;
688 +  end;
689 + end;
690 +
691 + function TIBArrayGridEditor.GetVerbCount: Integer;
692 + begin
693 +  Result := 2;
694 + end;
695 +
696 + { TDBLookupPropertiesGridFieldProperty }
697 +
698 + procedure TDBLookupPropertiesGridFieldProperty.FillValues(
699 +  const Values: TStringList);
700 + var
701 +  P: TDBLookupProperties;
702 + begin
703 +  P :=TDBLookupProperties(GetComponent(0));
704 +  if not (P is TDBLookupProperties) then exit;
705 +  LoadDataSourceFields(TIBDynamicGrid(P.Owner.Grid).DataSource, Values);
706 + end;
707 +
708 + { TIBTreeViewFieldProperty }
709 +
710 + procedure TIBTreeViewFieldProperty.FillValues(const Values: TStringList);
711 + var ListSource: TDataSource;
712 + begin
713 +  ListSource :=  TIBTreeView(GetComponent(0)).DataSource;
714 +  LoadDataSourceFields(ListSource, Values);
715 + end;
716 +
717 + { TIBDynamicGridIndexNamesProperty }
718 +
719 + function TIBDynamicGridIndexNamesProperty.GetFieldDefs: TFieldDefs;
720 + var Grid: TIBDynamicGrid;
721 + begin
722 +  Result := nil;
723 +  Grid := TIBDynamicGrid(GetComponent(0));
724 +  if assigned(Grid.DataSource) and assigned(Grid.DataSource.DataSet) then
725 +     Result := Grid.DataSource.DataSet.FieldDefs
726 + end;
727 +
728 + function TIBDynamicGridIndexNamesProperty.GetIndexFieldNames: string;
729 + var Grid: TIBDynamicGrid;
730 + begin
731 +  Grid := TIBDynamicGrid(GetComponent(0));
732 +  Result := Grid.IndexFieldNames
733 + end;
734 +
735 + procedure TIBDynamicGridIndexNamesProperty.SetIndexFieldNames(
736 +  const Value: string);
737 + var Grid: TIBDynamicGrid;
738 + begin
739 +  Grid := TIBDynamicGrid(GetComponent(0));
740 +  Grid.IndexFieldNames := Value
741 + end;
742 +
743 + { TDBDynamicGridFieldProperty }
744 +
745 + procedure TDBDynamicGridFieldProperty.FillValues(const Values: TStringList);
746 + var
747 +  P: TDBLookupProperties;
748 + begin
749 +  P :=TDBLookupProperties(GetComponent(0));
750 +  if not (P is TDBLookupProperties) then exit;
751 +  LoadDataSourceFields(P.ListSource, Values);
752 + end;
753 +
754 + { TIBServiceEditor }
755 +
756 + procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
757 + begin
758 +  if Index < inherited GetVerbCount then
759 +    inherited ExecuteVerb(Index) else
760 +  begin
761 +    Dec(Index, inherited GetVerbCount);
762 +    case Index of
763 +      0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
764 +    end;
765 +  end;
766 + end;
767 +
768 + function TIBServiceEditor.GetVerb(Index: Integer): string;
769 + begin
770 +  if Index < inherited GetVerbCount then
771 +    Result := inherited GetVerb(Index) else
772 +  begin
773 +    Dec(Index, inherited GetVerbCount);
774 +    case Index of
775 +      0: Result := SIBServiceEditor;
776 +      1 : Result := SInterbaseExpressVersion;
777 +    end;
778 +  end;
779 + end;
780 +
781 + function TIBServiceEditor.GetVerbCount: Integer;
782 + begin
783 +  Result := inherited GetVerbCount + 2;
784 + end;
785 +
786 + function TIBFileNameProperty.GetFilter: string;
787 + begin
788 +  Result := SDatabaseFilter; {do not localize}
789   end;
790  
791   { TIBFileNameProperty }
# Line 342 | Line 794 | begin
794    with TOpenDialog.Create(Application) do
795      try
796        InitialDir := ExtractFilePath(GetStrValue);
797 <      Filter := 'Database Files|*.gdb'; {do not localize}
797 >      Filter := GetFilter;
798        if Execute then
799          SetStrValue(FileName);
800      finally
# Line 370 | Line 822 | var
822     i : integer;
823   begin
824      StoredProc := GetComponent(0) as TIBStoredProc;
825 +    if StoredProc.Database = nil then
826 +      Exit;
827 +
828      with StoredProc do
829 +    try
830        for I := 0 to StoredProcedureNames.Count - 1 do
831          Proc (StoredProcedureNames[i]);
832 +    except on E: Exception do
833 +      MessageDlg(E.Message,mtError,[mbOK],0)
834 +    end;
835   end;
836  
837   { TIBTableNameProperty }
838  
839   procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
840   var
841 <   TableName : TIBTable;
841 >   Table : TIBTable;
842     i : integer;
843   begin
844 <  TableName := GetComponent(0) as TIBTable;
845 <  with TableName do
844 >  Table := GetComponent(0) as TIBTable;
845 >   if Table.Database = nil then
846 >      Exit;
847 >  with Table do
848      for I := 0 to TableNames.Count - 1 do
849        Proc (TableNames[i]);
850   end;
851  
852   { TDBStringProperty }
853  
854 + function TDBStringProperty.ConnecttoDB: boolean;
855 + var DataSet: TIBCustomDataSet;
856 + begin
857 +  Result := false;
858 +  DataSet := (GetComponent(0) as TIBCustomDataSet);
859 +  if assigned(Dataset.Database) then
860 +  begin
861 +    try
862 +      DataSet.Database.Connected := true;
863 +    except on E: Exception do
864 +      ShowMessage(E.Message)
865 +    end;
866 +    Result := DataSet.Database.Connected
867 +  end;
868 + end;
869 +
870   function TDBStringProperty.GetAttributes: TPropertyAttributes;
871   begin
872    Result := [paValueList, paSortList, paMultiSelect];
# Line 404 | Line 881 | var
881    I: Integer;
882    Values: TStringList;
883   begin
884 +  if not ConnecttoDB then Exit;
885    Values := TStringList.Create;
886    try
887      GetValueList(Values);
# Line 413 | Line 891 | begin
891    end;
892   end;
893  
894 + procedure TDBStringProperty.Edit;
895 + begin
896 +  if ConnecttoDB then
897 +    inherited Edit;
898 + end;
899 +
900   { Utility Functions }
901  
902   function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
# Line 474 | Line 958 | var
958    Query: TIBQuery;
959   begin
960    Query := GetComponent(0) as TIBQuery;
961 <  if Assigned(Query.Database) and
478 <    IBSelectSQLEditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Modified;
961 >  if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
962   end;
963  
964   { TIBDatasetSQLProperty }
# Line 485 | Line 968 | var
968    IBDataset: TIBDataset;
969   begin
970    IBDataset := GetComponent(0) as TIBDataset;
971 <  if Assigned(IBDataSet.Database) and
489 <     IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.SelectSQL) then Modified;
971 >  if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
972   end;
973  
974   { TIBSQLProperty }
# Line 496 | Line 978 | var
978    IBSQL: TIBSQL;
979   begin
980    IBSQL := GetComponent(0) as TIBSQL;
981 <  if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.Transaction,IBSQL.SQL) then Modified;
981 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
982   end;
983  
984   { TIBUpdateSQLEditor }
# Line 510 | Line 992 | function TIBUpdateSQLEditor.GetVerb(Inde
992   begin
993    case Index of
994      0 : Result := SIBUpdateSQLEditor;
995 <    1: Result := SInterbaseExpressVersion;
995 >    1: Result := SInterbaseExpressVersion ;
996    end;
997   end;
998  
999   function TIBUpdateSQLEditor.GetVerbCount: Integer;
1000   begin
1001 <  Result := 2;
1001 >  Result :=  2;
1002   end;
1003  
1004   { TIBDataSetEditor }
1005  
1006   procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
525 var
526  IBDataset: TIBDataset;
1007   begin
1008 +  if Index < inherited GetVerbCount then
1009 +    inherited ExecuteVerb(Index) else
1010 +  begin
1011 +    Dec(Index, inherited GetVerbCount);
1012      case Index of
1013        0:
1014          if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
1015            Designer.Modified;
1016        1: (Component as TIBDataSet).ExecSQL;
1017      end;
1018 +  end;
1019   end;
1020  
1021   function TIBDataSetEditor.GetVerb(Index: Integer): string;
# Line 542 | Line 1027 | begin
1027      case Index of
1028        0: Result := SIBDataSetEditor;
1029        1: Result := SExecute;
1030 <      2: Result := SInterbaseExpressVersion;
1030 >      2: Result := SInterbaseExpressVersion ;
1031      end;
1032    end;
1033   end;
1034  
1035   function TIBDataSetEditor.GetVerbCount: Integer;
1036   begin
1037 <  Result := 3;
1037 >  Result := inherited GetVerbCount + 3;
1038   end;
1039  
1040   { TIBEventListProperty }
# Line 568 | Line 1053 | begin
1053    Events := TStringList.Create;
1054    try
1055      Events.Assign( IBEvents.Events);
1056 <    if EditAlerterEvents( Events) then IBEvents.Events.Assign(Events);
1056 >    if EditAlerterEvents( Events) then
1057 >    begin
1058 >      IBEvents.Events.Assign(Events);
1059 >      Modified
1060 >    end;
1061    finally
1062      Events.Free;
1063    end;
# Line 595 | Line 1084 | begin
1084      Dec(Index, inherited GetVerbCount);
1085      case Index of
1086        0: Result := SIBDatabaseEditor;
1087 <      1 : Result := SInterbaseExpressVersion;
1087 >      1 : Result := SInterbaseExpressVersion ;
1088      end;
1089    end;
1090   end;
# Line 618 | Line 1107 | function TIBTransactionEditor.GetVerb(In
1107   begin
1108    case Index of
1109      0: Result := SIBTransactionEditor;
1110 <    1: Result := SInterbaseExpressVersion;
1110 >    1: Result := SInterbaseExpressVersion ;
1111    end;
1112   end;
1113  
# Line 633 | Line 1122 | procedure TIBQueryEditor.ExecuteVerb(Ind
1122   var
1123    Query: TIBQuery;
1124   begin
1125 +  if Index < inherited GetVerbCount then
1126 +    inherited ExecuteVerb(Index) else
1127 +  begin
1128      Query := Component as TIBQuery;
1129      Dec(Index, inherited GetVerbCount);
1130      case Index of
1131        0: Query.ExecSQL;
1132 <      1: if ibselectsqleditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Designer.Modified;
1132 >      1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
1133      end;
1134 +  end;
1135   end;
1136  
1137   function TIBQueryEditor.GetVerb(Index: Integer): string;
# Line 650 | Line 1143 | begin
1143      case Index of
1144        0: Result := SExecute;
1145        1: Result := SEditSQL;
1146 <      2: Result := SInterbaseExpressVersion;
1146 >      2: Result := SInterbaseExpressVersion ;
1147      end;
1148    end;
1149   end;
1150  
1151   function TIBQueryEditor.GetVerbCount: Integer;
1152   begin
1153 <  Result :=  3;
1153 >  Result := inherited GetVerbCount + 3;
1154   end;
1155  
1156   { TIBStoredProcEditor }
1157  
1158   procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer);
1159   begin
1160 +  if Index < inherited GetVerbCount then
1161 +    inherited ExecuteVerb(Index) else
1162 +  begin
1163 +    Dec(Index, inherited GetVerbCount);
1164      if Index = 0 then (Component as TIBStoredProc).ExecProc;
1165 +  end;
1166   end;
1167  
1168   function TIBStoredProcEditor.GetVerb(Index: Integer): string;
1169   begin
1170 +  if Index < inherited GetVerbCount then
1171 +    Result := inherited GetVerb(Index) else
1172 +  begin
1173 +    Dec(Index, inherited GetVerbCount);
1174      case Index of
1175        0: Result := SExecute;
1176 <      1: Result := SInterbaseExpressVersion;
1176 >      1: Result := SInterbaseExpressVersion ;
1177      end;
1178 +  end;
1179   end;
1180  
1181   function TIBStoredProcEditor.GetVerbCount: Integer;
# Line 680 | Line 1183 | begin
1183    Result := inherited GetVerbCount + 2;
1184   end;
1185  
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 (*
1186   { TIBTableFieldLinkProperty }
1187  
1188   procedure TIBTableFieldLinkProperty.Edit;
1189   begin
1190    FTable := DataSet as TIBTable;
1191 +  if assigned(FTable.Database) then
1192 +    FTable.Database.Connected := true;
1193    inherited Edit;
1194   end;
1195  
1196 + function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
1197 + begin
1198 +  Result :=  FTable.IndexDefs
1199 + end;
1200 +
1201   function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
1202   begin
1203    Result := FTable.IndexFieldNames;
# Line 723 | Line 1216 | end;
1216   procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
1217   begin
1218    FTable.MasterFields := Value;
1219 < end;*)
1219 > end;
1220  
1221   { TIBUpdateSQLProperty }
1222  
# Line 732 | Line 1225 | var
1225    IBDataset: TIBDataset;
1226   begin
1227    IBDataset := GetComponent(0) as TIBDataset;
1228 <  if Assigned(IBDataSet.Database) and
736 <    IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.ModifySQL) then Modified;
1228 >  if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1229   end;
1230  
1231   { TIBUpdateSQLUpdateProperty }
1232  
1233   procedure TIBUpdateSQLUpdateProperty.Edit;
1234   begin
1235 <  if not GetObjects then
1236 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
745 <  else
746 <  if IBModifySQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.ModifySQL) then Modified;
1235 >  GetObjects;
1236 >  if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1237   end;
1238  
1239   { TIBRefreshSQLProperty }
# Line 753 | Line 1243 | var
1243    IBDataset: TIBDataset;
1244   begin
1245    IBDataset := GetComponent(0) as TIBDataset;
1246 <  if Assigned(IBDataSet.Database) and
757 <    IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.RefreshSQL) then Modified;
1246 >  if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1247   end;
1248  
1249   { TIBUpdateSQLRefreshSQLProperty }
1250  
1251   procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1252   begin
1253 <  if not GetObjects then
1254 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
766 <  else
767 <  if IBRefreshSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.RefreshSQL) then Modified;
1253 >  GetObjects;
1254 >  if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
1255   end;
1256  
1257   { TIBDeleteSQLProperty }
1258  
1259   procedure TIBDeleteSQLProperty.Edit;
1260   var
1261 <  IBDataset: TIBDataset;
1261 >  IBDataset: TIBDataSet;
1262   begin
1263 <  IBDataset := GetComponent(0) as TIBDataset;
1264 <  if Assigned(IBDataSet.Database) and
778 <    IBDeleteSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.DeleteSQL) then Modified;
1263 >  IBDataset := GetComponent(0) as TIBDataSet;
1264 >  if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
1265   end;
1266  
1267   { TIBUpdateSQLDeleteProperty }
# Line 787 | Line 1273 | end;
1273  
1274   procedure TIBUpdateSQLDeleteProperty.Edit;
1275   begin
1276 <  if not GetObjects then
1277 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
792 <  else
793 <  if IBDeleteSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.DeleteSQL) then Modified;
1276 >  GetObjects;
1277 >  if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1278   end;
1279  
1280   { TUpdateSQLPropertyEditor }
# Line 801 | Line 1285 | begin
1285    FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
1286    if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
1287      Exit;
1288 +  FDatabase := nil;
1289    if FIBUpdateSQL.DataSet is TIBQuery then
1290    begin
1291      FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
# Line 812 | Line 1297 | end;
1297  
1298   procedure TIBInsertSQLProperty.Edit;
1299   var
1300 <  IBDataset: TIBDataset;
1300 >  IBDataset: TIBDataSet;
1301   begin
1302 <  IBDataset := GetComponent(0) as TIBDataset;
1303 <  if Assigned(IBDataSet.Database) and
819 <    IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.InsertSQL) then Modified;
1302 >  IBDataset := GetComponent(0) as TIBDataSet;
1303 >  if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1304   end;
1305  
1306   { TIBUpdateSQLInsertSQLProperty }
1307  
1308   procedure TIBUpdateSQLInsertSQLProperty.Edit;
1309   begin
1310 <  if not GetObjects then
1311 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
828 <  else
829 <  if IBInsertSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.InsertSQL) then Modified;
1310 >  GetObjects;
1311 >  if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1312   end;
1313  
1314   { TIBGeneratorProperty }
# Line 841 | Line 1323 | begin
1323    if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
1324   end;
1325  
1326 + { TIBSQLEditor }
1327 +
1328 + procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1329 + begin
1330 +  if IBSQLEditor.EditSQL(TIBSQL(Component)) then Modified;
1331 + end;
1332 +
1333 + function TIBSQLEditor.GetVerb(Index: Integer): string;
1334 + begin
1335 +  case Index of
1336 +    0 : Result := SIBSQLEditor;
1337 +    1: Result := SInterbaseExpressVersion ;
1338 +  end;
1339 + end;
1340 +
1341 + function TIBSQLEditor.GetVerbCount: Integer;
1342 + begin
1343 +  Result:= 2
1344 + end;
1345 +
1346 + { TIBSQLSQLPropertyEditor }
1347 +
1348 + procedure TIBSQLSQLPropertyEditor.Edit;
1349 + var
1350 +  IBSQL: TIBSQL;
1351 + begin
1352 +  IBSQL := GetComponent(0) as TIBSQL;
1353 +  if IBSQLEditor.EditSQL(IBSQL) then Modified;
1354 + end;
1355 +
1356   initialization
1357    {$I IBDBReg.lrs}
1358   end.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines