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 45 by tony, Tue Dec 6 10:33:46 2016 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 54 | Line 54 | interface
54  
55   uses SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
56       DB, IBTable, IBDatabase,  IBEventsEditor,  LazarusPackageIntf,
57 <      IBUpdateSQL, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor,
57 >      IBUpdateSQL, IBUpdate, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor,
58       dbFieldLinkPropEditor, dbFieldListPropEditor, IBDialogs;
59  
60   type
# Line 63 | 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 83 | 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 195 | 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  
227    { TIBTableFieldLinkProperty }
# Line 316 | 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 381 | Line 417 | procedure Register;
417  
418   implementation
419  
420 < uses IB, IBQuery, IBStoredProc, IBCustomDataSet, FBMessages,
421 <     IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents, IBTypes,
422 <     IBServices, IBDatabaseEdit, IBTransactionEdit,
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, IBDynamicGrid, IBLookupComboEditBox,
427       IBTreeView, DBControlGrid, ibxscript, IBLocalDBSupport, IBDSDialogs,
428 <     IBArrayGrid;
428 >     IBArrayGrid, IBVersion, IBDataOutput, IBXServiceEditor;
429  
430   const
431    IBPalette1 = 'Firebird'; {do not localize}
432 <  IBPalette2 = 'Firebird Admin'; {do not localize}
432 >  IBPalette2 = 'Firebird Legacy Admin'; {do not localize}
433    IBPalette3 = 'Firebird Data Controls';   {do not localize}
434 <  
434 >  IBPalette4 = 'Firebird Admin'; {do not localize}
435 >
436   resourcestring
437 <   SInterbaseExpressVersion = 'Firebird Express for Lazarus 2.0.0';
437 >   SInterbaseExpressVersion = 'Firebird Express for Lazarus ' + IBX_VERSION;
438     SEditSQL = 'Edit SQL';
439     SIBSQLEditor = 'IBSQL Editor';
440     SIBServiceEditor = 'Edit IB Service';
# Line 407 | Line 444 | const
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, TIBMemoField, TIBArrayField]);
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, TIBXScript, TIBLocalDBSupport]);
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 <
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}
# Line 452 | 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 465 | Line 528 | begin
528    RegisterComponentEditor(TIBSQL, TIBSQLEditor);
529    RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
530    RegisterComponentEditor(TIBArrayGrid, TIBArrayGridEditor);
531 +  RegisterComponentEditor(TIBXServicesConnection, TIBXServiceEditor);
532  
533  
534    {Firebird Data Access Controls}
# Line 476 | Line 540 | begin
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;
# Line 502 | Line 568 | begin
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;
# Line 644 | 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 834 | Line 986 | var
986    IBSQL: TIBSQL;
987   begin
988    IBSQL := GetComponent(0) as TIBSQL;
989 <  if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
989 >  if IBSQLEditor.EditSQL(IBSQL) then Modified;
990   end;
991  
992   { TIBUpdateSQLEditor }
# Line 1039 | Line 1191 | begin
1191    Result := inherited GetVerbCount + 2;
1192   end;
1193  
1042 { TIBStoredProcParamsProperty }
1043
1044 procedure TIBStoredProcParamsProperty.Edit;
1045 var
1046  StoredProc: TIBStoredProc;
1047  Params: TParams;
1048 begin
1049  StoredProc := (GetComponent(0) as TIBStoredProc);
1050  Params := TParams.Create(nil);
1051  try
1052    StoredProc.CopyParams(Params);
1053  finally
1054    Params.Free;
1055  end;
1056  inherited Edit;
1057 end;
1058
1194   { TIBTableFieldLinkProperty }
1195  
1196   procedure TIBTableFieldLinkProperty.Edit;
# Line 1200 | 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;
# Line 1223 | 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