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 15 by tony, Thu Feb 28 16:56:14 2013 UTC vs.
Revision 347 by tony, Mon Sep 20 22:08:20 2021 UTC

# Line 27 | Line 27
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                                                 }
30 > {    Associates Ltd 2011 - 2018                                               }
31   {************************************************************************}
32  
33   unit IBDBReg;
# Line 39 | Line 39 | unit IBDBReg;
39   *)
40   {$A+}                           (* Aligned records: On *)
41   {$B-}                           (* Short circuit boolean expressions: Off *)
42 {$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 47 | Line 46 | unit IBDBReg;
46   {$Q-}                           (* Overflow checks: Off *)
47   {$R-}                           (* Range checks: Off *)
48   {$T+}                           (* Typed address: On *)
50 {$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,
55 > uses SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
56       DB, IBTable, IBDatabase,  IBEventsEditor,  LazarusPackageIntf,
57 <      IBUpdateSQL, IBXConst, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor;
57 >      IBUpdateSQL, IBUpdate, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor,
58 >     dbFieldLinkPropEditor, dbFieldListPropEditor, IBDialogs;
59  
60   type
61  
# Line 64 | 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 84 | 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 92 | 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 126 | 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(TFieldsComponentEditor)
# Line 180 | Line 212 | type
212     function GetVerbCount: Integer; override;
213    end;
214  
215 <  TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
215 >  { TIBXServiceEditor }
216 >
217 >  TIBXServiceEditor = class(TComponentEditor)
218    public
219 <    procedure Edit; override;
219 >    procedure ExecuteVerb(Index: Integer); override;
220 >    function GetVerb(Index: Integer): string; override;
221 >    function GetVerbCount: Integer; override;
222 >  end;
223 >
224 >  TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
225    end;
226 < (*
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 196 | Line 238 | type
238    public
239      procedure Edit; override;
240    end;
241 < *)
241 >
242   { TSQLPropertyEditor }
243  
244    TSQLPropertyEditor = class(TStringsPropertyEditor)
# Line 298 | 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 314 | 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, 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,
426 <     IBSQLEditor, ibserviceeditor, LCLVersion;
427 <
428 <
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 >   SFBLibLoadProblem = 'IBX is unable to locate or otherwise load the Firebird Library - have you remembered to install it?';
448  
449   procedure Register;
450   begin
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;
451 >  AllowUseOfFBLIB := true;
452 >  try
453 >    if not TryIBLoad then
454 >    begin
455 >      MessageDlg(SFBLibLoadProblem,mtError,[mbOK],0);
456 >      Exit;
457 >    end;
458 >  except on E: Exception do
459 >    begin
460 >      MessageDlg(SFBLibLoadProblem + ' - ' + E.Message,mtError,[mbOK],0);
461 >      Exit;
462 >    end;
463    end;
464  
465 <  RegisterNoIcon([TIBStringField, TIBBCDField]);
465 >  RegisterNoIcon([TIBStringField, TIBBCDField, TIBMemoField, TIBArrayField,
466 >    TIBSmallintField, TIBIntegerField, TIBLargeIntField, TIBDateTimeField,
467 >    TIBTimeField]);
468    {$if lcl_fullversion < 01010000}
469    {see http://bugs.freepascal.org/view.php?id=19035 }
470    RegisterNoIcon([TIntegerField]);
471    {$endif}
472    RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet,
473 <   TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBEvents,
473 >   TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBUpdate, TIBEvents,
474       TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
475 <       TIBStoredProc,TIBBatchMove,  TIBTable,TIBExtract]);
476 <  if IBServiceAPIPresent  then
475 >       TIBStoredProc,TIBBatchMove,  TIBTable,TIBExtract, TIBXScript, TIBLocalDBSupport,
476 >       TIBBlockFormatOut,TIBCSVDataOut,TIBInsertStmtsOut]);
477 >  if FirebirdAPI.HasServiceAPI  then
478 >  begin
479 >    RegisterComponents(IBPalette4, [TIBXServicesConnection, TIBXConfigService,
480 >      TIBXClientSideBackupService, TIBXServerSideBackupService,
481 >      TIBXClientSideRestoreService, TIBXServerSideRestoreService,
482 >      TIBXValidationService, TIBXOnlineValidationService, TIBXStatisticalService,
483 >      TIBXLogService, TIBXSecurityService, TIBXServerProperties,
484 >      TIBXLimboTransactionResolutionService,TIBXServicesUserList, TIBXServicesLimboTransactionsList]);
485      RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
486 <      TIBRestoreService, TIBValidationService, TIBStatisticalService,
486 >      TIBRestoreService, TIBValidationService,
487 >      TIBOnlineValidationService, TIBStatisticalService,
488        TIBLogService, TIBSecurityService, TIBServerProperties]);
489 +  end;
490 +
491 +  RegisterComponents(IBPalette3,[TIBLookupComboEditBox,TIBDynamicGrid,TIBTreeView,TDBControlGrid, TIBArrayGrid]);
492 +
493    RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
494 +  RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'FirebirdLibraryPathName', TIBLibraryNameProperty); {do not localize}
495 +  RegisterPropertyEditor(TypeInfo(TIBFileName), TIBXServicesConnection, 'FirebirdLibraryPathName', TIBLibraryNameProperty); {do not localize}
496    RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
497 +  RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'PackageName', TIBPackageNameProperty); {do not localize}
498    RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty);
499    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'TableName', TIBTableNameProperty); {do not localize}
500    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexName', TIBIndexNameProperty); {do not localize}
501    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexFieldNames', TIBIndexFieldNamesProperty); {do not localize}
502 < //  RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
502 >  RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
503 >  RegisterPropertyEditor(TypeInfo(TFieldDefs), TIBTable, 'FieldDefs', TIBFieldDefsProperty); {do not localize}
504 >  RegisterPropertyEditor(TypeInfo(TIndexDefs), TIBTable, 'IndexDefs', TIBIndexDefsProperty); {do not localize}
505    RegisterPropertyEditor(TypeInfo(TStrings), TIBQuery, 'SQL', TIBQuerySQLProperty); {do not localize}
506    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'SelectSQL', TIBDatasetSQLProperty); {do not localize}
507    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'ModifySQL', TIBUpdateSQLProperty); {do not localize}
# Line 367 | Line 513 | begin
513    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize}
514    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize}
515    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize}
516 +  RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdate, 'RefreshSQL', TIBUpdateRefreshSQLProperty); {do not localize}
517    RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize}
518    RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
519    RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
520 +  RegisterPropertyEditor(TypeInfo(TPersistent), TIBTable, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
521  
522    RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor);
523    RegisterComponentEditor(TIBTransaction, TIBTransactionEditor);
# Line 379 | Line 527 | begin
527    RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor);
528    RegisterComponentEditor(TIBSQL, TIBSQLEditor);
529    RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
530 +  RegisterComponentEditor(TIBArrayGrid, TIBArrayGridEditor);
531 +  RegisterComponentEditor(TIBXServicesConnection, TIBXServiceEditor);
532 +
533 +
534 +  {Firebird Data Access Controls}
535 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'KeyField', TDBDynamicGridFieldProperty);
536 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'ListField', TDBDynamicGridFieldProperty);
537 +  RegisterPropertyEditor(TypeInfo(string), TIBDynamicGrid, 'IndexFieldNames', TIBDynamicGridIndexNamesProperty);
538 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'DataFieldName', TDBLookupPropertiesGridFieldProperty);
539 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'KeyField', TIBTreeViewFieldProperty);
540 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'TextField', TIBTreeViewFieldProperty);
541 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ParentField', TIBTreeViewFieldProperty);
542 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'HasChildField', TIBTreeViewFieldProperty);
543 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ImageIndexField', TIBTreeViewFieldProperty);
544 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'SelectedIndexField', TIBTreeViewFieldProperty);
545 +
546 +  IBGUIInterface :=  TIBDSLCLInterface.Create;
547 + end;
548 +
549 + procedure LoadDataSourceFields(DataSource: TDataSource; List: TStrings);
550 + var
551 +  DataSet: TDataSet;
552 +  i: Integer;
553 + begin
554 +  if Assigned(DataSource) then
555 +  begin
556 +    DataSet := DataSource.DataSet;
557 +    if Assigned(DataSet) then
558 +    begin
559 +      if DataSet.Fields.Count > 0 then
560 +        DataSet.GetFieldNames(List)
561 +      else
562 +      begin
563 +        DataSet.FieldDefs.Update;
564 +        for i := 0 to DataSet.FieldDefs.Count - 1 do
565 +          List.Add(DataSet.FieldDefs[i].Name);
566 +      end;
567 +    end;
568 +  end;
569 + end;
570 +
571 + { TIBLibraryNameProperty }
572 +
573 + function TIBLibraryNameProperty.GetFilter: string;
574 + begin
575 +  Result := SLibraryNameFilter; {do not localise}
576 + end;
577 +
578 + { TIBXServiceEditor }
579 +
580 + procedure TIBXServiceEditor.ExecuteVerb(Index: Integer);
581 + begin
582 +  if Index < inherited GetVerbCount then
583 +    inherited ExecuteVerb(Index) else
584 +  begin
585 +    Dec(Index, inherited GetVerbCount);
586 +    case Index of
587 +      0 : if IBXServiceEditor.EditIBXService(TIBXServicesConnection(Component)) then Designer.Modified;
588 +    end;
589 +  end;
590 + end;
591 +
592 + function TIBXServiceEditor.GetVerb(Index: Integer): string;
593 + begin
594 +  if Index < inherited GetVerbCount then
595 +    Result := inherited GetVerb(Index) else
596 +  begin
597 +    Dec(Index, inherited GetVerbCount);
598 +    case Index of
599 +      0: Result := SIBServiceEditor;
600 +      1 : Result := SInterbaseExpressVersion;
601 +    end;
602 +  end;
603 + end;
604 +
605 + function TIBXServiceEditor.GetVerbCount: Integer;
606 + begin
607 +  Result := inherited GetVerbCount + 2;
608 + end;
609 +
610 + { TIBUpdateRefreshSQLProperty }
611 +
612 + function TIBUpdateRefreshSQLProperty.GetObjects: boolean;
613 + begin
614 +  Result := false;
615 +  FIBUpdate := GetComponent(0) as TIBUpdate;
616 +  if not assigned(FIBUpdate) or not assigned(FIBUpdate.DataSet) then
617 +    Exit;
618 +  FDatabase := nil;
619 +  if FIBUpdate.DataSet is TIBQuery then
620 +  begin
621 +    FDatabase := (FIBUpdate.DataSet as TIBQuery).Database;
622 +    Result := true
623 +  end;
624 + end;
625 +
626 + procedure TIBUpdateRefreshSQLProperty.Edit;
627 + begin
628 +  GetObjects;
629 +  if IBRefreshSQLEditor.EditSQL(FIBUpdate.DataSet,FIBUpdate.RefreshSQL) then Modified;
630 + end;
631 +
632 + { TIBPackageNameProperty }
633 +
634 + procedure TIBPackageNameProperty.GetValues(Proc: TGetStrProc);
635 + var
636 +   StoredProc : TIBStoredProc;
637 +   i : integer;
638 + begin
639 +    StoredProc := GetComponent(0) as TIBStoredProc;
640 +    if StoredProc.Database = nil then
641 +      Exit;
642 +
643 +    with StoredProc do
644 +    try
645 +      for I := 0 to PackageNames.Count - 1 do
646 +        Proc (PackageNames[i]);
647 +    except on E: Exception do
648 +      MessageDlg(E.Message,mtError,[mbOK],0)
649 +    end;
650 + end;
651 +
652 + { TIBIndexDefsProperty }
653 +
654 + procedure TIBIndexDefsProperty.Edit;
655 + var IndexDefs: TIndexDefs;
656 + begin
657 +  IndexDefs := TIndexDefs(GetObjectValue);
658 +  if IndexDefs <> nil then
659 +    IndexDefs.Update;
660 +  inherited Edit;
661 + end;
662 +
663 + { TIBFieldDefsProperty }
664 +
665 + procedure TIBFieldDefsProperty.Edit;
666 + var FieldDefs: TFieldDefs;
667 + begin
668 +  FieldDefs := TFieldDefs(GetObjectValue);
669 +  if FieldDefs <> nil then
670 +    FieldDefs.Update;
671 +  inherited Edit;
672 + end;
673 +
674 + { TIBArrayGridEditor }
675 +
676 + procedure TIBArrayGridEditor.ExecuteVerb(Index: Integer);
677 + begin
678 +  if Index < inherited GetVerbCount then
679 +    inherited ExecuteVerb(Index)
680 +  else
681 +  case Index of
682 +    0: TIBArrayGrid(Component).UpdateLayout;
683 +  end;
684 + end;
685 +
686 + function TIBArrayGridEditor.GetVerb(Index: Integer): string;
687 + begin
688 +  if Index < inherited GetVerbCount then
689 +    Result := inherited GetVerb(Index) else
690 +  begin
691 +    Dec(Index, inherited GetVerbCount);
692 +    case Index of
693 +      0: Result := SIBUpdateLayout;
694 +      1 : Result := SInterbaseExpressVersion ;
695 +    end;
696 +  end;
697 + end;
698 +
699 + function TIBArrayGridEditor.GetVerbCount: Integer;
700 + begin
701 +  Result := 2;
702 + end;
703 +
704 + { TDBLookupPropertiesGridFieldProperty }
705 +
706 + procedure TDBLookupPropertiesGridFieldProperty.FillValues(
707 +  const Values: TStringList);
708 + var
709 +  P: TDBLookupProperties;
710 + begin
711 +  P :=TDBLookupProperties(GetComponent(0));
712 +  if not (P is TDBLookupProperties) then exit;
713 +  LoadDataSourceFields(TIBDynamicGrid(P.Owner.Grid).DataSource, Values);
714 + end;
715 +
716 + { TIBTreeViewFieldProperty }
717 +
718 + procedure TIBTreeViewFieldProperty.FillValues(const Values: TStringList);
719 + var ListSource: TDataSource;
720 + begin
721 +  ListSource :=  TIBTreeView(GetComponent(0)).DataSource;
722 +  LoadDataSourceFields(ListSource, Values);
723 + end;
724 +
725 + { TIBDynamicGridIndexNamesProperty }
726 +
727 + function TIBDynamicGridIndexNamesProperty.GetFieldDefs: TFieldDefs;
728 + var Grid: TIBDynamicGrid;
729 + begin
730 +  Result := nil;
731 +  Grid := TIBDynamicGrid(GetComponent(0));
732 +  if assigned(Grid.DataSource) and assigned(Grid.DataSource.DataSet) then
733 +     Result := Grid.DataSource.DataSet.FieldDefs
734 + end;
735 +
736 + function TIBDynamicGridIndexNamesProperty.GetIndexFieldNames: string;
737 + var Grid: TIBDynamicGrid;
738 + begin
739 +  Grid := TIBDynamicGrid(GetComponent(0));
740 +  Result := Grid.IndexFieldNames
741 + end;
742 +
743 + procedure TIBDynamicGridIndexNamesProperty.SetIndexFieldNames(
744 +  const Value: string);
745 + var Grid: TIBDynamicGrid;
746 + begin
747 +  Grid := TIBDynamicGrid(GetComponent(0));
748 +  Grid.IndexFieldNames := Value
749 + end;
750 +
751 + { TDBDynamicGridFieldProperty }
752 +
753 + procedure TDBDynamicGridFieldProperty.FillValues(const Values: TStringList);
754 + var
755 +  P: TDBLookupProperties;
756 + begin
757 +  P :=TDBLookupProperties(GetComponent(0));
758 +  if not (P is TDBLookupProperties) then exit;
759 +  LoadDataSourceFields(P.ListSource, Values);
760   end;
761  
762   { TIBServiceEditor }
# Line 413 | Line 791 | begin
791    Result := inherited GetVerbCount + 2;
792   end;
793  
794 + function TIBFileNameProperty.GetFilter: string;
795 + begin
796 +  Result := SDatabaseFilter; {do not localize}
797 + end;
798 +
799   { TIBFileNameProperty }
800   procedure TIBFileNameProperty.Edit;
801   begin
802    with TOpenDialog.Create(Application) do
803      try
804        InitialDir := ExtractFilePath(GetStrValue);
805 <      Filter := SDatabaseFilter; {do not localize}
805 >      Filter := GetFilter;
806        if Execute then
807          SetStrValue(FileName);
808      finally
# Line 463 | Line 846 | end;
846  
847   procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
848   var
849 <   TableName : TIBTable;
849 >   Table : TIBTable;
850     i : integer;
851   begin
852 <  TableName := GetComponent(0) as TIBTable;
853 <  with TableName do
852 >  Table := GetComponent(0) as TIBTable;
853 >   if Table.Database = nil then
854 >      Exit;
855 >  with Table do
856      for I := 0 to TableNames.Count - 1 do
857        Proc (TableNames[i]);
858   end;
859  
860   { TDBStringProperty }
861  
862 + function TDBStringProperty.ConnecttoDB: boolean;
863 + var DataSet: TIBCustomDataSet;
864 + begin
865 +  Result := false;
866 +  DataSet := (GetComponent(0) as TIBCustomDataSet);
867 +  if assigned(Dataset.Database) then
868 +  begin
869 +    try
870 +      DataSet.Database.Connected := true;
871 +    except on E: Exception do
872 +      ShowMessage(E.Message)
873 +    end;
874 +    Result := DataSet.Database.Connected
875 +  end;
876 + end;
877 +
878   function TDBStringProperty.GetAttributes: TPropertyAttributes;
879   begin
880    Result := [paValueList, paSortList, paMultiSelect];
# Line 488 | Line 889 | var
889    I: Integer;
890    Values: TStringList;
891   begin
892 +  if not ConnecttoDB then Exit;
893    Values := TStringList.Create;
894    try
895      GetValueList(Values);
# Line 497 | Line 899 | begin
899    end;
900   end;
901  
902 + procedure TDBStringProperty.Edit;
903 + begin
904 +  if ConnecttoDB then
905 +    inherited Edit;
906 + end;
907 +
908   { Utility Functions }
909  
910   function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
# Line 558 | Line 966 | var
966    Query: TIBQuery;
967   begin
968    Query := GetComponent(0) as TIBQuery;
969 <  if IBSelectSQLEditor.EditSQL(Query.Database,Query.SQL) then Modified;
969 >  if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
970   end;
971  
972   { TIBDatasetSQLProperty }
# Line 568 | Line 976 | var
976    IBDataset: TIBDataset;
977   begin
978    IBDataset := GetComponent(0) as TIBDataset;
979 <  if IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.SelectSQL) then Modified;
979 >  if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
980   end;
981  
982   { TIBSQLProperty }
# Line 578 | Line 986 | var
986    IBSQL: TIBSQL;
987   begin
988    IBSQL := GetComponent(0) as TIBSQL;
989 <  if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.SQL) then Modified;
989 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
990   end;
991  
992   { TIBUpdateSQLEditor }
# Line 592 | Line 1000 | function TIBUpdateSQLEditor.GetVerb(Inde
1000   begin
1001    case Index of
1002      0 : Result := SIBUpdateSQLEditor;
1003 <    1: Result := SInterbaseExpressVersion;
1003 >    1: Result := SInterbaseExpressVersion ;
1004    end;
1005   end;
1006  
# Line 604 | Line 1012 | end;
1012   { TIBDataSetEditor }
1013  
1014   procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
607 var
608  IBDataset: TIBDataset;
1015   begin
1016    if Index < inherited GetVerbCount then
1017      inherited ExecuteVerb(Index) else
# Line 629 | Line 1035 | begin
1035      case Index of
1036        0: Result := SIBDataSetEditor;
1037        1: Result := SExecute;
1038 <      2: Result := SInterbaseExpressVersion;
1038 >      2: Result := SInterbaseExpressVersion ;
1039      end;
1040    end;
1041   end;
# Line 686 | Line 1092 | begin
1092      Dec(Index, inherited GetVerbCount);
1093      case Index of
1094        0: Result := SIBDatabaseEditor;
1095 <      1 : Result := SInterbaseExpressVersion;
1095 >      1 : Result := SInterbaseExpressVersion ;
1096      end;
1097    end;
1098   end;
# Line 709 | Line 1115 | function TIBTransactionEditor.GetVerb(In
1115   begin
1116    case Index of
1117      0: Result := SIBTransactionEditor;
1118 <    1: Result := SInterbaseExpressVersion;
1118 >    1: Result := SInterbaseExpressVersion ;
1119    end;
1120   end;
1121  
# Line 731 | Line 1137 | begin
1137      Dec(Index, inherited GetVerbCount);
1138      case Index of
1139        0: Query.ExecSQL;
1140 <      1: if ibselectsqleditor.EditSQL(Query.Database,Query.SQL) then Designer.Modified;
1140 >      1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
1141      end;
1142    end;
1143   end;
# Line 745 | Line 1151 | begin
1151      case Index of
1152        0: Result := SExecute;
1153        1: Result := SEditSQL;
1154 <      2: Result := SInterbaseExpressVersion;
1154 >      2: Result := SInterbaseExpressVersion ;
1155      end;
1156    end;
1157   end;
# Line 775 | Line 1181 | begin
1181      Dec(Index, inherited GetVerbCount);
1182      case Index of
1183        0: Result := SExecute;
1184 <      1: Result := SInterbaseExpressVersion;
1184 >      1: Result := SInterbaseExpressVersion ;
1185      end;
1186    end;
1187   end;
# Line 785 | Line 1191 | begin
1191    Result := inherited GetVerbCount + 2;
1192   end;
1193  
788 { TIBStoredProcParamsProperty }
789
790 procedure TIBStoredProcParamsProperty.Edit;
791 var
792  StoredProc: TIBStoredProc;
793  Params: TParams;
794 begin
795  StoredProc := (GetComponent(0) as TIBStoredProc);
796  Params := TParams.Create(nil);
797  try
798    StoredProc.CopyParams(Params);
799  finally
800    Params.Free;
801  end;
802  inherited Edit;
803 end;
804 (*
1194   { TIBTableFieldLinkProperty }
1195  
1196   procedure TIBTableFieldLinkProperty.Edit;
1197   begin
1198    FTable := DataSet as TIBTable;
1199 +  if assigned(FTable.Database) then
1200 +    FTable.Database.Connected := true;
1201    inherited Edit;
1202   end;
1203  
1204 + function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
1205 + begin
1206 +  Result :=  FTable.IndexDefs
1207 + end;
1208 +
1209   function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
1210   begin
1211    Result := FTable.IndexFieldNames;
# Line 828 | Line 1224 | end;
1224   procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
1225   begin
1226    FTable.MasterFields := Value;
1227 < end;*)
1227 > end;
1228  
1229   { TIBUpdateSQLProperty }
1230  
# Line 837 | Line 1233 | var
1233    IBDataset: TIBDataset;
1234   begin
1235    IBDataset := GetComponent(0) as TIBDataset;
1236 <  if IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.ModifySQL) then Modified;
1236 >  if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1237   end;
1238  
1239   { TIBUpdateSQLUpdateProperty }
# Line 845 | Line 1241 | end;
1241   procedure TIBUpdateSQLUpdateProperty.Edit;
1242   begin
1243    GetObjects;
1244 <  if IBModifySQLEditor.EditSQL(FDatabase,FIBUpdateSQL.ModifySQL) then Modified;
1244 >  if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1245   end;
1246  
1247   { TIBRefreshSQLProperty }
# Line 853 | Line 1249 | end;
1249   procedure TIBRefreshSQLProperty.Edit;
1250   var
1251    IBDataset: TIBDataset;
856  aDatabase: TIBDatabase;
1252   begin
1253    IBDataset := GetComponent(0) as TIBDataset;
1254 <  if IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.RefreshSQL) then Modified;
1254 >  if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1255   end;
1256  
1257   { TIBUpdateSQLRefreshSQLProperty }
# Line 864 | Line 1259 | end;
1259   procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1260   begin
1261    GetObjects;
1262 <  if IBRefreshSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.RefreshSQL) then Modified;
1262 >  if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
1263   end;
1264  
1265   { TIBDeleteSQLProperty }
1266  
1267   procedure TIBDeleteSQLProperty.Edit;
1268   var
1269 <  IBDataset: TIBDataset;
1269 >  IBDataset: TIBDataSet;
1270   begin
1271 <  IBDataset := GetComponent(0) as TIBDataset;
1272 <  if IBDeleteSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.DeleteSQL) then Modified;
1271 >  IBDataset := GetComponent(0) as TIBDataSet;
1272 >  if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
1273   end;
1274  
1275   { TIBUpdateSQLDeleteProperty }
# Line 887 | Line 1282 | end;
1282   procedure TIBUpdateSQLDeleteProperty.Edit;
1283   begin
1284    GetObjects;
1285 <  if IBDeleteSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.DeleteSQL) then Modified;
1285 >  if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1286   end;
1287  
1288   { TUpdateSQLPropertyEditor }
# Line 910 | Line 1305 | end;
1305  
1306   procedure TIBInsertSQLProperty.Edit;
1307   var
1308 <  IBDataset: TIBDataset;
1308 >  IBDataset: TIBDataSet;
1309   begin
1310 <  IBDataset := GetComponent(0) as TIBDataset;
1311 <  if IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.InsertSQL) then Modified;
1310 >  IBDataset := GetComponent(0) as TIBDataSet;
1311 >  if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1312   end;
1313  
1314   { TIBUpdateSQLInsertSQLProperty }
# Line 921 | Line 1316 | end;
1316   procedure TIBUpdateSQLInsertSQLProperty.Edit;
1317   begin
1318    GetObjects;
1319 <  if IBInsertSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.InsertSQL) then Modified;
1319 >  if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1320   end;
1321  
1322   { TIBGeneratorProperty }
# Line 940 | Line 1335 | end;
1335  
1336   procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1337   begin
1338 <  if IBSQLEditor.EditIBSQL(TIBSQL(Component)) then Modified;
1338 >  if IBSQLEditor.EditSQL(TIBSQL(Component)) then Modified;
1339   end;
1340  
1341   function TIBSQLEditor.GetVerb(Index: Integer): string;
1342   begin
1343    case Index of
1344      0 : Result := SIBSQLEditor;
1345 <    1: Result := SInterbaseExpressVersion;
1345 >    1: Result := SInterbaseExpressVersion ;
1346    end;
1347   end;
1348  
# Line 963 | Line 1358 | var
1358    IBSQL: TIBSQL;
1359   begin
1360    IBSQL := GetComponent(0) as TIBSQL;
1361 <  if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
1361 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
1362   end;
1363  
1364   initialization

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines