ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/design/IBDBReg.pas
(Generate patch)

Comparing ibx/trunk/design/IBDBReg.pas (file contents):
Revision 5 by tony, Fri Feb 18 16:26:16 2011 UTC vs.
Revision 39 by tony, Tue May 17 08:14:52 2016 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                                                 }
31   {************************************************************************}
32  
33   unit IBDBReg;
# Line 50 | Line 54 | unit IBDBReg;
54  
55   interface
56  
57 < uses {Windows,} SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
58 <     DB, IBTable, IBDatabase,  IBEventsEditor,
59 <      IBUpdateSQL, IBXConst, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor;
57 > uses SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
58 >     DB, IBTable, IBDatabase,  IBEventsEditor,  LazarusPackageIntf,
59 >      IBUpdateSQL, IBXConst, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor,
60 >     dbFieldLinkPropEditor, dbFieldListPropEditor, IBDialogs;
61  
62   type
63  
# Line 88 | Line 93 | type
93      procedure GetValues(Proc: TGetStrProc); override;
94    end;
95  
96 +  { TDBStringProperty }
97 +
98    TDBStringProperty = class(TStringProperty)
99 +  private
100 +    function ConnecttoDB: boolean;
101    public
102      function GetAttributes: TPropertyAttributes; override;
103      procedure GetValueList(List: TStrings); virtual;
104      procedure GetValues(Proc: TGetStrProc); override;
105 +    procedure Edit; override;
106    end;
107  
108 +  { TIBIndexFieldNamesProperty }
109 +
110    TIBIndexFieldNamesProperty = class(TDBStringProperty)
111    public
112      procedure GetValueList(List: TStrings); override;
# Line 124 | Line 136 | type
136  
137   { TIBQueryEditor }
138  
139 <  TIBQueryEditor = class(TComponentEditor)
139 >  TIBQueryEditor = class(TFieldsComponentEditor)
140    public
141      procedure ExecuteVerb(Index: Integer); override;
142      function GetVerb(Index: Integer): string; override;
# Line 133 | Line 145 | type
145  
146   { TIBStoredProcEditor }
147  
148 <  TIBStoredProcEditor = class(TComponentEditor)
148 >  TIBStoredProcEditor = class(TFieldsComponentEditor)
149    public
150      procedure ExecuteVerb(Index: Integer); override;
151      function GetVerb(Index: Integer): string; override;
# Line 142 | Line 154 | type
154  
155   { TIBDataSetEditor }
156  
157 <  TIBDataSetEditor = class(TComponentEditor)
157 >  TIBDataSetEditor = class(TFieldsComponentEditor)
158    public
159      procedure ExecuteVerb(Index: Integer); override;
160      function GetVerb(Index: Integer): string; override;
# Line 158 | Line 170 | type
170     function GetVerbCount: Integer; override;
171    end;
172  
173 + { TIBSQLEditor }
174 +
175 +  TIBSQLEditor  = class(TComponentEditor)
176 +  public
177 +    procedure ExecuteVerb(Index: Integer); override;
178 +    function GetVerb(Index: Integer): string; override;
179 +   function GetVerbCount: Integer; override;
180 +  end;
181 +
182 + { TIBServiceEditor}
183 +
184 +  TIBServiceEditor = class(TComponentEditor)
185 +  public
186 +    procedure ExecuteVerb(Index: Integer); override;
187 +    function GetVerb(Index: Integer): string; override;
188 +   function GetVerbCount: Integer; override;
189 +  end;
190 +
191    TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
192    public
193      procedure Edit; override;
194    end;
195 < (*
195 >
196 >  { TIBTableFieldLinkProperty }
197 >
198    TIBTableFieldLinkProperty = class(TFieldLinkProperty)
199    private
200      FTable: TIBTable;
201    protected
202 +    function GetIndexDefs: TIndexDefs; override;
203      function GetIndexFieldNames: string; override;
204      function GetMasterFields: string; override;
205      procedure SetIndexFieldNames(const Value: string); override;
# Line 174 | Line 207 | type
207    public
208      procedure Edit; override;
209    end;
210 < *)
210 >
211   { TSQLPropertyEditor }
212  
213    TSQLPropertyEditor = class(TStringsPropertyEditor)
# Line 189 | Line 222 | type
222      procedure Edit; override;
223    end;
224  
225 + {TIBSQLSQLPropertyEditor }
226 +
227 +  TIBSQLSQLPropertyEditor = class(TSQLPropertyEditor)
228 +  public
229 +    procedure Edit; override;
230 +  end;
231 +
232   { TIBDatasetSQLProperty }
233  
234    TIBDatasetSQLProperty = class(TSQLPropertyEditor)
# Line 285 | Line 325 | type
325      procedure Edit; override;
326    end;
327  
328 +  { TDBDynamicGridFieldProperty }
329 +
330 +  TDBDynamicGridFieldProperty = class(TFieldProperty)
331 +  public
332 +    procedure FillValues(const Values: TStringList); override;
333 +  end;
334 +
335 +  { TDBLookupPropertiesGridFieldProperty }
336 +
337 +  TDBLookupPropertiesGridFieldProperty = class(TFieldProperty)
338 +  public
339 +    procedure FillValues(const Values: TStringList); override;
340 +  end;
341 +
342 +  { TIBTreeViewFieldProperty }
343 +
344 +  TIBTreeViewFieldProperty = class(TFieldProperty)
345 +  public
346 +    procedure FillValues(const Values: TStringList); override;
347 +  end;
348 +
349 +  { TIBDynamicGridIndexNamesProperty }
350 +
351 +  TIBDynamicGridIndexNamesProperty = class(TIndexFieldNamesProperty)
352 +  protected
353 +    function GetFieldDefs: TFieldDefs; override;
354 +    function GetIndexFieldNames: string; override;
355 +    procedure SetIndexFieldNames(const Value: string); override;
356 +  end;
357 +
358 +
359 +
360   procedure Register;
361  
362   implementation
363  
364   uses IB, IBQuery, IBStoredProc, IBCustomDataSet,
365 <     IBIntf, IBSQL, (*IBSQLMonitor,*) IBDatabaseInfo, IBEvents,
366 <     IBServices, (*IBInstall,*) IBDatabaseEdit, IBTransactionEdit,
367 <     IBBatchMove, DBLoginDlg, IBExtract,LResources, IBSelectSQLEditor,
365 >     IBIntf, IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents,
366 >     IBServices, IBDatabaseEdit, IBTransactionEdit,
367 >     IBBatchMove, IBExtract,LResources, IBSelectSQLEditor,
368       IBModifySQLEditor,IBDeleteSQLEditor,IBRefreshSQLEditor,
369 <     IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor;
369 >     IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor,
370 >     IBSQLEditor, ibserviceeditor, LCLVersion, IBDynamicGrid, IBLookupComboEditBox,
371 >     IBTreeView, DBControlGrid, ibxscript, IBLocalDBSupport, IBDSDialogs;
372 >
373 >
374  
375   procedure Register;
376   begin
377 <  RegisterComponents(IBPalette1, [TIBTable, TIBQuery,
378 <    TIBStoredProc, TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBBatchMove,
379 <    TIBDataSet, TIBSQL, TIBDatabaseInfo, (*TIBSQLMonitor,*) TIBEvents, TIBExtract]);
380 <  if (TryIBLoad) and IBServiceAPIPresent  then
377 >  if not TryIBLoad then
378 >  begin
379 >    MessageDlg('IBX is unable to locate the Firebird Library - have you remembered to install it?',mtError,[mbOK],0);
380 >    Exit;
381 >  end;
382 >
383 >  RegisterNoIcon([TIBStringField, TIBBCDField, TIBMemoField]);
384 >  {$if lcl_fullversion < 01010000}
385 >  {see http://bugs.freepascal.org/view.php?id=19035 }
386 >  RegisterNoIcon([TIntegerField]);
387 >  {$endif}
388 >  RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet,
389 >   TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBEvents,
390 >     TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
391 >       TIBStoredProc,TIBBatchMove,  TIBTable,TIBExtract, TIBXScript, TIBLocalDBSupport]);
392 >  if IBServiceAPIPresent  then
393      RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
394        TIBRestoreService, TIBValidationService, TIBStatisticalService,
395        TIBLogService, TIBSecurityService, TIBServerProperties]);
396 <  RegisterClasses([TIBStringField, TIBBCDField]);
397 < //  RegisterFields([TIBStringField, TIBBCDField]); --not sure if this is needed in lazarus
396 >
397 >
398 >  RegisterComponents(IBPalette3,[TIBLookupComboEditBox,TIBDynamicGrid,TIBTreeView,TDBControlGrid]);
399    RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
400    RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
401    RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty);
402    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'TableName', TIBTableNameProperty); {do not localize}
403    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexName', TIBIndexNameProperty); {do not localize}
404    RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexFieldNames', TIBIndexFieldNamesProperty); {do not localize}
405 < //  RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
405 >  RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
406    RegisterPropertyEditor(TypeInfo(TStrings), TIBQuery, 'SQL', TIBQuerySQLProperty); {do not localize}
407    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'SelectSQL', TIBDatasetSQLProperty); {do not localize}
408    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'ModifySQL', TIBUpdateSQLProperty); {do not localize}
409    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'InsertSQL', TIBInsertSQLProperty); {do not localize}
410    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'RefreshSQL', TIBRefreshSQLProperty); {do not localize}
411    RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'DeleteSQL', TIBDeleteSQLProperty); {do not localize}
412 <  RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLProperty); {do not localize}
412 >  RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLSQLPropertyEditor); {do not localize}
413    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'RefreshSQL', TIBUpdateSQLRefreshSQLProperty); {do not localize}
414    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize}
415    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize}
416    RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize}
417    RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize}
418 <  RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'Generator', TIBGeneratorProperty);  {do not localize}
418 >  RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
419 >  RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty);  {do not localize}
420  
421    RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor);
422    RegisterComponentEditor(TIBTransaction, TIBTransactionEditor);
# Line 334 | Line 424 | begin
424    RegisterComponentEditor(TIBDataSet, TIBDataSetEditor);
425    RegisterComponentEditor(TIBQuery, TIBQueryEditor);
426    RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor);
427 +  RegisterComponentEditor(TIBSQL, TIBSQLEditor);
428 +  RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
429 +
430 +
431 +  {Firebird Data Access Controls}
432 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'KeyField', TDBDynamicGridFieldProperty);
433 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'ListField', TDBDynamicGridFieldProperty);
434 +  RegisterPropertyEditor(TypeInfo(string), TIBDynamicGrid, 'IndexFieldNames', TIBDynamicGridIndexNamesProperty);
435 +  RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'DataFieldName', TDBLookupPropertiesGridFieldProperty);
436 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'KeyField', TIBTreeViewFieldProperty);
437 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'TextField', TIBTreeViewFieldProperty);
438 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ParentField', TIBTreeViewFieldProperty);
439 +  RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'HasChildField', TIBTreeViewFieldProperty);
440 +
441 +  IBGUIInterface :=  TIBDSLCLInterface.Create;
442 + end;
443 +
444 + procedure LoadDataSourceFields(DataSource: TDataSource; List: TStrings);
445 + var
446 +  DataSet: TDataSet;
447 +  i: Integer;
448 + begin
449 +  if Assigned(DataSource) then
450 +  begin
451 +    DataSet := DataSource.DataSet;
452 +    if Assigned(DataSet) then
453 +    begin
454 +      if DataSet.Fields.Count > 0 then
455 +        DataSet.GetFieldNames(List)
456 +      else
457 +      begin
458 +        DataSet.FieldDefs.Update;
459 +        for i := 0 to DataSet.FieldDefs.Count - 1 do
460 +          List.Add(DataSet.FieldDefs[i].Name);
461 +      end;
462 +    end;
463 +  end;
464 + end;
465 +
466 + { TDBLookupPropertiesGridFieldProperty }
467 +
468 + procedure TDBLookupPropertiesGridFieldProperty.FillValues(
469 +  const Values: TStringList);
470 + var
471 +  P: TDBLookupProperties;
472 + begin
473 +  P :=TDBLookupProperties(GetComponent(0));
474 +  if not (P is TDBLookupProperties) then exit;
475 +  LoadDataSourceFields(TIBDynamicGrid(P.Owner.Grid).DataSource, Values);
476 + end;
477 +
478 + { TIBTreeViewFieldProperty }
479 +
480 + procedure TIBTreeViewFieldProperty.FillValues(const Values: TStringList);
481 + var ListSource: TDataSource;
482 + begin
483 +  ListSource :=  TIBTreeView(GetComponent(0)).DataSource;
484 +  LoadDataSourceFields(ListSource, Values);
485 + end;
486 +
487 + { TIBDynamicGridIndexNamesProperty }
488 +
489 + function TIBDynamicGridIndexNamesProperty.GetFieldDefs: TFieldDefs;
490 + var Grid: TIBDynamicGrid;
491 + begin
492 +  Result := nil;
493 +  Grid := TIBDynamicGrid(GetComponent(0));
494 +  if assigned(Grid.DataSource) and assigned(Grid.DataSource.DataSet) then
495 +     Result := Grid.DataSource.DataSet.FieldDefs
496 + end;
497 +
498 + function TIBDynamicGridIndexNamesProperty.GetIndexFieldNames: string;
499 + var Grid: TIBDynamicGrid;
500 + begin
501 +  Grid := TIBDynamicGrid(GetComponent(0));
502 +  Result := Grid.IndexFieldNames
503 + end;
504 +
505 + procedure TIBDynamicGridIndexNamesProperty.SetIndexFieldNames(
506 +  const Value: string);
507 + var Grid: TIBDynamicGrid;
508 + begin
509 +  Grid := TIBDynamicGrid(GetComponent(0));
510 +  Grid.IndexFieldNames := Value
511 + end;
512 +
513 + { TDBDynamicGridFieldProperty }
514 +
515 + procedure TDBDynamicGridFieldProperty.FillValues(const Values: TStringList);
516 + var
517 +  P: TDBLookupProperties;
518 + begin
519 +  P :=TDBLookupProperties(GetComponent(0));
520 +  if not (P is TDBLookupProperties) then exit;
521 +  LoadDataSourceFields(P.ListSource, Values);
522 + end;
523 +
524 + { TIBServiceEditor }
525 +
526 + procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
527 + begin
528 +  if Index < inherited GetVerbCount then
529 +    inherited ExecuteVerb(Index) else
530 +  begin
531 +    Dec(Index, inherited GetVerbCount);
532 +    case Index of
533 +      0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
534 +    end;
535 +  end;
536 + end;
537 +
538 + function TIBServiceEditor.GetVerb(Index: Integer): string;
539 + begin
540 +  if Index < inherited GetVerbCount then
541 +    Result := inherited GetVerb(Index) else
542 +  begin
543 +    Dec(Index, inherited GetVerbCount);
544 +    case Index of
545 +      0: Result := SIBServiceEditor;
546 +      1 : Result := SInterbaseExpressVersion;
547 +    end;
548 +  end;
549 + end;
550 +
551 + function TIBServiceEditor.GetVerbCount: Integer;
552 + begin
553 +  Result := inherited GetVerbCount + 2;
554   end;
555  
556   { TIBFileNameProperty }
# Line 342 | Line 559 | begin
559    with TOpenDialog.Create(Application) do
560      try
561        InitialDir := ExtractFilePath(GetStrValue);
562 <      Filter := 'Database Files|*.gdb'; {do not localize}
562 >      Filter := SDatabaseFilter; {do not localize}
563        if Execute then
564          SetStrValue(FileName);
565      finally
# Line 370 | Line 587 | var
587     i : integer;
588   begin
589      StoredProc := GetComponent(0) as TIBStoredProc;
590 +    if StoredProc.Database = nil then
591 +      Exit;
592 +
593      with StoredProc do
594 +    try
595        for I := 0 to StoredProcedureNames.Count - 1 do
596          Proc (StoredProcedureNames[i]);
597 +    except on E: Exception do
598 +      MessageDlg(E.Message,mtError,[mbOK],0)
599 +    end;
600   end;
601  
602   { TIBTableNameProperty }
603  
604   procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
605   var
606 <   TableName : TIBTable;
606 >   Table : TIBTable;
607     i : integer;
608   begin
609 <  TableName := GetComponent(0) as TIBTable;
610 <  with TableName do
609 >  Table := GetComponent(0) as TIBTable;
610 >   if Table.Database = nil then
611 >      Exit;
612 >  with Table do
613      for I := 0 to TableNames.Count - 1 do
614        Proc (TableNames[i]);
615   end;
616  
617   { TDBStringProperty }
618  
619 + function TDBStringProperty.ConnecttoDB: boolean;
620 + var DataSet: TIBCustomDataSet;
621 + begin
622 +  Result := false;
623 +  DataSet := (GetComponent(0) as TIBCustomDataSet);
624 +  if assigned(Dataset.Database) then
625 +  begin
626 +    try
627 +      DataSet.Database.Connected := true;
628 +    except on E: Exception do
629 +      ShowMessage(E.Message)
630 +    end;
631 +    Result := DataSet.Database.Connected
632 +  end;
633 + end;
634 +
635   function TDBStringProperty.GetAttributes: TPropertyAttributes;
636   begin
637    Result := [paValueList, paSortList, paMultiSelect];
# Line 404 | Line 646 | var
646    I: Integer;
647    Values: TStringList;
648   begin
649 +  if not ConnecttoDB then Exit;
650    Values := TStringList.Create;
651    try
652      GetValueList(Values);
# Line 413 | Line 656 | begin
656    end;
657   end;
658  
659 + procedure TDBStringProperty.Edit;
660 + begin
661 +  if ConnecttoDB then
662 +    inherited Edit;
663 + end;
664 +
665   { Utility Functions }
666  
667   function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
# Line 474 | Line 723 | var
723    Query: TIBQuery;
724   begin
725    Query := GetComponent(0) as TIBQuery;
726 <  if Assigned(Query.Database) and
478 <    IBSelectSQLEditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Modified;
726 >  if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
727   end;
728  
729   { TIBDatasetSQLProperty }
# Line 485 | Line 733 | var
733    IBDataset: TIBDataset;
734   begin
735    IBDataset := GetComponent(0) as TIBDataset;
736 <  if Assigned(IBDataSet.Database) and
489 <     IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.SelectSQL) then Modified;
736 >  if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
737   end;
738  
739   { TIBSQLProperty }
# Line 496 | Line 743 | var
743    IBSQL: TIBSQL;
744   begin
745    IBSQL := GetComponent(0) as TIBSQL;
746 <  if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.Transaction,IBSQL.SQL) then Modified;
746 >  if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
747   end;
748  
749   { TIBUpdateSQLEditor }
# Line 516 | Line 763 | end;
763  
764   function TIBUpdateSQLEditor.GetVerbCount: Integer;
765   begin
766 <  Result := 2;
766 >  Result :=  2;
767   end;
768  
769   { TIBDataSetEditor }
# Line 525 | Line 772 | procedure TIBDataSetEditor.ExecuteVerb(I
772   var
773    IBDataset: TIBDataset;
774   begin
775 +  if Index < inherited GetVerbCount then
776 +    inherited ExecuteVerb(Index) else
777 +  begin
778 +    Dec(Index, inherited GetVerbCount);
779      case Index of
780        0:
781          if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
782            Designer.Modified;
783        1: (Component as TIBDataSet).ExecSQL;
784      end;
785 +  end;
786   end;
787  
788   function TIBDataSetEditor.GetVerb(Index: Integer): string;
# Line 549 | Line 801 | end;
801  
802   function TIBDataSetEditor.GetVerbCount: Integer;
803   begin
804 <  Result := 3;
804 >  Result := inherited GetVerbCount + 3;
805   end;
806  
807   { TIBEventListProperty }
# Line 568 | Line 820 | begin
820    Events := TStringList.Create;
821    try
822      Events.Assign( IBEvents.Events);
823 <    if EditAlerterEvents( Events) then IBEvents.Events.Assign(Events);
823 >    if EditAlerterEvents( Events) then
824 >    begin
825 >      IBEvents.Events.Assign(Events);
826 >      Modified
827 >    end;
828    finally
829      Events.Free;
830    end;
# Line 633 | Line 889 | procedure TIBQueryEditor.ExecuteVerb(Ind
889   var
890    Query: TIBQuery;
891   begin
892 +  if Index < inherited GetVerbCount then
893 +    inherited ExecuteVerb(Index) else
894 +  begin
895      Query := Component as TIBQuery;
896      Dec(Index, inherited GetVerbCount);
897      case Index of
898        0: Query.ExecSQL;
899 <      1: if ibselectsqleditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Designer.Modified;
899 >      1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
900      end;
901 +  end;
902   end;
903  
904   function TIBQueryEditor.GetVerb(Index: Integer): string;
# Line 657 | Line 917 | end;
917  
918   function TIBQueryEditor.GetVerbCount: Integer;
919   begin
920 <  Result :=  3;
920 >  Result := inherited GetVerbCount + 3;
921   end;
922  
923   { TIBStoredProcEditor }
924  
925   procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer);
926   begin
927 +  if Index < inherited GetVerbCount then
928 +    inherited ExecuteVerb(Index) else
929 +  begin
930 +    Dec(Index, inherited GetVerbCount);
931      if Index = 0 then (Component as TIBStoredProc).ExecProc;
932 +  end;
933   end;
934  
935   function TIBStoredProcEditor.GetVerb(Index: Integer): string;
936   begin
937 +  if Index < inherited GetVerbCount then
938 +    Result := inherited GetVerb(Index) else
939 +  begin
940 +    Dec(Index, inherited GetVerbCount);
941      case Index of
942        0: Result := SExecute;
943        1: Result := SInterbaseExpressVersion;
944      end;
945 +  end;
946   end;
947  
948   function TIBStoredProcEditor.GetVerbCount: Integer;
# Line 696 | Line 966 | begin
966    end;
967    inherited Edit;
968   end;
969 < (*
969 >
970   { TIBTableFieldLinkProperty }
971  
972   procedure TIBTableFieldLinkProperty.Edit;
973   begin
974    FTable := DataSet as TIBTable;
975 +  if assigned(FTable.Database) then
976 +    FTable.Database.Connected := true;
977    inherited Edit;
978   end;
979  
980 + function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
981 + begin
982 +  Result :=  FTable.IndexDefs
983 + end;
984 +
985   function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
986   begin
987    Result := FTable.IndexFieldNames;
# Line 723 | Line 1000 | end;
1000   procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
1001   begin
1002    FTable.MasterFields := Value;
1003 < end;*)
1003 > end;
1004  
1005   { TIBUpdateSQLProperty }
1006  
# Line 732 | Line 1009 | var
1009    IBDataset: TIBDataset;
1010   begin
1011    IBDataset := GetComponent(0) as TIBDataset;
1012 <  if Assigned(IBDataSet.Database) and
736 <    IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.ModifySQL) then Modified;
1012 >  if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1013   end;
1014  
1015   { TIBUpdateSQLUpdateProperty }
1016  
1017   procedure TIBUpdateSQLUpdateProperty.Edit;
1018   begin
1019 <  if not GetObjects then
1020 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
745 <  else
746 <  if IBModifySQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.ModifySQL) then Modified;
1019 >  GetObjects;
1020 >  if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1021   end;
1022  
1023   { TIBRefreshSQLProperty }
# Line 751 | Line 1025 | end;
1025   procedure TIBRefreshSQLProperty.Edit;
1026   var
1027    IBDataset: TIBDataset;
1028 +  aDatabase: TIBDatabase;
1029   begin
1030    IBDataset := GetComponent(0) as TIBDataset;
1031 <  if Assigned(IBDataSet.Database) and
757 <    IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.RefreshSQL) then Modified;
1031 >  if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1032   end;
1033  
1034   { TIBUpdateSQLRefreshSQLProperty }
1035  
1036   procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1037   begin
1038 <  if not GetObjects then
1039 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
766 <  else
767 <  if IBRefreshSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.RefreshSQL) then Modified;
1038 >  GetObjects;
1039 >  if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
1040   end;
1041  
1042   { TIBDeleteSQLProperty }
1043  
1044   procedure TIBDeleteSQLProperty.Edit;
1045   var
1046 <  IBDataset: TIBDataset;
1046 >  IBDataset: TIBDataSet;
1047   begin
1048 <  IBDataset := GetComponent(0) as TIBDataset;
1049 <  if Assigned(IBDataSet.Database) and
778 <    IBDeleteSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.DeleteSQL) then Modified;
1048 >  IBDataset := GetComponent(0) as TIBDataSet;
1049 >  if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
1050   end;
1051  
1052   { TIBUpdateSQLDeleteProperty }
# Line 787 | Line 1058 | end;
1058  
1059   procedure TIBUpdateSQLDeleteProperty.Edit;
1060   begin
1061 <  if not GetObjects then
1062 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
792 <  else
793 <  if IBDeleteSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.DeleteSQL) then Modified;
1061 >  GetObjects;
1062 >  if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1063   end;
1064  
1065   { TUpdateSQLPropertyEditor }
# Line 801 | Line 1070 | begin
1070    FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
1071    if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
1072      Exit;
1073 +  FDatabase := nil;
1074    if FIBUpdateSQL.DataSet is TIBQuery then
1075    begin
1076      FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
# Line 812 | Line 1082 | end;
1082  
1083   procedure TIBInsertSQLProperty.Edit;
1084   var
1085 <  IBDataset: TIBDataset;
1085 >  IBDataset: TIBDataSet;
1086   begin
1087 <  IBDataset := GetComponent(0) as TIBDataset;
1088 <  if Assigned(IBDataSet.Database) and
819 <    IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.InsertSQL) then Modified;
1087 >  IBDataset := GetComponent(0) as TIBDataSet;
1088 >  if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1089   end;
1090  
1091   { TIBUpdateSQLInsertSQLProperty }
1092  
1093   procedure TIBUpdateSQLInsertSQLProperty.Edit;
1094   begin
1095 <  if not GetObjects then
1096 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
828 <  else
829 <  if IBInsertSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.InsertSQL) then Modified;
1095 >  GetObjects;
1096 >  if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1097   end;
1098  
1099   { TIBGeneratorProperty }
# Line 841 | Line 1108 | begin
1108    if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
1109   end;
1110  
1111 + { TIBSQLEditor }
1112 +
1113 + procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1114 + begin
1115 +  if IBSQLEditor.EditIBSQL(TIBSQL(Component)) then Modified;
1116 + end;
1117 +
1118 + function TIBSQLEditor.GetVerb(Index: Integer): string;
1119 + begin
1120 +  case Index of
1121 +    0 : Result := SIBSQLEditor;
1122 +    1: Result := SInterbaseExpressVersion;
1123 +  end;
1124 + end;
1125 +
1126 + function TIBSQLEditor.GetVerbCount: Integer;
1127 + begin
1128 +  Result:= 2
1129 + end;
1130 +
1131 + { TIBSQLSQLPropertyEditor }
1132 +
1133 + procedure TIBSQLSQLPropertyEditor.Edit;
1134 + var
1135 +  IBSQL: TIBSQL;
1136 + begin
1137 +  IBSQL := GetComponent(0) as TIBSQL;
1138 +  if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
1139 + end;
1140 +
1141   initialization
1142    {$I IBDBReg.lrs}
1143   end.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines