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

Comparing ibx/trunk/design/IBDBReg.pas (file contents):
Revision 5 by tony, Fri Feb 18 16:26:16 2011 UTC vs.
Revision 33 by tony, Sat Jul 18 12:30:52 2015 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;
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]);
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]);
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 + end;
442 +
443 + procedure LoadDataSourceFields(DataSource: TDataSource; List: TStrings);
444 + var
445 +  DataSet: TDataSet;
446 +  i: Integer;
447 + begin
448 +  if Assigned(DataSource) then
449 +  begin
450 +    DataSet := DataSource.DataSet;
451 +    if Assigned(DataSet) then
452 +    begin
453 +      if DataSet.Fields.Count > 0 then
454 +        DataSet.GetFieldNames(List)
455 +      else
456 +      begin
457 +        DataSet.FieldDefs.Update;
458 +        for i := 0 to DataSet.FieldDefs.Count - 1 do
459 +          List.Add(DataSet.FieldDefs[i].Name);
460 +      end;
461 +    end;
462 +  end;
463 + end;
464 +
465 + { TDBLookupPropertiesGridFieldProperty }
466 +
467 + procedure TDBLookupPropertiesGridFieldProperty.FillValues(
468 +  const Values: TStringList);
469 + var
470 +  P: TDBLookupProperties;
471 + begin
472 +  P :=TDBLookupProperties(GetComponent(0));
473 +  if not (P is TDBLookupProperties) then exit;
474 +  LoadDataSourceFields(TIBDynamicGrid(P.Owner.Grid).DataSource, Values);
475 + end;
476 +
477 + { TIBTreeViewFieldProperty }
478 +
479 + procedure TIBTreeViewFieldProperty.FillValues(const Values: TStringList);
480 + var ListSource: TDataSource;
481 + begin
482 +  ListSource :=  TIBTreeView(GetComponent(0)).DataSource;
483 +  LoadDataSourceFields(ListSource, Values);
484 + end;
485 +
486 + { TIBDynamicGridIndexNamesProperty }
487 +
488 + function TIBDynamicGridIndexNamesProperty.GetFieldDefs: TFieldDefs;
489 + var Grid: TIBDynamicGrid;
490 + begin
491 +  Result := nil;
492 +  Grid := TIBDynamicGrid(GetComponent(0));
493 +  if assigned(Grid.DataSource) and assigned(Grid.DataSource.DataSet) then
494 +     Result := Grid.DataSource.DataSet.FieldDefs
495 + end;
496 +
497 + function TIBDynamicGridIndexNamesProperty.GetIndexFieldNames: string;
498 + var Grid: TIBDynamicGrid;
499 + begin
500 +  Grid := TIBDynamicGrid(GetComponent(0));
501 +  Result := Grid.IndexFieldNames
502 + end;
503 +
504 + procedure TIBDynamicGridIndexNamesProperty.SetIndexFieldNames(
505 +  const Value: string);
506 + var Grid: TIBDynamicGrid;
507 + begin
508 +  Grid := TIBDynamicGrid(GetComponent(0));
509 +  Grid.IndexFieldNames := Value
510 + end;
511 +
512 + { TDBDynamicGridFieldProperty }
513 +
514 + procedure TDBDynamicGridFieldProperty.FillValues(const Values: TStringList);
515 + var
516 +  P: TDBLookupProperties;
517 + begin
518 +  P :=TDBLookupProperties(GetComponent(0));
519 +  if not (P is TDBLookupProperties) then exit;
520 +  LoadDataSourceFields(P.ListSource, Values);
521 + end;
522 +
523 + { TIBServiceEditor }
524 +
525 + procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
526 + begin
527 +  if Index < inherited GetVerbCount then
528 +    inherited ExecuteVerb(Index) else
529 +  begin
530 +    Dec(Index, inherited GetVerbCount);
531 +    case Index of
532 +      0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
533 +    end;
534 +  end;
535 + end;
536 +
537 + function TIBServiceEditor.GetVerb(Index: Integer): string;
538 + begin
539 +  if Index < inherited GetVerbCount then
540 +    Result := inherited GetVerb(Index) else
541 +  begin
542 +    Dec(Index, inherited GetVerbCount);
543 +    case Index of
544 +      0: Result := SIBServiceEditor;
545 +      1 : Result := SInterbaseExpressVersion;
546 +    end;
547 +  end;
548 + end;
549 +
550 + function TIBServiceEditor.GetVerbCount: Integer;
551 + begin
552 +  Result := inherited GetVerbCount + 2;
553   end;
554  
555   { TIBFileNameProperty }
# Line 342 | Line 558 | begin
558    with TOpenDialog.Create(Application) do
559      try
560        InitialDir := ExtractFilePath(GetStrValue);
561 <      Filter := 'Database Files|*.gdb'; {do not localize}
561 >      Filter := SDatabaseFilter; {do not localize}
562        if Execute then
563          SetStrValue(FileName);
564      finally
# Line 370 | Line 586 | var
586     i : integer;
587   begin
588      StoredProc := GetComponent(0) as TIBStoredProc;
589 +    if StoredProc.Database = nil then
590 +      Exit;
591 +
592      with StoredProc do
593 +    try
594        for I := 0 to StoredProcedureNames.Count - 1 do
595          Proc (StoredProcedureNames[i]);
596 +    except on E: Exception do
597 +      MessageDlg(E.Message,mtError,[mbOK],0)
598 +    end;
599   end;
600  
601   { TIBTableNameProperty }
602  
603   procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
604   var
605 <   TableName : TIBTable;
605 >   Table : TIBTable;
606     i : integer;
607   begin
608 <  TableName := GetComponent(0) as TIBTable;
609 <  with TableName do
608 >  Table := GetComponent(0) as TIBTable;
609 >   if Table.Database = nil then
610 >      Exit;
611 >  with Table do
612      for I := 0 to TableNames.Count - 1 do
613        Proc (TableNames[i]);
614   end;
615  
616   { TDBStringProperty }
617  
618 + function TDBStringProperty.ConnecttoDB: boolean;
619 + var DataSet: TIBCustomDataSet;
620 + begin
621 +  Result := false;
622 +  DataSet := (GetComponent(0) as TIBCustomDataSet);
623 +  if assigned(Dataset.Database) then
624 +  begin
625 +    try
626 +      DataSet.Database.Connected := true;
627 +    except on E: Exception do
628 +      ShowMessage(E.Message)
629 +    end;
630 +    Result := DataSet.Database.Connected
631 +  end;
632 + end;
633 +
634   function TDBStringProperty.GetAttributes: TPropertyAttributes;
635   begin
636    Result := [paValueList, paSortList, paMultiSelect];
# Line 404 | Line 645 | var
645    I: Integer;
646    Values: TStringList;
647   begin
648 +  if not ConnecttoDB then Exit;
649    Values := TStringList.Create;
650    try
651      GetValueList(Values);
# Line 413 | Line 655 | begin
655    end;
656   end;
657  
658 + procedure TDBStringProperty.Edit;
659 + begin
660 +  if ConnecttoDB then
661 +    inherited Edit;
662 + end;
663 +
664   { Utility Functions }
665  
666   function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
# Line 474 | Line 722 | var
722    Query: TIBQuery;
723   begin
724    Query := GetComponent(0) as TIBQuery;
725 <  if Assigned(Query.Database) and
478 <    IBSelectSQLEditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Modified;
725 >  if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
726   end;
727  
728   { TIBDatasetSQLProperty }
# Line 485 | Line 732 | var
732    IBDataset: TIBDataset;
733   begin
734    IBDataset := GetComponent(0) as TIBDataset;
735 <  if Assigned(IBDataSet.Database) and
489 <     IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.SelectSQL) then Modified;
735 >  if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
736   end;
737  
738   { TIBSQLProperty }
# Line 496 | Line 742 | var
742    IBSQL: TIBSQL;
743   begin
744    IBSQL := GetComponent(0) as TIBSQL;
745 <  if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.Transaction,IBSQL.SQL) then Modified;
745 >  if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
746   end;
747  
748   { TIBUpdateSQLEditor }
# Line 516 | Line 762 | end;
762  
763   function TIBUpdateSQLEditor.GetVerbCount: Integer;
764   begin
765 <  Result := 2;
765 >  Result :=  2;
766   end;
767  
768   { TIBDataSetEditor }
# Line 525 | Line 771 | procedure TIBDataSetEditor.ExecuteVerb(I
771   var
772    IBDataset: TIBDataset;
773   begin
774 +  if Index < inherited GetVerbCount then
775 +    inherited ExecuteVerb(Index) else
776 +  begin
777 +    Dec(Index, inherited GetVerbCount);
778      case Index of
779        0:
780          if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
781            Designer.Modified;
782        1: (Component as TIBDataSet).ExecSQL;
783      end;
784 +  end;
785   end;
786  
787   function TIBDataSetEditor.GetVerb(Index: Integer): string;
# Line 549 | Line 800 | end;
800  
801   function TIBDataSetEditor.GetVerbCount: Integer;
802   begin
803 <  Result := 3;
803 >  Result := inherited GetVerbCount + 3;
804   end;
805  
806   { TIBEventListProperty }
# Line 568 | Line 819 | begin
819    Events := TStringList.Create;
820    try
821      Events.Assign( IBEvents.Events);
822 <    if EditAlerterEvents( Events) then IBEvents.Events.Assign(Events);
822 >    if EditAlerterEvents( Events) then
823 >    begin
824 >      IBEvents.Events.Assign(Events);
825 >      Modified
826 >    end;
827    finally
828      Events.Free;
829    end;
# Line 633 | Line 888 | procedure TIBQueryEditor.ExecuteVerb(Ind
888   var
889    Query: TIBQuery;
890   begin
891 +  if Index < inherited GetVerbCount then
892 +    inherited ExecuteVerb(Index) else
893 +  begin
894      Query := Component as TIBQuery;
895      Dec(Index, inherited GetVerbCount);
896      case Index of
897        0: Query.ExecSQL;
898 <      1: if ibselectsqleditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Designer.Modified;
898 >      1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
899      end;
900 +  end;
901   end;
902  
903   function TIBQueryEditor.GetVerb(Index: Integer): string;
# Line 657 | Line 916 | end;
916  
917   function TIBQueryEditor.GetVerbCount: Integer;
918   begin
919 <  Result :=  3;
919 >  Result := inherited GetVerbCount + 3;
920   end;
921  
922   { TIBStoredProcEditor }
923  
924   procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer);
925   begin
926 +  if Index < inherited GetVerbCount then
927 +    inherited ExecuteVerb(Index) else
928 +  begin
929 +    Dec(Index, inherited GetVerbCount);
930      if Index = 0 then (Component as TIBStoredProc).ExecProc;
931 +  end;
932   end;
933  
934   function TIBStoredProcEditor.GetVerb(Index: Integer): string;
935   begin
936 +  if Index < inherited GetVerbCount then
937 +    Result := inherited GetVerb(Index) else
938 +  begin
939 +    Dec(Index, inherited GetVerbCount);
940      case Index of
941        0: Result := SExecute;
942        1: Result := SInterbaseExpressVersion;
943      end;
944 +  end;
945   end;
946  
947   function TIBStoredProcEditor.GetVerbCount: Integer;
# Line 696 | Line 965 | begin
965    end;
966    inherited Edit;
967   end;
968 < (*
968 >
969   { TIBTableFieldLinkProperty }
970  
971   procedure TIBTableFieldLinkProperty.Edit;
972   begin
973    FTable := DataSet as TIBTable;
974 +  if assigned(FTable.Database) then
975 +    FTable.Database.Connected := true;
976    inherited Edit;
977   end;
978  
979 + function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
980 + begin
981 +  Result :=  FTable.IndexDefs
982 + end;
983 +
984   function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
985   begin
986    Result := FTable.IndexFieldNames;
# Line 723 | Line 999 | end;
999   procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
1000   begin
1001    FTable.MasterFields := Value;
1002 < end;*)
1002 > end;
1003  
1004   { TIBUpdateSQLProperty }
1005  
# Line 732 | Line 1008 | var
1008    IBDataset: TIBDataset;
1009   begin
1010    IBDataset := GetComponent(0) as TIBDataset;
1011 <  if Assigned(IBDataSet.Database) and
736 <    IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.ModifySQL) then Modified;
1011 >  if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1012   end;
1013  
1014   { TIBUpdateSQLUpdateProperty }
1015  
1016   procedure TIBUpdateSQLUpdateProperty.Edit;
1017   begin
1018 <  if not GetObjects then
1019 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
745 <  else
746 <  if IBModifySQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.ModifySQL) then Modified;
1018 >  GetObjects;
1019 >  if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1020   end;
1021  
1022   { TIBRefreshSQLProperty }
# Line 751 | Line 1024 | end;
1024   procedure TIBRefreshSQLProperty.Edit;
1025   var
1026    IBDataset: TIBDataset;
1027 +  aDatabase: TIBDatabase;
1028   begin
1029    IBDataset := GetComponent(0) as TIBDataset;
1030 <  if Assigned(IBDataSet.Database) and
757 <    IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.RefreshSQL) then Modified;
1030 >  if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1031   end;
1032  
1033   { TIBUpdateSQLRefreshSQLProperty }
1034  
1035   procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1036   begin
1037 <  if not GetObjects then
1038 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
766 <  else
767 <  if IBRefreshSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.RefreshSQL) then Modified;
1037 >  GetObjects;
1038 >  if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
1039   end;
1040  
1041   { TIBDeleteSQLProperty }
1042  
1043   procedure TIBDeleteSQLProperty.Edit;
1044   var
1045 <  IBDataset: TIBDataset;
1045 >  IBDataset: TIBDataSet;
1046   begin
1047 <  IBDataset := GetComponent(0) as TIBDataset;
1048 <  if Assigned(IBDataSet.Database) and
778 <    IBDeleteSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.DeleteSQL) then Modified;
1047 >  IBDataset := GetComponent(0) as TIBDataSet;
1048 >  if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
1049   end;
1050  
1051   { TIBUpdateSQLDeleteProperty }
# Line 787 | Line 1057 | end;
1057  
1058   procedure TIBUpdateSQLDeleteProperty.Edit;
1059   begin
1060 <  if not GetObjects then
1061 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
792 <  else
793 <  if IBDeleteSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.DeleteSQL) then Modified;
1060 >  GetObjects;
1061 >  if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1062   end;
1063  
1064   { TUpdateSQLPropertyEditor }
# Line 801 | Line 1069 | begin
1069    FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
1070    if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
1071      Exit;
1072 +  FDatabase := nil;
1073    if FIBUpdateSQL.DataSet is TIBQuery then
1074    begin
1075      FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
# Line 812 | Line 1081 | end;
1081  
1082   procedure TIBInsertSQLProperty.Edit;
1083   var
1084 <  IBDataset: TIBDataset;
1084 >  IBDataset: TIBDataSet;
1085   begin
1086 <  IBDataset := GetComponent(0) as TIBDataset;
1087 <  if Assigned(IBDataSet.Database) and
819 <    IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.InsertSQL) then Modified;
1086 >  IBDataset := GetComponent(0) as TIBDataSet;
1087 >  if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1088   end;
1089  
1090   { TIBUpdateSQLInsertSQLProperty }
1091  
1092   procedure TIBUpdateSQLInsertSQLProperty.Edit;
1093   begin
1094 <  if not GetObjects then
1095 <    ShowMessage('Not Linked to an IBQuery object or Database not assigned')
828 <  else
829 <  if IBInsertSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.InsertSQL) then Modified;
1094 >  GetObjects;
1095 >  if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1096   end;
1097  
1098   { TIBGeneratorProperty }
# Line 841 | Line 1107 | begin
1107    if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
1108   end;
1109  
1110 + { TIBSQLEditor }
1111 +
1112 + procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1113 + begin
1114 +  if IBSQLEditor.EditIBSQL(TIBSQL(Component)) then Modified;
1115 + end;
1116 +
1117 + function TIBSQLEditor.GetVerb(Index: Integer): string;
1118 + begin
1119 +  case Index of
1120 +    0 : Result := SIBSQLEditor;
1121 +    1: Result := SInterbaseExpressVersion;
1122 +  end;
1123 + end;
1124 +
1125 + function TIBSQLEditor.GetVerbCount: Integer;
1126 + begin
1127 +  Result:= 2
1128 + end;
1129 +
1130 + { TIBSQLSQLPropertyEditor }
1131 +
1132 + procedure TIBSQLSQLPropertyEditor.Edit;
1133 + var
1134 +  IBSQL: TIBSQL;
1135 + begin
1136 +  IBSQL := GetComponent(0) as TIBSQL;
1137 +  if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
1138 + end;
1139 +
1140   initialization
1141    {$I IBDBReg.lrs}
1142   end.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines