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 7 by tony, Sun Aug 5 18:28:19 2012 UTC vs.
Revision 263 by tony, Thu Dec 6 15:55:01 2018 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 < (*
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 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, 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,
426 <     IBSQLEditor, ibserviceeditor;
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  
448   procedure Register;
449   begin
450 <  if not TryIBLoad then Exit;
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]);
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, TIBEvents,
464 >   TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBUpdate, TIBEvents,
465       TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
466 <       TIBStoredProc,TIBBatchMove,  TIBTable,TIBExtract]);
467 <  if IBServiceAPIPresent  then
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 +  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}
# Line 360 | Line 504 | begin
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, '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 372 | Line 518 | begin
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 }
# Line 406 | Line 782 | 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 }
791   procedure TIBFileNameProperty.Edit;
792   begin
793    with TOpenDialog.Create(Application) do
794      try
795        InitialDir := ExtractFilePath(GetStrValue);
796 <      Filter := SDatabaseFilter; {do not localize}
796 >      Filter := GetFilter;
797        if Execute then
798          SetStrValue(FileName);
799      finally
# Line 456 | Line 837 | end;
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 481 | 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 490 | 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 551 | Line 957 | var
957    Query: TIBQuery;
958   begin
959    Query := GetComponent(0) as TIBQuery;
960 <  if IBSelectSQLEditor.EditSQL(Query.Database,Query.SQL) then Modified;
960 >  if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
961   end;
962  
963   { TIBDatasetSQLProperty }
# Line 561 | Line 967 | var
967    IBDataset: TIBDataset;
968   begin
969    IBDataset := GetComponent(0) as TIBDataset;
970 <  if IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.SelectSQL) then Modified;
970 >  if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
971   end;
972  
973   { TIBSQLProperty }
# Line 571 | Line 977 | var
977    IBSQL: TIBSQL;
978   begin
979    IBSQL := GetComponent(0) as TIBSQL;
980 <  if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.SQL) then Modified;
980 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
981   end;
982  
983   { TIBUpdateSQLEditor }
# Line 585 | 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  
# Line 597 | Line 1003 | end;
1003   { TIBDataSetEditor }
1004  
1005   procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
600 var
601  IBDataset: TIBDataset;
1006   begin
1007    if Index < inherited GetVerbCount then
1008      inherited ExecuteVerb(Index) else
# Line 622 | 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;
# Line 679 | 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 702 | 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 724 | Line 1128 | begin
1128      Dec(Index, inherited GetVerbCount);
1129      case Index of
1130        0: Query.ExecSQL;
1131 <      1: if ibselectsqleditor.EditSQL(Query.Database,Query.SQL) then Designer.Modified;
1131 >      1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
1132      end;
1133    end;
1134   end;
# Line 738 | 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;
# Line 768 | Line 1172 | 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;
# Line 778 | Line 1182 | begin
1182    Result := inherited GetVerbCount + 2;
1183   end;
1184  
781 { TIBStoredProcParamsProperty }
782
783 procedure TIBStoredProcParamsProperty.Edit;
784 var
785  StoredProc: TIBStoredProc;
786  Params: TParams;
787 begin
788  StoredProc := (GetComponent(0) as TIBStoredProc);
789  Params := TParams.Create(nil);
790  try
791    StoredProc.CopyParams(Params);
792  finally
793    Params.Free;
794  end;
795  inherited Edit;
796 end;
797 (*
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 821 | 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 830 | Line 1224 | var
1224    IBDataset: TIBDataset;
1225   begin
1226    IBDataset := GetComponent(0) as TIBDataset;
1227 <  if IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.ModifySQL) then Modified;
1227 >  if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1228   end;
1229  
1230   { TIBUpdateSQLUpdateProperty }
# Line 838 | Line 1232 | end;
1232   procedure TIBUpdateSQLUpdateProperty.Edit;
1233   begin
1234    GetObjects;
1235 <  if IBModifySQLEditor.EditSQL(FDatabase,FIBUpdateSQL.ModifySQL) then Modified;
1235 >  if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1236   end;
1237  
1238   { TIBRefreshSQLProperty }
# Line 846 | Line 1240 | end;
1240   procedure TIBRefreshSQLProperty.Edit;
1241   var
1242    IBDataset: TIBDataset;
849  aDatabase: TIBDatabase;
1243   begin
1244    IBDataset := GetComponent(0) as TIBDataset;
1245 <  if IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.RefreshSQL) then Modified;
1245 >  if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1246   end;
1247  
1248   { TIBUpdateSQLRefreshSQLProperty }
# Line 857 | Line 1250 | end;
1250   procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1251   begin
1252    GetObjects;
1253 <  if IBRefreshSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.RefreshSQL) then Modified;
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 IBDeleteSQLEditor.EditSQL(IBDataSet.Database,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 880 | Line 1273 | end;
1273   procedure TIBUpdateSQLDeleteProperty.Edit;
1274   begin
1275    GetObjects;
1276 <  if IBDeleteSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.DeleteSQL) then Modified;
1276 >  if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1277   end;
1278  
1279   { TUpdateSQLPropertyEditor }
# Line 903 | 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 IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.InsertSQL) then Modified;
1301 >  IBDataset := GetComponent(0) as TIBDataSet;
1302 >  if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1303   end;
1304  
1305   { TIBUpdateSQLInsertSQLProperty }
# Line 914 | Line 1307 | end;
1307   procedure TIBUpdateSQLInsertSQLProperty.Edit;
1308   begin
1309    GetObjects;
1310 <  if IBInsertSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.InsertSQL) then Modified;
1310 >  if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1311   end;
1312  
1313   { TIBGeneratorProperty }
# Line 933 | Line 1326 | end;
1326  
1327   procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1328   begin
1329 <  if IBSQLEditor.EditIBSQL(TIBSQL(Component)) then Modified;
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;
1336 >    1: Result := SInterbaseExpressVersion ;
1337    end;
1338   end;
1339  
# Line 956 | Line 1349 | var
1349    IBSQL: TIBSQL;
1350   begin
1351    IBSQL := GetComponent(0) as TIBSQL;
1352 <  if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
1352 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
1353   end;
1354  
1355   initialization

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines