ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/IBDBReg.pas
Revision: 17
Committed: Sat Dec 28 19:22:24 2013 UTC (10 years, 10 months ago) by tony
Content type: text/x-pascal
File size: 28129 byte(s)
Log Message:
Committing updates for Release R1-0-5

File Contents

# User Rev Content
1 tony 17 {************************************************************************}
2     { }
3     { Borland Delphi Visual Component Library }
4     { InterBase Express core components }
5     { }
6     { Copyright (c) 1998-2000 Inprise Corporation }
7     { }
8     { InterBase Express is based in part on the product }
9     { Free IB Components, written by Gregory H. Deatz for }
10     { Hoagland, Longo, Moran, Dunst & Doukas Company. }
11     { Free IB Components is used under license. }
12     { }
13     { The contents of this file are subject to the InterBase }
14     { Public License Version 1.0 (the "License"); you may not }
15     { use this file except in compliance with the License. You }
16     { may obtain a copy of the License at http://www.Inprise.com/IPL.html }
17     { Software distributed under the License is distributed on }
18     { an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either }
19     { express or implied. See the License for the specific language }
20     { governing rights and limitations under the License. }
21     { The Original Code was created by InterBase Software Corporation }
22     { and its successors. }
23     { Portions created by Inprise Corporation are Copyright (C) Inprise }
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;
34    
35     {$MODE Delphi}
36    
37     (*
38     * Compiler defines
39     *)
40     {$A+} (* Aligned records: On *)
41     {$B-} (* Short circuit boolean expressions: Off *)
42     {$G+} (* Imported data: On *)
43     {$H+} (* Huge Strings: On *)
44     {$J-} (* Modification of Typed Constants: Off *)
45     {$M+} (* Generate run-time type information: On *)
46     {$O+} (* Optimization: On *)
47     {$Q-} (* Overflow checks: Off *)
48     {$R-} (* Range checks: Off *)
49     {$T+} (* Typed address: On *)
50     {$U+} (* Pentim-safe FDIVs: On *)
51     {$W-} (* Always generate stack frames: Off *)
52     {$X+} (* Extended syntax: On *)
53     {$Z1} (* Minimum Enumeration Size: 1 Byte *)
54    
55     interface
56    
57     uses {Windows,} SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
58     DB, IBTable, IBDatabase, IBEventsEditor, LazarusPackageIntf,
59     IBUpdateSQL, IBXConst, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor;
60    
61     type
62    
63     { TIBFileNameProperty
64     Property editor the DataBase Name property. Brings up the Open dialog }
65    
66     TIBFileNameProperty = class(TStringProperty)
67     public
68     procedure Edit; override;
69     function GetAttributes: TPropertyAttributes; override;
70     end;
71    
72     { TIBNameProperty
73     }
74     TIBNameProperty = class(TStringProperty)
75     public
76     function GetAttributes: TPropertyAttributes; override;
77     end;
78    
79     { TIBStoredProcNameProperty
80     Editor for the TIBStoredProc.StoredProcName property. Displays a drop-down list of all
81     the StoredProcedures in the Database.}
82     TIBStoredProcNameProperty = class(TIBNameProperty)
83     public
84     procedure GetValues(Proc: TGetStrProc); override;
85     end;
86    
87     { TIBTableNameProperty
88     Editor for the TIBTable.TableName property. Displays a drop-down list of all
89     the Tables in the Database.}
90     TIBTableNameProperty = class(TIBNameProperty)
91     public
92     procedure GetValues(Proc: TGetStrProc); override;
93     end;
94    
95     TDBStringProperty = class(TStringProperty)
96     public
97     function GetAttributes: TPropertyAttributes; override;
98     procedure GetValueList(List: TStrings); virtual;
99     procedure GetValues(Proc: TGetStrProc); override;
100     end;
101    
102     TIBIndexFieldNamesProperty = class(TDBStringProperty)
103     public
104     procedure GetValueList(List: TStrings); override;
105     end;
106    
107     TIBIndexNameProperty = class(TDBStringProperty)
108     public
109     procedure GetValueList(List: TStrings); override;
110     end;
111    
112     { TIBDatabaseEditor }
113    
114     TIBDatabaseEditor = class(TComponentEditor)
115     procedure ExecuteVerb(Index: Integer); override;
116     function GetVerb(Index: Integer): string; override;
117     function GetVerbCount: Integer; override;
118     end;
119    
120     { TIBTransactionEditor }
121    
122     TIBTransactionEditor = class(TComponentEditor)
123     public
124     procedure ExecuteVerb(Index: Integer); override;
125     function GetVerb(Index: Integer): string; override;
126     function GetVerbCount: Integer; override;
127     end;
128    
129     { TIBQueryEditor }
130    
131     TIBQueryEditor = class(TFieldsComponentEditor)
132     public
133     procedure ExecuteVerb(Index: Integer); override;
134     function GetVerb(Index: Integer): string; override;
135     function GetVerbCount: Integer; override;
136     end;
137    
138     { TIBStoredProcEditor }
139    
140     TIBStoredProcEditor = class(TFieldsComponentEditor)
141     public
142     procedure ExecuteVerb(Index: Integer); override;
143     function GetVerb(Index: Integer): string; override;
144     function GetVerbCount: Integer; override;
145     end;
146    
147     { TIBDataSetEditor }
148    
149     TIBDataSetEditor = class(TFieldsComponentEditor)
150     public
151     procedure ExecuteVerb(Index: Integer); override;
152     function GetVerb(Index: Integer): string; override;
153     function GetVerbCount: Integer; override;
154     end;
155    
156     { TIBUpdateSQLEditor }
157    
158     TIBUpdateSQLEditor = class(TComponentEditor)
159     public
160     procedure ExecuteVerb(Index: Integer); override;
161     function GetVerb(Index: Integer): string; override;
162     function GetVerbCount: Integer; override;
163     end;
164    
165     { TIBSQLEditor }
166    
167     TIBSQLEditor = class(TComponentEditor)
168     public
169     procedure ExecuteVerb(Index: Integer); override;
170     function GetVerb(Index: Integer): string; override;
171     function GetVerbCount: Integer; override;
172     end;
173    
174     { TIBServiceEditor}
175    
176     TIBServiceEditor = class(TComponentEditor)
177     public
178     procedure ExecuteVerb(Index: Integer); override;
179     function GetVerb(Index: Integer): string; override;
180     function GetVerbCount: Integer; override;
181     end;
182    
183     TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
184     public
185     procedure Edit; override;
186     end;
187     (*
188     TIBTableFieldLinkProperty = class(TFieldLinkProperty)
189     private
190     FTable: TIBTable;
191     protected
192     function GetIndexFieldNames: string; override;
193     function GetMasterFields: string; override;
194     procedure SetIndexFieldNames(const Value: string); override;
195     procedure SetMasterFields(const Value: string); override;
196     public
197     procedure Edit; override;
198     end;
199     *)
200     { TSQLPropertyEditor }
201    
202     TSQLPropertyEditor = class(TStringsPropertyEditor)
203     public
204     function GetAttributes: TPropertyAttributes; override;
205     end;
206    
207     { TIBQuerySQLProperty }
208    
209     TIBQuerySQLProperty = class(TSQLPropertyEditor)
210     public
211     procedure Edit; override;
212     end;
213    
214     {TIBSQLSQLPropertyEditor }
215    
216     TIBSQLSQLPropertyEditor = class(TSQLPropertyEditor)
217     public
218     procedure Edit; override;
219     end;
220    
221     { TIBDatasetSQLProperty }
222    
223     TIBDatasetSQLProperty = class(TSQLPropertyEditor)
224     public
225     procedure Edit; override;
226     end;
227    
228     { TIBSQLProperty }
229    
230     TIBSQLProperty = class(TSQLPropertyEditor)
231     public
232     procedure Edit; override;
233     end;
234    
235     { TUpdateSQLPropertyEditor }
236    
237     TUpdateSQLPropertyEditor = class(TSQLPropertyEditor)
238     protected
239     FIBUpdateSQL: TIBUpdateSQL;
240     FDatabase: TIBDatabase;
241     function GetObjects: boolean;
242     end;
243    
244     { TIBUpdateSQLProperty }
245    
246     TIBUpdateSQLProperty = class(TSQLPropertyEditor)
247     public
248     procedure Edit; override;
249     end;
250    
251     { TIBRefreshSQLProperty }
252    
253     TIBRefreshSQLProperty = class(TSQLPropertyEditor)
254     public
255     procedure Edit; override;
256     end;
257    
258     { TIBInsertSQLProperty }
259    
260     TIBInsertSQLProperty = class(TSQLPropertyEditor)
261     public
262     procedure Edit; override;
263     end;
264    
265     { TIBDeleteSQLProperty }
266    
267     TIBDeleteSQLProperty = class(TSQLPropertyEditor)
268     public
269     procedure Edit; override;
270     end;
271    
272     { TIBUpdateSQLUpdateProperty }
273    
274     TIBUpdateSQLUpdateProperty = class(TUpdateSQLPropertyEditor)
275     public
276     procedure Edit; override;
277     end;
278    
279     { TIBUpdateSQLRefreshSQLProperty }
280    
281     TIBUpdateSQLRefreshSQLProperty = class(TUpdateSQLPropertyEditor)
282     public
283     procedure Edit; override;
284     end;
285    
286     { TIBUpdateSQLInsertSQLProperty }
287    
288     TIBUpdateSQLInsertSQLProperty = class(TUpdateSQLPropertyEditor)
289     public
290     procedure Edit; override;
291     end;
292    
293     { TIBUpdateSQLDeleteProperty }
294    
295     TIBUpdateSQLDeleteProperty = class(TUpdateSQLPropertyEditor)
296     public
297     function GetAttributes: TPropertyAttributes; override;
298     procedure Edit; override;
299     end;
300    
301     { TIBEventListProperty }
302    
303     TIBEventListProperty = class(TClassProperty)
304     public
305     function GetAttributes: TPropertyAttributes; override;
306     procedure Edit; override;
307     end;
308    
309     {TIBGeneratorProperty}
310    
311     TIBGeneratorProperty = class(TPersistentPropertyEditor)
312     public
313     function GetAttributes: TPropertyAttributes; override;
314     procedure Edit; override;
315     end;
316    
317     procedure Register;
318    
319     implementation
320    
321     uses IB, IBQuery, IBStoredProc, IBCustomDataSet,
322     IBIntf, IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents,
323     IBServices, IBDatabaseEdit, IBTransactionEdit,
324     IBBatchMove, DBLoginDlg, IBExtract,LResources, IBSelectSQLEditor,
325     IBModifySQLEditor,IBDeleteSQLEditor,IBRefreshSQLEditor,
326     IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor,
327     IBSQLEditor, ibserviceeditor, LCLVersion;
328    
329    
330    
331     procedure Register;
332     begin
333     if not TryIBLoad then
334     begin
335     MessageDlg('IBX is unable to locate the Firebird Library - have you remembered to install it?',mtError,[mbOK],0);
336     Exit;
337     end;
338    
339     RegisterNoIcon([TIBStringField, TIBBCDField]);
340     {$if lcl_fullversion < 01010000}
341     {see http://bugs.freepascal.org/view.php?id=19035 }
342     RegisterNoIcon([TIntegerField]);
343     {$endif}
344     RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet,
345     TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBEvents,
346     TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
347     TIBStoredProc,TIBBatchMove, TIBTable,TIBExtract]);
348     if IBServiceAPIPresent then
349     RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
350     TIBRestoreService, TIBValidationService, TIBStatisticalService,
351     TIBLogService, TIBSecurityService, TIBServerProperties]);
352     RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
353     RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
354     RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty);
355     RegisterPropertyEditor(TypeInfo(string), TIBTable, 'TableName', TIBTableNameProperty); {do not localize}
356     RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexName', TIBIndexNameProperty); {do not localize}
357     RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexFieldNames', TIBIndexFieldNamesProperty); {do not localize}
358     // RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
359     RegisterPropertyEditor(TypeInfo(TStrings), TIBQuery, 'SQL', TIBQuerySQLProperty); {do not localize}
360     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'SelectSQL', TIBDatasetSQLProperty); {do not localize}
361     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'ModifySQL', TIBUpdateSQLProperty); {do not localize}
362     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'InsertSQL', TIBInsertSQLProperty); {do not localize}
363     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'RefreshSQL', TIBRefreshSQLProperty); {do not localize}
364     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'DeleteSQL', TIBDeleteSQLProperty); {do not localize}
365     RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLSQLPropertyEditor); {do not localize}
366     RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'RefreshSQL', TIBUpdateSQLRefreshSQLProperty); {do not localize}
367     RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize}
368     RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize}
369     RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize}
370     RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize}
371     RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty); {do not localize}
372     RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty); {do not localize}
373    
374     RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor);
375     RegisterComponentEditor(TIBTransaction, TIBTransactionEditor);
376     RegisterComponentEditor(TIBUpdateSQL, TIBUpdateSQLEditor);
377     RegisterComponentEditor(TIBDataSet, TIBDataSetEditor);
378     RegisterComponentEditor(TIBQuery, TIBQueryEditor);
379     RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor);
380     RegisterComponentEditor(TIBSQL, TIBSQLEditor);
381     RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
382     end;
383    
384     { TIBServiceEditor }
385    
386     procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
387     begin
388     if Index < inherited GetVerbCount then
389     inherited ExecuteVerb(Index) else
390     begin
391     Dec(Index, inherited GetVerbCount);
392     case Index of
393     0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
394     end;
395     end;
396     end;
397    
398     function TIBServiceEditor.GetVerb(Index: Integer): string;
399     begin
400     if Index < inherited GetVerbCount then
401     Result := inherited GetVerb(Index) else
402     begin
403     Dec(Index, inherited GetVerbCount);
404     case Index of
405     0: Result := SIBServiceEditor;
406     1 : Result := SInterbaseExpressVersion;
407     end;
408     end;
409     end;
410    
411     function TIBServiceEditor.GetVerbCount: Integer;
412     begin
413     Result := inherited GetVerbCount + 2;
414     end;
415    
416     { TIBFileNameProperty }
417     procedure TIBFileNameProperty.Edit;
418     begin
419     with TOpenDialog.Create(Application) do
420     try
421     InitialDir := ExtractFilePath(GetStrValue);
422     Filter := SDatabaseFilter; {do not localize}
423     if Execute then
424     SetStrValue(FileName);
425     finally
426     Free
427     end;
428     end;
429    
430     function TIBFileNameProperty.GetAttributes: TPropertyAttributes;
431     begin
432     Result := [paDialog];
433     end;
434    
435     { TIBNameProperty }
436    
437     function TIBNameProperty.GetAttributes: TPropertyAttributes;
438     begin
439     Result := [paValueList, paSortList];
440     end;
441    
442     { TIBStoredProcNameProperty }
443    
444     procedure TIBStoredProcNameProperty.GetValues(Proc: TGetStrProc);
445     var
446     StoredProc : TIBStoredProc;
447     i : integer;
448     begin
449     StoredProc := GetComponent(0) as TIBStoredProc;
450     if StoredProc.Database = nil then
451     Exit;
452    
453     with StoredProc do
454     try
455     for I := 0 to StoredProcedureNames.Count - 1 do
456     Proc (StoredProcedureNames[i]);
457     except on E: Exception do
458     MessageDlg(E.Message,mtError,[mbOK],0)
459     end;
460     end;
461    
462     { TIBTableNameProperty }
463    
464     procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
465     var
466     TableName : TIBTable;
467     i : integer;
468     begin
469     TableName := GetComponent(0) as TIBTable;
470     with TableName do
471     for I := 0 to TableNames.Count - 1 do
472     Proc (TableNames[i]);
473     end;
474    
475     { TDBStringProperty }
476    
477     function TDBStringProperty.GetAttributes: TPropertyAttributes;
478     begin
479     Result := [paValueList, paSortList, paMultiSelect];
480     end;
481    
482     procedure TDBStringProperty.GetValueList(List: TStrings);
483     begin
484     end;
485    
486     procedure TDBStringProperty.GetValues(Proc: TGetStrProc);
487     var
488     I: Integer;
489     Values: TStringList;
490     begin
491     Values := TStringList.Create;
492     try
493     GetValueList(Values);
494     for I := 0 to Values.Count - 1 do Proc(Values[I]);
495     finally
496     Values.Free;
497     end;
498     end;
499    
500     { Utility Functions }
501    
502     function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
503     var
504     PropInfo: PPropInfo;
505     begin
506     Result := nil;
507     PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, PropName);
508     if (PropInfo <> nil) and (PropInfo^.PropType^.Kind = tkClass) then
509     Result := TObject(GetOrdProp(Instance, PropInfo)) as TPersistent;
510     end;
511    
512     function GetIndexDefs(Component: TPersistent): TIndexDefs;
513     var
514     DataSet: TDataSet;
515     begin
516     DataSet := Component as TDataSet;
517     Result := GetPropertyValue(DataSet, 'IndexDefs') as TIndexDefs; {do not localize}
518     if Assigned(Result) then
519     begin
520     Result.Updated := False;
521     Result.Update;
522     end;
523     end;
524    
525     { TIBIndexFieldNamesProperty }
526    
527     procedure TIBIndexFieldNamesProperty.GetValueList(List: TStrings);
528     var
529     I: Integer;
530     IndexDefs: TIndexDefs;
531     begin
532     IndexDefs := GetIndexDefs(GetComponent(0));
533     for I := 0 to IndexDefs.Count - 1 do
534     with IndexDefs[I] do
535     if (Options * [ixExpression, ixDescending] = []) and (Fields <> '') then
536     List.Add(Fields);
537     end;
538    
539    
540     { TIBIndexNameProperty }
541    
542     procedure TIBIndexNameProperty.GetValueList(List: TStrings);
543     begin
544     GetIndexDefs(GetComponent(0)).GetItemNames(List);
545     end;
546    
547     { TSQLPropertyEditor }
548    
549     function TSQLPropertyEditor.GetAttributes: TPropertyAttributes;
550     begin
551     Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
552     end;
553    
554     { TIBQuerySQLProperty }
555    
556     procedure TIBQuerySQLProperty.Edit;
557     var
558     Query: TIBQuery;
559     begin
560     Query := GetComponent(0) as TIBQuery;
561     if IBSelectSQLEditor.EditSQL(Query.Database,Query.SQL) then Modified;
562     end;
563    
564     { TIBDatasetSQLProperty }
565    
566     procedure TIBDatasetSQLProperty.Edit;
567     var
568     IBDataset: TIBDataset;
569     begin
570     IBDataset := GetComponent(0) as TIBDataset;
571     if IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.SelectSQL) then Modified;
572     end;
573    
574     { TIBSQLProperty }
575    
576     procedure TIBSQLProperty.Edit;
577     var
578     IBSQL: TIBSQL;
579     begin
580     IBSQL := GetComponent(0) as TIBSQL;
581     if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.SQL) then Modified;
582     end;
583    
584     { TIBUpdateSQLEditor }
585    
586     procedure TIBUpdateSQLEditor.ExecuteVerb(Index: Integer);
587     begin
588     if IBUpdateSQLEditor.EditIBUpdateSQL(TIBUpdateSQL(Component)) then Modified;
589     end;
590    
591     function TIBUpdateSQLEditor.GetVerb(Index: Integer): string;
592     begin
593     case Index of
594     0 : Result := SIBUpdateSQLEditor;
595     1: Result := SInterbaseExpressVersion;
596     end;
597     end;
598    
599     function TIBUpdateSQLEditor.GetVerbCount: Integer;
600     begin
601     Result := 2;
602     end;
603    
604     { TIBDataSetEditor }
605    
606     procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
607     var
608     IBDataset: TIBDataset;
609     begin
610     if Index < inherited GetVerbCount then
611     inherited ExecuteVerb(Index) else
612     begin
613     Dec(Index, inherited GetVerbCount);
614     case Index of
615     0:
616     if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
617     Designer.Modified;
618     1: (Component as TIBDataSet).ExecSQL;
619     end;
620     end;
621     end;
622    
623     function TIBDataSetEditor.GetVerb(Index: Integer): string;
624     begin
625     if Index < inherited GetVerbCount then
626     Result := inherited GetVerb(Index) else
627     begin
628     Dec(Index, inherited GetVerbCount);
629     case Index of
630     0: Result := SIBDataSetEditor;
631     1: Result := SExecute;
632     2: Result := SInterbaseExpressVersion;
633     end;
634     end;
635     end;
636    
637     function TIBDataSetEditor.GetVerbCount: Integer;
638     begin
639     Result := inherited GetVerbCount + 3;
640     end;
641    
642     { TIBEventListProperty }
643    
644     function TIBEventListProperty.GetAttributes: TPropertyAttributes;
645     begin
646     Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
647     end;
648    
649     procedure TIBEventListProperty.Edit;
650     var
651     Events: TStrings;
652     IBEvents: TIBEvents;
653     begin
654     IBEvents := GetComponent(0) as TIBEvents;
655     Events := TStringList.Create;
656     try
657     Events.Assign( IBEvents.Events);
658     if EditAlerterEvents( Events) then
659     begin
660     IBEvents.Events.Assign(Events);
661     Modified
662     end;
663     finally
664     Events.Free;
665     end;
666     end;
667    
668     { TIBDatabaseEditor }
669     procedure TIBDatabaseEditor.ExecuteVerb(Index: Integer);
670     begin
671     if Index < inherited GetVerbCount then
672     inherited ExecuteVerb(Index) else
673     begin
674     Dec(Index, inherited GetVerbCount);
675     case Index of
676     0 : if EditIBDatabase(TIBDatabase(Component)) then Designer.Modified;
677     end;
678     end;
679     end;
680    
681     function TIBDatabaseEditor.GetVerb(Index: Integer): string;
682     begin
683     if Index < inherited GetVerbCount then
684     Result := inherited GetVerb(Index) else
685     begin
686     Dec(Index, inherited GetVerbCount);
687     case Index of
688     0: Result := SIBDatabaseEditor;
689     1 : Result := SInterbaseExpressVersion;
690     end;
691     end;
692     end;
693    
694     function TIBDatabaseEditor.GetVerbCount: Integer;
695     begin
696     Result := inherited GetVerbCount + 2;
697     end;
698    
699     { TIBTransactionEditor }
700    
701     procedure TIBTransactionEditor.ExecuteVerb(Index: Integer);
702     begin
703     case Index of
704     0: if EditIBTransaction(TIBTransaction(Component)) then Designer.Modified;
705     end;
706     end;
707    
708     function TIBTransactionEditor.GetVerb(Index: Integer): string;
709     begin
710     case Index of
711     0: Result := SIBTransactionEditor;
712     1: Result := SInterbaseExpressVersion;
713     end;
714     end;
715    
716     function TIBTransactionEditor.GetVerbCount: Integer;
717     begin
718     Result := 2;
719     end;
720    
721     { TIBQueryEditor }
722    
723     procedure TIBQueryEditor.ExecuteVerb(Index: Integer);
724     var
725     Query: TIBQuery;
726     begin
727     if Index < inherited GetVerbCount then
728     inherited ExecuteVerb(Index) else
729     begin
730     Query := Component as TIBQuery;
731     Dec(Index, inherited GetVerbCount);
732     case Index of
733     0: Query.ExecSQL;
734     1: if ibselectsqleditor.EditSQL(Query.Database,Query.SQL) then Designer.Modified;
735     end;
736     end;
737     end;
738    
739     function TIBQueryEditor.GetVerb(Index: Integer): string;
740     begin
741     if Index < inherited GetVerbCount then
742     Result := inherited GetVerb(Index) else
743     begin
744     Dec(Index, inherited GetVerbCount);
745     case Index of
746     0: Result := SExecute;
747     1: Result := SEditSQL;
748     2: Result := SInterbaseExpressVersion;
749     end;
750     end;
751     end;
752    
753     function TIBQueryEditor.GetVerbCount: Integer;
754     begin
755     Result := inherited GetVerbCount + 3;
756     end;
757    
758     { TIBStoredProcEditor }
759    
760     procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer);
761     begin
762     if Index < inherited GetVerbCount then
763     inherited ExecuteVerb(Index) else
764     begin
765     Dec(Index, inherited GetVerbCount);
766     if Index = 0 then (Component as TIBStoredProc).ExecProc;
767     end;
768     end;
769    
770     function TIBStoredProcEditor.GetVerb(Index: Integer): string;
771     begin
772     if Index < inherited GetVerbCount then
773     Result := inherited GetVerb(Index) else
774     begin
775     Dec(Index, inherited GetVerbCount);
776     case Index of
777     0: Result := SExecute;
778     1: Result := SInterbaseExpressVersion;
779     end;
780     end;
781     end;
782    
783     function TIBStoredProcEditor.GetVerbCount: Integer;
784     begin
785     Result := inherited GetVerbCount + 2;
786     end;
787    
788     { TIBStoredProcParamsProperty }
789    
790     procedure TIBStoredProcParamsProperty.Edit;
791     var
792     StoredProc: TIBStoredProc;
793     Params: TParams;
794     begin
795     StoredProc := (GetComponent(0) as TIBStoredProc);
796     Params := TParams.Create(nil);
797     try
798     StoredProc.CopyParams(Params);
799     finally
800     Params.Free;
801     end;
802     inherited Edit;
803     end;
804     (*
805     { TIBTableFieldLinkProperty }
806    
807     procedure TIBTableFieldLinkProperty.Edit;
808     begin
809     FTable := DataSet as TIBTable;
810     inherited Edit;
811     end;
812    
813     function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
814     begin
815     Result := FTable.IndexFieldNames;
816     end;
817    
818     function TIBTableFieldLinkProperty.GetMasterFields: string;
819     begin
820     Result := FTable.MasterFields;
821     end;
822    
823     procedure TIBTableFieldLinkProperty.SetIndexFieldNames(const Value: string);
824     begin
825     FTable.IndexFieldNames := Value;
826     end;
827    
828     procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
829     begin
830     FTable.MasterFields := Value;
831     end;*)
832    
833     { TIBUpdateSQLProperty }
834    
835     procedure TIBUpdateSQLProperty.Edit;
836     var
837     IBDataset: TIBDataset;
838     begin
839     IBDataset := GetComponent(0) as TIBDataset;
840     if IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.ModifySQL) then Modified;
841     end;
842    
843     { TIBUpdateSQLUpdateProperty }
844    
845     procedure TIBUpdateSQLUpdateProperty.Edit;
846     begin
847     GetObjects;
848     if IBModifySQLEditor.EditSQL(FDatabase,FIBUpdateSQL.ModifySQL) then Modified;
849     end;
850    
851     { TIBRefreshSQLProperty }
852    
853     procedure TIBRefreshSQLProperty.Edit;
854     var
855     IBDataset: TIBDataset;
856     aDatabase: TIBDatabase;
857     begin
858     IBDataset := GetComponent(0) as TIBDataset;
859     if IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.RefreshSQL) then Modified;
860     end;
861    
862     { TIBUpdateSQLRefreshSQLProperty }
863    
864     procedure TIBUpdateSQLRefreshSQLProperty.Edit;
865     begin
866     GetObjects;
867     if IBRefreshSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.RefreshSQL) then Modified;
868     end;
869    
870     { TIBDeleteSQLProperty }
871    
872     procedure TIBDeleteSQLProperty.Edit;
873     var
874     IBDataset: TIBDataset;
875     begin
876     IBDataset := GetComponent(0) as TIBDataset;
877     if IBDeleteSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.DeleteSQL) then Modified;
878     end;
879    
880     { TIBUpdateSQLDeleteProperty }
881    
882     function TIBUpdateSQLDeleteProperty.GetAttributes: TPropertyAttributes;
883     begin
884     Result:=inherited GetAttributes;
885     end;
886    
887     procedure TIBUpdateSQLDeleteProperty.Edit;
888     begin
889     GetObjects;
890     if IBDeleteSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.DeleteSQL) then Modified;
891     end;
892    
893     { TUpdateSQLPropertyEditor }
894    
895     function TUpdateSQLPropertyEditor.GetObjects: boolean;
896     begin
897     Result := false;
898     FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
899     if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
900     Exit;
901     FDatabase := nil;
902     if FIBUpdateSQL.DataSet is TIBQuery then
903     begin
904     FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
905     Result := true
906     end;
907     end;
908    
909     { TIBInsertSQLProperty }
910    
911     procedure TIBInsertSQLProperty.Edit;
912     var
913     IBDataset: TIBDataset;
914     begin
915     IBDataset := GetComponent(0) as TIBDataset;
916     if IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.InsertSQL) then Modified;
917     end;
918    
919     { TIBUpdateSQLInsertSQLProperty }
920    
921     procedure TIBUpdateSQLInsertSQLProperty.Edit;
922     begin
923     GetObjects;
924     if IBInsertSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.InsertSQL) then Modified;
925     end;
926    
927     { TIBGeneratorProperty }
928    
929     function TIBGeneratorProperty.GetAttributes: TPropertyAttributes;
930     begin
931     Result:= inherited GetAttributes + [paDialog] - [paMultiSelect,paValueList];
932     end;
933    
934     procedure TIBGeneratorProperty.Edit;
935     begin
936     if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
937     end;
938    
939     { TIBSQLEditor }
940    
941     procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
942     begin
943     if IBSQLEditor.EditIBSQL(TIBSQL(Component)) then Modified;
944     end;
945    
946     function TIBSQLEditor.GetVerb(Index: Integer): string;
947     begin
948     case Index of
949     0 : Result := SIBSQLEditor;
950     1: Result := SInterbaseExpressVersion;
951     end;
952     end;
953    
954     function TIBSQLEditor.GetVerbCount: Integer;
955     begin
956     Result:= 2
957     end;
958    
959     { TIBSQLSQLPropertyEditor }
960    
961     procedure TIBSQLSQLPropertyEditor.Edit;
962     var
963     IBSQL: TIBSQL;
964     begin
965     IBSQL := GetComponent(0) as TIBSQL;
966     if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
967     end;
968    
969     initialization
970     {$I IBDBReg.lrs}
971     end.