ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/IBDBReg.pas
Revision: 19
Committed: Mon Jul 7 13:00:15 2014 UTC (10 years, 5 months ago) by tony
Content type: text/x-pascal
File size: 29058 byte(s)
Log Message:
Committing updates for Release R1-1-0

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