ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/IBDBReg.pas
Revision: 126
Committed: Mon Jan 22 16:21:31 2018 UTC (6 years, 9 months ago) by tony
Content type: text/x-pascal
File size: 36182 byte(s)
Log Message:
Add property Editor for TIBUpdate.RefreshSQL

File Contents

# User Rev Content
1 tony 33 {************************************************************************}
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     {$H+} (* Huge Strings: On *)
43     {$J-} (* Modification of Typed Constants: Off *)
44     {$M+} (* Generate run-time type information: On *)
45     {$O+} (* Optimization: On *)
46     {$Q-} (* Overflow checks: Off *)
47     {$R-} (* Range checks: Off *)
48     {$T+} (* Typed address: On *)
49     {$W-} (* Always generate stack frames: Off *)
50     {$X+} (* Extended syntax: On *)
51     {$Z1} (* Minimum Enumeration Size: 1 Byte *)
52    
53     interface
54    
55     uses SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
56     DB, IBTable, IBDatabase, IBEventsEditor, LazarusPackageIntf,
57 tony 80 IBUpdateSQL, IBUpdate, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor,
58 tony 33 dbFieldLinkPropEditor, dbFieldListPropEditor, IBDialogs;
59    
60     type
61    
62     { TIBFileNameProperty
63     Property editor the DataBase Name property. Brings up the Open dialog }
64    
65     TIBFileNameProperty = class(TStringProperty)
66     public
67     procedure Edit; override;
68     function GetAttributes: TPropertyAttributes; override;
69     end;
70    
71     { TIBNameProperty
72     }
73     TIBNameProperty = class(TStringProperty)
74     public
75     function GetAttributes: TPropertyAttributes; override;
76     end;
77    
78     { TIBStoredProcNameProperty
79     Editor for the TIBStoredProc.StoredProcName property. Displays a drop-down list of all
80     the StoredProcedures in the Database.}
81     TIBStoredProcNameProperty = class(TIBNameProperty)
82     public
83     procedure GetValues(Proc: TGetStrProc); override;
84     end;
85    
86 tony 107 { TIBPackageNameProperty
87     Editor for the TIBStoredProc.PackageName property. Displays a drop-down list of all
88     the StoredProcedures in the Database.}
89     TIBPackageNameProperty = class(TIBNameProperty)
90     public
91     procedure GetValues(Proc: TGetStrProc); override;
92     end;
93    
94 tony 33 { TIBTableNameProperty
95     Editor for the TIBTable.TableName property. Displays a drop-down list of all
96     the Tables in the Database.}
97     TIBTableNameProperty = class(TIBNameProperty)
98     public
99     procedure GetValues(Proc: TGetStrProc); override;
100     end;
101    
102     { TDBStringProperty }
103    
104     TDBStringProperty = class(TStringProperty)
105     private
106     function ConnecttoDB: boolean;
107     public
108     function GetAttributes: TPropertyAttributes; override;
109     procedure GetValueList(List: TStrings); virtual;
110     procedure GetValues(Proc: TGetStrProc); override;
111     procedure Edit; override;
112     end;
113    
114     { TIBIndexFieldNamesProperty }
115    
116     TIBIndexFieldNamesProperty = class(TDBStringProperty)
117     public
118     procedure GetValueList(List: TStrings); override;
119     end;
120    
121     TIBIndexNameProperty = class(TDBStringProperty)
122     public
123     procedure GetValueList(List: TStrings); override;
124     end;
125    
126     { TIBDatabaseEditor }
127    
128     TIBDatabaseEditor = class(TComponentEditor)
129     procedure ExecuteVerb(Index: Integer); override;
130     function GetVerb(Index: Integer): string; override;
131     function GetVerbCount: Integer; override;
132     end;
133    
134     { TIBTransactionEditor }
135    
136     TIBTransactionEditor = class(TComponentEditor)
137     public
138     procedure ExecuteVerb(Index: Integer); override;
139     function GetVerb(Index: Integer): string; override;
140     function GetVerbCount: Integer; override;
141     end;
142    
143 tony 45 { TIBArrayGridEditor }
144    
145     TIBArrayGridEditor = class(TComponentEditor)
146     public
147     procedure ExecuteVerb(Index: Integer); override;
148     function GetVerb(Index: Integer): string; override;
149     function GetVerbCount: Integer; override;
150     end;
151    
152 tony 33 { TIBQueryEditor }
153    
154     TIBQueryEditor = class(TFieldsComponentEditor)
155     public
156     procedure ExecuteVerb(Index: Integer); override;
157     function GetVerb(Index: Integer): string; override;
158     function GetVerbCount: Integer; override;
159     end;
160    
161     { TIBStoredProcEditor }
162    
163     TIBStoredProcEditor = class(TFieldsComponentEditor)
164     public
165     procedure ExecuteVerb(Index: Integer); override;
166     function GetVerb(Index: Integer): string; override;
167     function GetVerbCount: Integer; override;
168     end;
169    
170     { TIBDataSetEditor }
171    
172     TIBDataSetEditor = class(TFieldsComponentEditor)
173     public
174     procedure ExecuteVerb(Index: Integer); override;
175     function GetVerb(Index: Integer): string; override;
176     function GetVerbCount: Integer; override;
177     end;
178    
179     { TIBUpdateSQLEditor }
180    
181     TIBUpdateSQLEditor = class(TComponentEditor)
182     public
183     procedure ExecuteVerb(Index: Integer); override;
184     function GetVerb(Index: Integer): string; override;
185     function GetVerbCount: Integer; override;
186     end;
187    
188     { TIBSQLEditor }
189    
190     TIBSQLEditor = class(TComponentEditor)
191     public
192     procedure ExecuteVerb(Index: Integer); override;
193     function GetVerb(Index: Integer): string; override;
194     function GetVerbCount: Integer; override;
195     end;
196    
197     { TIBServiceEditor}
198    
199     TIBServiceEditor = class(TComponentEditor)
200     public
201     procedure ExecuteVerb(Index: Integer); override;
202     function GetVerb(Index: Integer): string; override;
203     function GetVerbCount: Integer; override;
204     end;
205    
206     TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
207     end;
208    
209     { TIBTableFieldLinkProperty }
210    
211     TIBTableFieldLinkProperty = class(TFieldLinkProperty)
212     private
213     FTable: TIBTable;
214     protected
215     function GetIndexDefs: TIndexDefs; override;
216     function GetIndexFieldNames: string; override;
217     function GetMasterFields: string; override;
218     procedure SetIndexFieldNames(const Value: string); override;
219     procedure SetMasterFields(const Value: string); override;
220     public
221     procedure Edit; override;
222     end;
223    
224     { TSQLPropertyEditor }
225    
226     TSQLPropertyEditor = class(TStringsPropertyEditor)
227     public
228     function GetAttributes: TPropertyAttributes; override;
229     end;
230    
231     { TIBQuerySQLProperty }
232    
233     TIBQuerySQLProperty = class(TSQLPropertyEditor)
234     public
235     procedure Edit; override;
236     end;
237    
238     {TIBSQLSQLPropertyEditor }
239    
240     TIBSQLSQLPropertyEditor = class(TSQLPropertyEditor)
241     public
242     procedure Edit; override;
243     end;
244    
245     { TIBDatasetSQLProperty }
246    
247     TIBDatasetSQLProperty = class(TSQLPropertyEditor)
248     public
249     procedure Edit; override;
250     end;
251    
252     { TIBSQLProperty }
253    
254     TIBSQLProperty = class(TSQLPropertyEditor)
255     public
256     procedure Edit; override;
257     end;
258    
259     { TUpdateSQLPropertyEditor }
260    
261     TUpdateSQLPropertyEditor = class(TSQLPropertyEditor)
262     protected
263     FIBUpdateSQL: TIBUpdateSQL;
264     FDatabase: TIBDatabase;
265     function GetObjects: boolean;
266     end;
267    
268     { TIBUpdateSQLProperty }
269    
270     TIBUpdateSQLProperty = class(TSQLPropertyEditor)
271     public
272     procedure Edit; override;
273     end;
274    
275     { TIBRefreshSQLProperty }
276    
277     TIBRefreshSQLProperty = class(TSQLPropertyEditor)
278     public
279     procedure Edit; override;
280     end;
281    
282     { TIBInsertSQLProperty }
283    
284     TIBInsertSQLProperty = class(TSQLPropertyEditor)
285     public
286     procedure Edit; override;
287     end;
288    
289     { TIBDeleteSQLProperty }
290    
291     TIBDeleteSQLProperty = class(TSQLPropertyEditor)
292     public
293     procedure Edit; override;
294     end;
295    
296     { TIBUpdateSQLUpdateProperty }
297    
298     TIBUpdateSQLUpdateProperty = class(TUpdateSQLPropertyEditor)
299     public
300     procedure Edit; override;
301     end;
302    
303     { TIBUpdateSQLRefreshSQLProperty }
304    
305     TIBUpdateSQLRefreshSQLProperty = class(TUpdateSQLPropertyEditor)
306     public
307     procedure Edit; override;
308     end;
309    
310     { TIBUpdateSQLInsertSQLProperty }
311    
312     TIBUpdateSQLInsertSQLProperty = class(TUpdateSQLPropertyEditor)
313     public
314     procedure Edit; override;
315     end;
316    
317     { TIBUpdateSQLDeleteProperty }
318    
319     TIBUpdateSQLDeleteProperty = class(TUpdateSQLPropertyEditor)
320     public
321     function GetAttributes: TPropertyAttributes; override;
322     procedure Edit; override;
323     end;
324    
325 tony 126 { TIBUpdateRefreshSQLProperty }
326    
327     TIBUpdateRefreshSQLProperty = class(TSQLPropertyEditor)
328     protected
329     FIBUpdate: TIBUpdate;
330     FDatabase: TIBDatabase;
331     function GetObjects: boolean;
332     public
333     procedure Edit; override;
334     end;
335    
336    
337 tony 33 { TIBEventListProperty }
338    
339     TIBEventListProperty = class(TClassProperty)
340     public
341     function GetAttributes: TPropertyAttributes; override;
342     procedure Edit; override;
343     end;
344    
345     {TIBGeneratorProperty}
346    
347     TIBGeneratorProperty = class(TPersistentPropertyEditor)
348     public
349     function GetAttributes: TPropertyAttributes; override;
350     procedure Edit; override;
351     end;
352    
353     { TDBDynamicGridFieldProperty }
354    
355     TDBDynamicGridFieldProperty = class(TFieldProperty)
356     public
357     procedure FillValues(const Values: TStringList); override;
358     end;
359    
360     { TDBLookupPropertiesGridFieldProperty }
361    
362     TDBLookupPropertiesGridFieldProperty = class(TFieldProperty)
363     public
364     procedure FillValues(const Values: TStringList); override;
365     end;
366    
367     { TIBTreeViewFieldProperty }
368    
369     TIBTreeViewFieldProperty = class(TFieldProperty)
370     public
371     procedure FillValues(const Values: TStringList); override;
372     end;
373    
374     { TIBDynamicGridIndexNamesProperty }
375    
376     TIBDynamicGridIndexNamesProperty = class(TIndexFieldNamesProperty)
377     protected
378     function GetFieldDefs: TFieldDefs; override;
379     function GetIndexFieldNames: string; override;
380     procedure SetIndexFieldNames(const Value: string); override;
381     end;
382    
383 tony 45 { TIBFieldDefsProperty }
384 tony 33
385 tony 45 TIBFieldDefsProperty = class(TCollectionPropertyEditor)
386     public
387     procedure Edit; override;
388     end;
389 tony 33
390 tony 45 { TIBIndexDefsProperty }
391    
392     TIBIndexDefsProperty = class(TCollectionPropertyEditor)
393     public
394     procedure Edit; override;
395     end;
396    
397    
398 tony 33 procedure Register;
399    
400     implementation
401    
402 tony 45 uses IB, IBQuery, IBStoredProc, IBCustomDataSet, FBMessages,
403     IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents, IBTypes,
404 tony 33 IBServices, IBDatabaseEdit, IBTransactionEdit,
405     IBBatchMove, IBExtract,LResources, IBSelectSQLEditor,
406     IBModifySQLEditor,IBDeleteSQLEditor,IBRefreshSQLEditor,
407     IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor,
408     IBSQLEditor, ibserviceeditor, LCLVersion, IBDynamicGrid, IBLookupComboEditBox,
409 tony 45 IBTreeView, DBControlGrid, ibxscript, IBLocalDBSupport, IBDSDialogs,
410 tony 47 IBArrayGrid, IBVersion, IBDataOutput;
411 tony 33
412 tony 45 const
413     IBPalette1 = 'Firebird'; {do not localize}
414     IBPalette2 = 'Firebird Admin'; {do not localize}
415     IBPalette3 = 'Firebird Data Controls'; {do not localize}
416    
417     resourcestring
418 tony 47 SInterbaseExpressVersion = 'Firebird Express for Lazarus ' + IBX_VERSION;
419 tony 45 SEditSQL = 'Edit SQL';
420     SIBSQLEditor = 'IBSQL Editor';
421     SIBServiceEditor = 'Edit IB Service';
422     SIBUpdateSQLEditor = '&UpdateSQL Editor...';
423     SIBDataSetEditor = '&Dataset Editor...';
424     SExecute = 'E&xecute';
425     SIBDatabaseEditor = 'Da&tabase Editor...';
426     SIBTransactionEditor = '&Transaction Editor...';
427     SIBUpdateLayout = 'Update Layout';
428 tony 33
429     procedure Register;
430     begin
431     if not TryIBLoad then
432     begin
433     MessageDlg('IBX is unable to locate the Firebird Library - have you remembered to install it?',mtError,[mbOK],0);
434     Exit;
435     end;
436    
437 tony 106 RegisterNoIcon([TIBStringField, TIBBCDField, TIBMemoField, TIBArrayField,
438     TIBSmallintField, TIBIntegerField, TIBLargeIntField]);
439 tony 33 {$if lcl_fullversion < 01010000}
440     {see http://bugs.freepascal.org/view.php?id=19035 }
441     RegisterNoIcon([TIntegerField]);
442     {$endif}
443     RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet,
444 tony 80 TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBUpdate, TIBEvents,
445 tony 33 TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
446 tony 47 TIBStoredProc,TIBBatchMove, TIBTable,TIBExtract, TIBXScript, TIBLocalDBSupport,
447     TIBBlockFormatOut,TIBCSVDataOut,TIBInsertStmtsOut]);
448 tony 45 if FirebirdAPI.HasServiceAPI then
449 tony 33 RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
450     TIBRestoreService, TIBValidationService, TIBStatisticalService,
451     TIBLogService, TIBSecurityService, TIBServerProperties]);
452    
453    
454 tony 45 RegisterComponents(IBPalette3,[TIBLookupComboEditBox,TIBDynamicGrid,TIBTreeView,TDBControlGrid, TIBArrayGrid]);
455 tony 33 RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
456     RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
457 tony 107 RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'PackageName', TIBPackageNameProperty); {do not localize}
458 tony 33 RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty);
459     RegisterPropertyEditor(TypeInfo(string), TIBTable, 'TableName', TIBTableNameProperty); {do not localize}
460     RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexName', TIBIndexNameProperty); {do not localize}
461     RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexFieldNames', TIBIndexFieldNamesProperty); {do not localize}
462     RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
463 tony 45 RegisterPropertyEditor(TypeInfo(TFieldDefs), TIBTable, 'FieldDefs', TIBFieldDefsProperty); {do not localize}
464     RegisterPropertyEditor(TypeInfo(TIndexDefs), TIBTable, 'IndexDefs', TIBIndexDefsProperty); {do not localize}
465 tony 33 RegisterPropertyEditor(TypeInfo(TStrings), TIBQuery, 'SQL', TIBQuerySQLProperty); {do not localize}
466     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'SelectSQL', TIBDatasetSQLProperty); {do not localize}
467     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'ModifySQL', TIBUpdateSQLProperty); {do not localize}
468     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'InsertSQL', TIBInsertSQLProperty); {do not localize}
469     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'RefreshSQL', TIBRefreshSQLProperty); {do not localize}
470     RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'DeleteSQL', TIBDeleteSQLProperty); {do not localize}
471     RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLSQLPropertyEditor); {do not localize}
472     RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'RefreshSQL', TIBUpdateSQLRefreshSQLProperty); {do not localize}
473     RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize}
474     RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize}
475     RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize}
476 tony 126 RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdate, 'RefreshSQL', TIBUpdateRefreshSQLProperty); {do not localize}
477 tony 33 RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize}
478     RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty); {do not localize}
479     RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty); {do not localize}
480 tony 107 RegisterPropertyEditor(TypeInfo(TPersistent), TIBTable, 'GeneratorField', TIBGeneratorProperty); {do not localize}
481 tony 33
482     RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor);
483     RegisterComponentEditor(TIBTransaction, TIBTransactionEditor);
484     RegisterComponentEditor(TIBUpdateSQL, TIBUpdateSQLEditor);
485     RegisterComponentEditor(TIBDataSet, TIBDataSetEditor);
486     RegisterComponentEditor(TIBQuery, TIBQueryEditor);
487     RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor);
488     RegisterComponentEditor(TIBSQL, TIBSQLEditor);
489     RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
490 tony 45 RegisterComponentEditor(TIBArrayGrid, TIBArrayGridEditor);
491 tony 33
492    
493     {Firebird Data Access Controls}
494     RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'KeyField', TDBDynamicGridFieldProperty);
495     RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'ListField', TDBDynamicGridFieldProperty);
496     RegisterPropertyEditor(TypeInfo(string), TIBDynamicGrid, 'IndexFieldNames', TIBDynamicGridIndexNamesProperty);
497     RegisterPropertyEditor(TypeInfo(string), TDBLookupProperties, 'DataFieldName', TDBLookupPropertiesGridFieldProperty);
498     RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'KeyField', TIBTreeViewFieldProperty);
499     RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'TextField', TIBTreeViewFieldProperty);
500     RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ParentField', TIBTreeViewFieldProperty);
501     RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'HasChildField', TIBTreeViewFieldProperty);
502    
503 tony 39 IBGUIInterface := TIBDSLCLInterface.Create;
504 tony 33 end;
505    
506     procedure LoadDataSourceFields(DataSource: TDataSource; List: TStrings);
507     var
508     DataSet: TDataSet;
509     i: Integer;
510     begin
511     if Assigned(DataSource) then
512     begin
513     DataSet := DataSource.DataSet;
514     if Assigned(DataSet) then
515     begin
516     if DataSet.Fields.Count > 0 then
517     DataSet.GetFieldNames(List)
518     else
519     begin
520     DataSet.FieldDefs.Update;
521     for i := 0 to DataSet.FieldDefs.Count - 1 do
522     List.Add(DataSet.FieldDefs[i].Name);
523     end;
524     end;
525     end;
526     end;
527    
528 tony 126 { TIBUpdateRefreshSQLProperty }
529    
530     function TIBUpdateRefreshSQLProperty.GetObjects: boolean;
531     begin
532     Result := false;
533     FIBUpdate := GetComponent(0) as TIBUpdate;
534     if not assigned(FIBUpdate) or not assigned(FIBUpdate.DataSet) then
535     Exit;
536     FDatabase := nil;
537     if FIBUpdate.DataSet is TIBQuery then
538     begin
539     FDatabase := (FIBUpdate.DataSet as TIBQuery).Database;
540     Result := true
541     end;
542     end;
543    
544     procedure TIBUpdateRefreshSQLProperty.Edit;
545     begin
546     GetObjects;
547     if IBRefreshSQLEditor.EditSQL(FIBUpdate.DataSet,FIBUpdate.RefreshSQL) then Modified;
548     end;
549    
550 tony 107 { TIBPackageNameProperty }
551    
552     procedure TIBPackageNameProperty.GetValues(Proc: TGetStrProc);
553     var
554     StoredProc : TIBStoredProc;
555     i : integer;
556     begin
557     StoredProc := GetComponent(0) as TIBStoredProc;
558     if StoredProc.Database = nil then
559     Exit;
560    
561     with StoredProc do
562     try
563     for I := 0 to PackageNames.Count - 1 do
564     Proc (PackageNames[i]);
565     except on E: Exception do
566     MessageDlg(E.Message,mtError,[mbOK],0)
567     end;
568     end;
569    
570 tony 45 { TIBIndexDefsProperty }
571    
572     procedure TIBIndexDefsProperty.Edit;
573     var IndexDefs: TIndexDefs;
574     begin
575     IndexDefs := TIndexDefs(GetObjectValue);
576     if IndexDefs <> nil then
577     IndexDefs.Update;
578     inherited Edit;
579     end;
580    
581     { TIBFieldDefsProperty }
582    
583     procedure TIBFieldDefsProperty.Edit;
584     var FieldDefs: TFieldDefs;
585     begin
586     FieldDefs := TFieldDefs(GetObjectValue);
587     if FieldDefs <> nil then
588     FieldDefs.Update;
589     inherited Edit;
590     end;
591    
592     { TIBArrayGridEditor }
593    
594     procedure TIBArrayGridEditor.ExecuteVerb(Index: Integer);
595     begin
596     if Index < inherited GetVerbCount then
597     inherited ExecuteVerb(Index)
598     else
599     case Index of
600     0: TIBArrayGrid(Component).UpdateLayout;
601     end;
602     end;
603    
604     function TIBArrayGridEditor.GetVerb(Index: Integer): string;
605     begin
606     if Index < inherited GetVerbCount then
607     Result := inherited GetVerb(Index) else
608     begin
609     Dec(Index, inherited GetVerbCount);
610     case Index of
611     0: Result := SIBUpdateLayout;
612     1 : Result := SInterbaseExpressVersion ;
613     end;
614     end;
615     end;
616    
617     function TIBArrayGridEditor.GetVerbCount: Integer;
618     begin
619     Result := 2;
620     end;
621    
622 tony 33 { TDBLookupPropertiesGridFieldProperty }
623    
624     procedure TDBLookupPropertiesGridFieldProperty.FillValues(
625     const Values: TStringList);
626     var
627     P: TDBLookupProperties;
628     begin
629     P :=TDBLookupProperties(GetComponent(0));
630     if not (P is TDBLookupProperties) then exit;
631     LoadDataSourceFields(TIBDynamicGrid(P.Owner.Grid).DataSource, Values);
632     end;
633    
634     { TIBTreeViewFieldProperty }
635    
636     procedure TIBTreeViewFieldProperty.FillValues(const Values: TStringList);
637     var ListSource: TDataSource;
638     begin
639     ListSource := TIBTreeView(GetComponent(0)).DataSource;
640     LoadDataSourceFields(ListSource, Values);
641     end;
642    
643     { TIBDynamicGridIndexNamesProperty }
644    
645     function TIBDynamicGridIndexNamesProperty.GetFieldDefs: TFieldDefs;
646     var Grid: TIBDynamicGrid;
647     begin
648     Result := nil;
649     Grid := TIBDynamicGrid(GetComponent(0));
650     if assigned(Grid.DataSource) and assigned(Grid.DataSource.DataSet) then
651     Result := Grid.DataSource.DataSet.FieldDefs
652     end;
653    
654     function TIBDynamicGridIndexNamesProperty.GetIndexFieldNames: string;
655     var Grid: TIBDynamicGrid;
656     begin
657     Grid := TIBDynamicGrid(GetComponent(0));
658     Result := Grid.IndexFieldNames
659     end;
660    
661     procedure TIBDynamicGridIndexNamesProperty.SetIndexFieldNames(
662     const Value: string);
663     var Grid: TIBDynamicGrid;
664     begin
665     Grid := TIBDynamicGrid(GetComponent(0));
666     Grid.IndexFieldNames := Value
667     end;
668    
669     { TDBDynamicGridFieldProperty }
670    
671     procedure TDBDynamicGridFieldProperty.FillValues(const Values: TStringList);
672     var
673     P: TDBLookupProperties;
674     begin
675     P :=TDBLookupProperties(GetComponent(0));
676     if not (P is TDBLookupProperties) then exit;
677     LoadDataSourceFields(P.ListSource, Values);
678     end;
679    
680     { TIBServiceEditor }
681    
682     procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
683     begin
684     if Index < inherited GetVerbCount then
685     inherited ExecuteVerb(Index) else
686     begin
687     Dec(Index, inherited GetVerbCount);
688     case Index of
689     0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
690     end;
691     end;
692     end;
693    
694     function TIBServiceEditor.GetVerb(Index: Integer): string;
695     begin
696     if Index < inherited GetVerbCount then
697     Result := inherited GetVerb(Index) else
698     begin
699     Dec(Index, inherited GetVerbCount);
700     case Index of
701     0: Result := SIBServiceEditor;
702     1 : Result := SInterbaseExpressVersion;
703     end;
704     end;
705     end;
706    
707     function TIBServiceEditor.GetVerbCount: Integer;
708     begin
709     Result := inherited GetVerbCount + 2;
710     end;
711    
712     { TIBFileNameProperty }
713     procedure TIBFileNameProperty.Edit;
714     begin
715     with TOpenDialog.Create(Application) do
716     try
717     InitialDir := ExtractFilePath(GetStrValue);
718     Filter := SDatabaseFilter; {do not localize}
719     if Execute then
720     SetStrValue(FileName);
721     finally
722     Free
723     end;
724     end;
725    
726     function TIBFileNameProperty.GetAttributes: TPropertyAttributes;
727     begin
728     Result := [paDialog];
729     end;
730    
731     { TIBNameProperty }
732    
733     function TIBNameProperty.GetAttributes: TPropertyAttributes;
734     begin
735     Result := [paValueList, paSortList];
736     end;
737    
738     { TIBStoredProcNameProperty }
739    
740     procedure TIBStoredProcNameProperty.GetValues(Proc: TGetStrProc);
741     var
742     StoredProc : TIBStoredProc;
743     i : integer;
744     begin
745     StoredProc := GetComponent(0) as TIBStoredProc;
746     if StoredProc.Database = nil then
747     Exit;
748    
749     with StoredProc do
750     try
751     for I := 0 to StoredProcedureNames.Count - 1 do
752     Proc (StoredProcedureNames[i]);
753     except on E: Exception do
754     MessageDlg(E.Message,mtError,[mbOK],0)
755     end;
756     end;
757    
758     { TIBTableNameProperty }
759    
760     procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
761     var
762     Table : TIBTable;
763     i : integer;
764     begin
765     Table := GetComponent(0) as TIBTable;
766     if Table.Database = nil then
767     Exit;
768     with Table do
769     for I := 0 to TableNames.Count - 1 do
770     Proc (TableNames[i]);
771     end;
772    
773     { TDBStringProperty }
774    
775     function TDBStringProperty.ConnecttoDB: boolean;
776     var DataSet: TIBCustomDataSet;
777     begin
778     Result := false;
779     DataSet := (GetComponent(0) as TIBCustomDataSet);
780     if assigned(Dataset.Database) then
781     begin
782     try
783     DataSet.Database.Connected := true;
784     except on E: Exception do
785     ShowMessage(E.Message)
786     end;
787     Result := DataSet.Database.Connected
788     end;
789     end;
790    
791     function TDBStringProperty.GetAttributes: TPropertyAttributes;
792     begin
793     Result := [paValueList, paSortList, paMultiSelect];
794     end;
795    
796     procedure TDBStringProperty.GetValueList(List: TStrings);
797     begin
798     end;
799    
800     procedure TDBStringProperty.GetValues(Proc: TGetStrProc);
801     var
802     I: Integer;
803     Values: TStringList;
804     begin
805     if not ConnecttoDB then Exit;
806     Values := TStringList.Create;
807     try
808     GetValueList(Values);
809     for I := 0 to Values.Count - 1 do Proc(Values[I]);
810     finally
811     Values.Free;
812     end;
813     end;
814    
815     procedure TDBStringProperty.Edit;
816     begin
817     if ConnecttoDB then
818     inherited Edit;
819     end;
820    
821     { Utility Functions }
822    
823     function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
824     var
825     PropInfo: PPropInfo;
826     begin
827     Result := nil;
828     PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, PropName);
829     if (PropInfo <> nil) and (PropInfo^.PropType^.Kind = tkClass) then
830     Result := TObject(GetOrdProp(Instance, PropInfo)) as TPersistent;
831     end;
832    
833     function GetIndexDefs(Component: TPersistent): TIndexDefs;
834     var
835     DataSet: TDataSet;
836     begin
837     DataSet := Component as TDataSet;
838     Result := GetPropertyValue(DataSet, 'IndexDefs') as TIndexDefs; {do not localize}
839     if Assigned(Result) then
840     begin
841     Result.Updated := False;
842     Result.Update;
843     end;
844     end;
845    
846     { TIBIndexFieldNamesProperty }
847    
848     procedure TIBIndexFieldNamesProperty.GetValueList(List: TStrings);
849     var
850     I: Integer;
851     IndexDefs: TIndexDefs;
852     begin
853     IndexDefs := GetIndexDefs(GetComponent(0));
854     for I := 0 to IndexDefs.Count - 1 do
855     with IndexDefs[I] do
856     if (Options * [ixExpression, ixDescending] = []) and (Fields <> '') then
857     List.Add(Fields);
858     end;
859    
860    
861     { TIBIndexNameProperty }
862    
863     procedure TIBIndexNameProperty.GetValueList(List: TStrings);
864     begin
865     GetIndexDefs(GetComponent(0)).GetItemNames(List);
866     end;
867    
868     { TSQLPropertyEditor }
869    
870     function TSQLPropertyEditor.GetAttributes: TPropertyAttributes;
871     begin
872     Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
873     end;
874    
875     { TIBQuerySQLProperty }
876    
877     procedure TIBQuerySQLProperty.Edit;
878     var
879     Query: TIBQuery;
880     begin
881     Query := GetComponent(0) as TIBQuery;
882     if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
883     end;
884    
885     { TIBDatasetSQLProperty }
886    
887     procedure TIBDatasetSQLProperty.Edit;
888     var
889     IBDataset: TIBDataset;
890     begin
891     IBDataset := GetComponent(0) as TIBDataset;
892     if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
893     end;
894    
895     { TIBSQLProperty }
896    
897     procedure TIBSQLProperty.Edit;
898     var
899     IBSQL: TIBSQL;
900     begin
901     IBSQL := GetComponent(0) as TIBSQL;
902 tony 80 if IBSQLEditor.EditSQL(IBSQL) then Modified;
903 tony 33 end;
904    
905     { TIBUpdateSQLEditor }
906    
907     procedure TIBUpdateSQLEditor.ExecuteVerb(Index: Integer);
908     begin
909     if IBUpdateSQLEditor.EditIBUpdateSQL(TIBUpdateSQL(Component)) then Modified;
910     end;
911    
912     function TIBUpdateSQLEditor.GetVerb(Index: Integer): string;
913     begin
914     case Index of
915     0 : Result := SIBUpdateSQLEditor;
916 tony 45 1: Result := SInterbaseExpressVersion ;
917 tony 33 end;
918     end;
919    
920     function TIBUpdateSQLEditor.GetVerbCount: Integer;
921     begin
922     Result := 2;
923     end;
924    
925     { TIBDataSetEditor }
926    
927     procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
928     begin
929     if Index < inherited GetVerbCount then
930     inherited ExecuteVerb(Index) else
931     begin
932     Dec(Index, inherited GetVerbCount);
933     case Index of
934     0:
935     if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
936     Designer.Modified;
937     1: (Component as TIBDataSet).ExecSQL;
938     end;
939     end;
940     end;
941    
942     function TIBDataSetEditor.GetVerb(Index: Integer): string;
943     begin
944     if Index < inherited GetVerbCount then
945     Result := inherited GetVerb(Index) else
946     begin
947     Dec(Index, inherited GetVerbCount);
948     case Index of
949     0: Result := SIBDataSetEditor;
950     1: Result := SExecute;
951 tony 45 2: Result := SInterbaseExpressVersion ;
952 tony 33 end;
953     end;
954     end;
955    
956     function TIBDataSetEditor.GetVerbCount: Integer;
957     begin
958     Result := inherited GetVerbCount + 3;
959     end;
960    
961     { TIBEventListProperty }
962    
963     function TIBEventListProperty.GetAttributes: TPropertyAttributes;
964     begin
965     Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
966     end;
967    
968     procedure TIBEventListProperty.Edit;
969     var
970     Events: TStrings;
971     IBEvents: TIBEvents;
972     begin
973     IBEvents := GetComponent(0) as TIBEvents;
974     Events := TStringList.Create;
975     try
976     Events.Assign( IBEvents.Events);
977     if EditAlerterEvents( Events) then
978     begin
979     IBEvents.Events.Assign(Events);
980     Modified
981     end;
982     finally
983     Events.Free;
984     end;
985     end;
986    
987     { TIBDatabaseEditor }
988     procedure TIBDatabaseEditor.ExecuteVerb(Index: Integer);
989     begin
990     if Index < inherited GetVerbCount then
991     inherited ExecuteVerb(Index) else
992     begin
993     Dec(Index, inherited GetVerbCount);
994     case Index of
995     0 : if EditIBDatabase(TIBDatabase(Component)) then Designer.Modified;
996     end;
997     end;
998     end;
999    
1000     function TIBDatabaseEditor.GetVerb(Index: Integer): string;
1001     begin
1002     if Index < inherited GetVerbCount then
1003     Result := inherited GetVerb(Index) else
1004     begin
1005     Dec(Index, inherited GetVerbCount);
1006     case Index of
1007     0: Result := SIBDatabaseEditor;
1008 tony 45 1 : Result := SInterbaseExpressVersion ;
1009 tony 33 end;
1010     end;
1011     end;
1012    
1013     function TIBDatabaseEditor.GetVerbCount: Integer;
1014     begin
1015     Result := inherited GetVerbCount + 2;
1016     end;
1017    
1018     { TIBTransactionEditor }
1019    
1020     procedure TIBTransactionEditor.ExecuteVerb(Index: Integer);
1021     begin
1022     case Index of
1023     0: if EditIBTransaction(TIBTransaction(Component)) then Designer.Modified;
1024     end;
1025     end;
1026    
1027     function TIBTransactionEditor.GetVerb(Index: Integer): string;
1028     begin
1029     case Index of
1030     0: Result := SIBTransactionEditor;
1031 tony 45 1: Result := SInterbaseExpressVersion ;
1032 tony 33 end;
1033     end;
1034    
1035     function TIBTransactionEditor.GetVerbCount: Integer;
1036     begin
1037     Result := 2;
1038     end;
1039    
1040     { TIBQueryEditor }
1041    
1042     procedure TIBQueryEditor.ExecuteVerb(Index: Integer);
1043     var
1044     Query: TIBQuery;
1045     begin
1046     if Index < inherited GetVerbCount then
1047     inherited ExecuteVerb(Index) else
1048     begin
1049     Query := Component as TIBQuery;
1050     Dec(Index, inherited GetVerbCount);
1051     case Index of
1052     0: Query.ExecSQL;
1053     1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
1054     end;
1055     end;
1056     end;
1057    
1058     function TIBQueryEditor.GetVerb(Index: Integer): string;
1059     begin
1060     if Index < inherited GetVerbCount then
1061     Result := inherited GetVerb(Index) else
1062     begin
1063     Dec(Index, inherited GetVerbCount);
1064     case Index of
1065     0: Result := SExecute;
1066     1: Result := SEditSQL;
1067 tony 45 2: Result := SInterbaseExpressVersion ;
1068 tony 33 end;
1069     end;
1070     end;
1071    
1072     function TIBQueryEditor.GetVerbCount: Integer;
1073     begin
1074     Result := inherited GetVerbCount + 3;
1075     end;
1076    
1077     { TIBStoredProcEditor }
1078    
1079     procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer);
1080     begin
1081     if Index < inherited GetVerbCount then
1082     inherited ExecuteVerb(Index) else
1083     begin
1084     Dec(Index, inherited GetVerbCount);
1085     if Index = 0 then (Component as TIBStoredProc).ExecProc;
1086     end;
1087     end;
1088    
1089     function TIBStoredProcEditor.GetVerb(Index: Integer): string;
1090     begin
1091     if Index < inherited GetVerbCount then
1092     Result := inherited GetVerb(Index) else
1093     begin
1094     Dec(Index, inherited GetVerbCount);
1095     case Index of
1096     0: Result := SExecute;
1097 tony 45 1: Result := SInterbaseExpressVersion ;
1098 tony 33 end;
1099     end;
1100     end;
1101    
1102     function TIBStoredProcEditor.GetVerbCount: Integer;
1103     begin
1104     Result := inherited GetVerbCount + 2;
1105     end;
1106    
1107     { TIBTableFieldLinkProperty }
1108    
1109     procedure TIBTableFieldLinkProperty.Edit;
1110     begin
1111     FTable := DataSet as TIBTable;
1112     if assigned(FTable.Database) then
1113     FTable.Database.Connected := true;
1114     inherited Edit;
1115     end;
1116    
1117     function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
1118     begin
1119     Result := FTable.IndexDefs
1120     end;
1121    
1122     function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
1123     begin
1124     Result := FTable.IndexFieldNames;
1125     end;
1126    
1127     function TIBTableFieldLinkProperty.GetMasterFields: string;
1128     begin
1129     Result := FTable.MasterFields;
1130     end;
1131    
1132     procedure TIBTableFieldLinkProperty.SetIndexFieldNames(const Value: string);
1133     begin
1134     FTable.IndexFieldNames := Value;
1135     end;
1136    
1137     procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
1138     begin
1139     FTable.MasterFields := Value;
1140     end;
1141    
1142     { TIBUpdateSQLProperty }
1143    
1144     procedure TIBUpdateSQLProperty.Edit;
1145     var
1146     IBDataset: TIBDataset;
1147     begin
1148     IBDataset := GetComponent(0) as TIBDataset;
1149     if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1150     end;
1151    
1152     { TIBUpdateSQLUpdateProperty }
1153    
1154     procedure TIBUpdateSQLUpdateProperty.Edit;
1155     begin
1156     GetObjects;
1157     if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1158     end;
1159    
1160     { TIBRefreshSQLProperty }
1161    
1162     procedure TIBRefreshSQLProperty.Edit;
1163     var
1164     IBDataset: TIBDataset;
1165     begin
1166     IBDataset := GetComponent(0) as TIBDataset;
1167     if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1168     end;
1169    
1170     { TIBUpdateSQLRefreshSQLProperty }
1171    
1172     procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1173     begin
1174     GetObjects;
1175     if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
1176     end;
1177    
1178     { TIBDeleteSQLProperty }
1179    
1180     procedure TIBDeleteSQLProperty.Edit;
1181     var
1182     IBDataset: TIBDataSet;
1183     begin
1184     IBDataset := GetComponent(0) as TIBDataSet;
1185     if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
1186     end;
1187    
1188     { TIBUpdateSQLDeleteProperty }
1189    
1190     function TIBUpdateSQLDeleteProperty.GetAttributes: TPropertyAttributes;
1191     begin
1192     Result:=inherited GetAttributes;
1193     end;
1194    
1195     procedure TIBUpdateSQLDeleteProperty.Edit;
1196     begin
1197     GetObjects;
1198     if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1199     end;
1200    
1201     { TUpdateSQLPropertyEditor }
1202    
1203     function TUpdateSQLPropertyEditor.GetObjects: boolean;
1204     begin
1205     Result := false;
1206     FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
1207     if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
1208     Exit;
1209     FDatabase := nil;
1210     if FIBUpdateSQL.DataSet is TIBQuery then
1211     begin
1212     FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
1213     Result := true
1214     end;
1215     end;
1216    
1217     { TIBInsertSQLProperty }
1218    
1219     procedure TIBInsertSQLProperty.Edit;
1220     var
1221     IBDataset: TIBDataSet;
1222     begin
1223     IBDataset := GetComponent(0) as TIBDataSet;
1224     if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1225     end;
1226    
1227     { TIBUpdateSQLInsertSQLProperty }
1228    
1229     procedure TIBUpdateSQLInsertSQLProperty.Edit;
1230     begin
1231     GetObjects;
1232     if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1233     end;
1234    
1235     { TIBGeneratorProperty }
1236    
1237     function TIBGeneratorProperty.GetAttributes: TPropertyAttributes;
1238     begin
1239     Result:= inherited GetAttributes + [paDialog] - [paMultiSelect,paValueList];
1240     end;
1241    
1242     procedure TIBGeneratorProperty.Edit;
1243     begin
1244     if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
1245     end;
1246    
1247     { TIBSQLEditor }
1248    
1249     procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1250     begin
1251 tony 80 if IBSQLEditor.EditSQL(TIBSQL(Component)) then Modified;
1252 tony 33 end;
1253    
1254     function TIBSQLEditor.GetVerb(Index: Integer): string;
1255     begin
1256     case Index of
1257     0 : Result := SIBSQLEditor;
1258 tony 45 1: Result := SInterbaseExpressVersion ;
1259 tony 33 end;
1260     end;
1261    
1262     function TIBSQLEditor.GetVerbCount: Integer;
1263     begin
1264     Result:= 2
1265     end;
1266    
1267     { TIBSQLSQLPropertyEditor }
1268    
1269     procedure TIBSQLSQLPropertyEditor.Edit;
1270     var
1271     IBSQL: TIBSQL;
1272     begin
1273     IBSQL := GetComponent(0) as TIBSQL;
1274 tony 80 if IBSQLEditor.EditSQL(IBSQL) then Modified;
1275 tony 33 end;
1276    
1277     initialization
1278     {$I IBDBReg.lrs}
1279     end.