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, 10 months ago) by tony
Content type: text/x-pascal
File size: 36182 byte(s)
Log Message:
Add property Editor for TIBUpdate.RefreshSQL

File Contents

# Content
1 {************************************************************************}
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 IBUpdateSQL, IBUpdate, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor,
58 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 { 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 { 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 { 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 { 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 { 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 { 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 { TIBFieldDefsProperty }
384
385 TIBFieldDefsProperty = class(TCollectionPropertyEditor)
386 public
387 procedure Edit; override;
388 end;
389
390 { TIBIndexDefsProperty }
391
392 TIBIndexDefsProperty = class(TCollectionPropertyEditor)
393 public
394 procedure Edit; override;
395 end;
396
397
398 procedure Register;
399
400 implementation
401
402 uses IB, IBQuery, IBStoredProc, IBCustomDataSet, FBMessages,
403 IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents, IBTypes,
404 IBServices, IBDatabaseEdit, IBTransactionEdit,
405 IBBatchMove, IBExtract,LResources, IBSelectSQLEditor,
406 IBModifySQLEditor,IBDeleteSQLEditor,IBRefreshSQLEditor,
407 IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor,
408 IBSQLEditor, ibserviceeditor, LCLVersion, IBDynamicGrid, IBLookupComboEditBox,
409 IBTreeView, DBControlGrid, ibxscript, IBLocalDBSupport, IBDSDialogs,
410 IBArrayGrid, IBVersion, IBDataOutput;
411
412 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 SInterbaseExpressVersion = 'Firebird Express for Lazarus ' + IBX_VERSION;
419 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
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 RegisterNoIcon([TIBStringField, TIBBCDField, TIBMemoField, TIBArrayField,
438 TIBSmallintField, TIBIntegerField, TIBLargeIntField]);
439 {$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 TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBUpdate, TIBEvents,
445 TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
446 TIBStoredProc,TIBBatchMove, TIBTable,TIBExtract, TIBXScript, TIBLocalDBSupport,
447 TIBBlockFormatOut,TIBCSVDataOut,TIBInsertStmtsOut]);
448 if FirebirdAPI.HasServiceAPI then
449 RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
450 TIBRestoreService, TIBValidationService, TIBStatisticalService,
451 TIBLogService, TIBSecurityService, TIBServerProperties]);
452
453
454 RegisterComponents(IBPalette3,[TIBLookupComboEditBox,TIBDynamicGrid,TIBTreeView,TDBControlGrid, TIBArrayGrid]);
455 RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
456 RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
457 RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'PackageName', TIBPackageNameProperty); {do not localize}
458 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 RegisterPropertyEditor(TypeInfo(TFieldDefs), TIBTable, 'FieldDefs', TIBFieldDefsProperty); {do not localize}
464 RegisterPropertyEditor(TypeInfo(TIndexDefs), TIBTable, 'IndexDefs', TIBIndexDefsProperty); {do not localize}
465 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 RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdate, 'RefreshSQL', TIBUpdateRefreshSQLProperty); {do not localize}
477 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 RegisterPropertyEditor(TypeInfo(TPersistent), TIBTable, 'GeneratorField', TIBGeneratorProperty); {do not localize}
481
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 RegisterComponentEditor(TIBArrayGrid, TIBArrayGridEditor);
491
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 IBGUIInterface := TIBDSLCLInterface.Create;
504 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 { 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 { 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 { 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 { 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 if IBSQLEditor.EditSQL(IBSQL) then Modified;
903 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 1: Result := SInterbaseExpressVersion ;
917 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 2: Result := SInterbaseExpressVersion ;
952 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 1 : Result := SInterbaseExpressVersion ;
1009 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 1: Result := SInterbaseExpressVersion ;
1032 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 2: Result := SInterbaseExpressVersion ;
1068 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 1: Result := SInterbaseExpressVersion ;
1098 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 if IBSQLEditor.EditSQL(TIBSQL(Component)) then Modified;
1252 end;
1253
1254 function TIBSQLEditor.GetVerb(Index: Integer): string;
1255 begin
1256 case Index of
1257 0 : Result := SIBSQLEditor;
1258 1: Result := SInterbaseExpressVersion ;
1259 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 if IBSQLEditor.EditSQL(IBSQL) then Modified;
1275 end;
1276
1277 initialization
1278 {$I IBDBReg.lrs}
1279 end.