ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/design/IBDBReg.pas
Revision: 143
Committed: Fri Feb 23 12:11:21 2018 UTC (6 years, 2 months ago) by tony
Content type: text/x-pascal
Original Path: ibx/trunk/design/IBDBReg.pas
File size: 36422 byte(s)
Log Message:
Fixes Merged

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 - 2018 }
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, TIBOnlineValidationService, 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 RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'ImageIndexField', TIBTreeViewFieldProperty);
503 RegisterPropertyEditor(TypeInfo(string), TIBTreeView, 'SelectedIndexField', TIBTreeViewFieldProperty);
504
505 IBGUIInterface := TIBDSLCLInterface.Create;
506 end;
507
508 procedure LoadDataSourceFields(DataSource: TDataSource; List: TStrings);
509 var
510 DataSet: TDataSet;
511 i: Integer;
512 begin
513 if Assigned(DataSource) then
514 begin
515 DataSet := DataSource.DataSet;
516 if Assigned(DataSet) then
517 begin
518 if DataSet.Fields.Count > 0 then
519 DataSet.GetFieldNames(List)
520 else
521 begin
522 DataSet.FieldDefs.Update;
523 for i := 0 to DataSet.FieldDefs.Count - 1 do
524 List.Add(DataSet.FieldDefs[i].Name);
525 end;
526 end;
527 end;
528 end;
529
530 { TIBUpdateRefreshSQLProperty }
531
532 function TIBUpdateRefreshSQLProperty.GetObjects: boolean;
533 begin
534 Result := false;
535 FIBUpdate := GetComponent(0) as TIBUpdate;
536 if not assigned(FIBUpdate) or not assigned(FIBUpdate.DataSet) then
537 Exit;
538 FDatabase := nil;
539 if FIBUpdate.DataSet is TIBQuery then
540 begin
541 FDatabase := (FIBUpdate.DataSet as TIBQuery).Database;
542 Result := true
543 end;
544 end;
545
546 procedure TIBUpdateRefreshSQLProperty.Edit;
547 begin
548 GetObjects;
549 if IBRefreshSQLEditor.EditSQL(FIBUpdate.DataSet,FIBUpdate.RefreshSQL) then Modified;
550 end;
551
552 { TIBPackageNameProperty }
553
554 procedure TIBPackageNameProperty.GetValues(Proc: TGetStrProc);
555 var
556 StoredProc : TIBStoredProc;
557 i : integer;
558 begin
559 StoredProc := GetComponent(0) as TIBStoredProc;
560 if StoredProc.Database = nil then
561 Exit;
562
563 with StoredProc do
564 try
565 for I := 0 to PackageNames.Count - 1 do
566 Proc (PackageNames[i]);
567 except on E: Exception do
568 MessageDlg(E.Message,mtError,[mbOK],0)
569 end;
570 end;
571
572 { TIBIndexDefsProperty }
573
574 procedure TIBIndexDefsProperty.Edit;
575 var IndexDefs: TIndexDefs;
576 begin
577 IndexDefs := TIndexDefs(GetObjectValue);
578 if IndexDefs <> nil then
579 IndexDefs.Update;
580 inherited Edit;
581 end;
582
583 { TIBFieldDefsProperty }
584
585 procedure TIBFieldDefsProperty.Edit;
586 var FieldDefs: TFieldDefs;
587 begin
588 FieldDefs := TFieldDefs(GetObjectValue);
589 if FieldDefs <> nil then
590 FieldDefs.Update;
591 inherited Edit;
592 end;
593
594 { TIBArrayGridEditor }
595
596 procedure TIBArrayGridEditor.ExecuteVerb(Index: Integer);
597 begin
598 if Index < inherited GetVerbCount then
599 inherited ExecuteVerb(Index)
600 else
601 case Index of
602 0: TIBArrayGrid(Component).UpdateLayout;
603 end;
604 end;
605
606 function TIBArrayGridEditor.GetVerb(Index: Integer): string;
607 begin
608 if Index < inherited GetVerbCount then
609 Result := inherited GetVerb(Index) else
610 begin
611 Dec(Index, inherited GetVerbCount);
612 case Index of
613 0: Result := SIBUpdateLayout;
614 1 : Result := SInterbaseExpressVersion ;
615 end;
616 end;
617 end;
618
619 function TIBArrayGridEditor.GetVerbCount: Integer;
620 begin
621 Result := 2;
622 end;
623
624 { TDBLookupPropertiesGridFieldProperty }
625
626 procedure TDBLookupPropertiesGridFieldProperty.FillValues(
627 const Values: TStringList);
628 var
629 P: TDBLookupProperties;
630 begin
631 P :=TDBLookupProperties(GetComponent(0));
632 if not (P is TDBLookupProperties) then exit;
633 LoadDataSourceFields(TIBDynamicGrid(P.Owner.Grid).DataSource, Values);
634 end;
635
636 { TIBTreeViewFieldProperty }
637
638 procedure TIBTreeViewFieldProperty.FillValues(const Values: TStringList);
639 var ListSource: TDataSource;
640 begin
641 ListSource := TIBTreeView(GetComponent(0)).DataSource;
642 LoadDataSourceFields(ListSource, Values);
643 end;
644
645 { TIBDynamicGridIndexNamesProperty }
646
647 function TIBDynamicGridIndexNamesProperty.GetFieldDefs: TFieldDefs;
648 var Grid: TIBDynamicGrid;
649 begin
650 Result := nil;
651 Grid := TIBDynamicGrid(GetComponent(0));
652 if assigned(Grid.DataSource) and assigned(Grid.DataSource.DataSet) then
653 Result := Grid.DataSource.DataSet.FieldDefs
654 end;
655
656 function TIBDynamicGridIndexNamesProperty.GetIndexFieldNames: string;
657 var Grid: TIBDynamicGrid;
658 begin
659 Grid := TIBDynamicGrid(GetComponent(0));
660 Result := Grid.IndexFieldNames
661 end;
662
663 procedure TIBDynamicGridIndexNamesProperty.SetIndexFieldNames(
664 const Value: string);
665 var Grid: TIBDynamicGrid;
666 begin
667 Grid := TIBDynamicGrid(GetComponent(0));
668 Grid.IndexFieldNames := Value
669 end;
670
671 { TDBDynamicGridFieldProperty }
672
673 procedure TDBDynamicGridFieldProperty.FillValues(const Values: TStringList);
674 var
675 P: TDBLookupProperties;
676 begin
677 P :=TDBLookupProperties(GetComponent(0));
678 if not (P is TDBLookupProperties) then exit;
679 LoadDataSourceFields(P.ListSource, Values);
680 end;
681
682 { TIBServiceEditor }
683
684 procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
685 begin
686 if Index < inherited GetVerbCount then
687 inherited ExecuteVerb(Index) else
688 begin
689 Dec(Index, inherited GetVerbCount);
690 case Index of
691 0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
692 end;
693 end;
694 end;
695
696 function TIBServiceEditor.GetVerb(Index: Integer): string;
697 begin
698 if Index < inherited GetVerbCount then
699 Result := inherited GetVerb(Index) else
700 begin
701 Dec(Index, inherited GetVerbCount);
702 case Index of
703 0: Result := SIBServiceEditor;
704 1 : Result := SInterbaseExpressVersion;
705 end;
706 end;
707 end;
708
709 function TIBServiceEditor.GetVerbCount: Integer;
710 begin
711 Result := inherited GetVerbCount + 2;
712 end;
713
714 { TIBFileNameProperty }
715 procedure TIBFileNameProperty.Edit;
716 begin
717 with TOpenDialog.Create(Application) do
718 try
719 InitialDir := ExtractFilePath(GetStrValue);
720 Filter := SDatabaseFilter; {do not localize}
721 if Execute then
722 SetStrValue(FileName);
723 finally
724 Free
725 end;
726 end;
727
728 function TIBFileNameProperty.GetAttributes: TPropertyAttributes;
729 begin
730 Result := [paDialog];
731 end;
732
733 { TIBNameProperty }
734
735 function TIBNameProperty.GetAttributes: TPropertyAttributes;
736 begin
737 Result := [paValueList, paSortList];
738 end;
739
740 { TIBStoredProcNameProperty }
741
742 procedure TIBStoredProcNameProperty.GetValues(Proc: TGetStrProc);
743 var
744 StoredProc : TIBStoredProc;
745 i : integer;
746 begin
747 StoredProc := GetComponent(0) as TIBStoredProc;
748 if StoredProc.Database = nil then
749 Exit;
750
751 with StoredProc do
752 try
753 for I := 0 to StoredProcedureNames.Count - 1 do
754 Proc (StoredProcedureNames[i]);
755 except on E: Exception do
756 MessageDlg(E.Message,mtError,[mbOK],0)
757 end;
758 end;
759
760 { TIBTableNameProperty }
761
762 procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
763 var
764 Table : TIBTable;
765 i : integer;
766 begin
767 Table := GetComponent(0) as TIBTable;
768 if Table.Database = nil then
769 Exit;
770 with Table do
771 for I := 0 to TableNames.Count - 1 do
772 Proc (TableNames[i]);
773 end;
774
775 { TDBStringProperty }
776
777 function TDBStringProperty.ConnecttoDB: boolean;
778 var DataSet: TIBCustomDataSet;
779 begin
780 Result := false;
781 DataSet := (GetComponent(0) as TIBCustomDataSet);
782 if assigned(Dataset.Database) then
783 begin
784 try
785 DataSet.Database.Connected := true;
786 except on E: Exception do
787 ShowMessage(E.Message)
788 end;
789 Result := DataSet.Database.Connected
790 end;
791 end;
792
793 function TDBStringProperty.GetAttributes: TPropertyAttributes;
794 begin
795 Result := [paValueList, paSortList, paMultiSelect];
796 end;
797
798 procedure TDBStringProperty.GetValueList(List: TStrings);
799 begin
800 end;
801
802 procedure TDBStringProperty.GetValues(Proc: TGetStrProc);
803 var
804 I: Integer;
805 Values: TStringList;
806 begin
807 if not ConnecttoDB then Exit;
808 Values := TStringList.Create;
809 try
810 GetValueList(Values);
811 for I := 0 to Values.Count - 1 do Proc(Values[I]);
812 finally
813 Values.Free;
814 end;
815 end;
816
817 procedure TDBStringProperty.Edit;
818 begin
819 if ConnecttoDB then
820 inherited Edit;
821 end;
822
823 { Utility Functions }
824
825 function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
826 var
827 PropInfo: PPropInfo;
828 begin
829 Result := nil;
830 PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, PropName);
831 if (PropInfo <> nil) and (PropInfo^.PropType^.Kind = tkClass) then
832 Result := TObject(GetOrdProp(Instance, PropInfo)) as TPersistent;
833 end;
834
835 function GetIndexDefs(Component: TPersistent): TIndexDefs;
836 var
837 DataSet: TDataSet;
838 begin
839 DataSet := Component as TDataSet;
840 Result := GetPropertyValue(DataSet, 'IndexDefs') as TIndexDefs; {do not localize}
841 if Assigned(Result) then
842 begin
843 Result.Updated := False;
844 Result.Update;
845 end;
846 end;
847
848 { TIBIndexFieldNamesProperty }
849
850 procedure TIBIndexFieldNamesProperty.GetValueList(List: TStrings);
851 var
852 I: Integer;
853 IndexDefs: TIndexDefs;
854 begin
855 IndexDefs := GetIndexDefs(GetComponent(0));
856 for I := 0 to IndexDefs.Count - 1 do
857 with IndexDefs[I] do
858 if (Options * [ixExpression, ixDescending] = []) and (Fields <> '') then
859 List.Add(Fields);
860 end;
861
862
863 { TIBIndexNameProperty }
864
865 procedure TIBIndexNameProperty.GetValueList(List: TStrings);
866 begin
867 GetIndexDefs(GetComponent(0)).GetItemNames(List);
868 end;
869
870 { TSQLPropertyEditor }
871
872 function TSQLPropertyEditor.GetAttributes: TPropertyAttributes;
873 begin
874 Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
875 end;
876
877 { TIBQuerySQLProperty }
878
879 procedure TIBQuerySQLProperty.Edit;
880 var
881 Query: TIBQuery;
882 begin
883 Query := GetComponent(0) as TIBQuery;
884 if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
885 end;
886
887 { TIBDatasetSQLProperty }
888
889 procedure TIBDatasetSQLProperty.Edit;
890 var
891 IBDataset: TIBDataset;
892 begin
893 IBDataset := GetComponent(0) as TIBDataset;
894 if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
895 end;
896
897 { TIBSQLProperty }
898
899 procedure TIBSQLProperty.Edit;
900 var
901 IBSQL: TIBSQL;
902 begin
903 IBSQL := GetComponent(0) as TIBSQL;
904 if IBSQLEditor.EditSQL(IBSQL) then Modified;
905 end;
906
907 { TIBUpdateSQLEditor }
908
909 procedure TIBUpdateSQLEditor.ExecuteVerb(Index: Integer);
910 begin
911 if IBUpdateSQLEditor.EditIBUpdateSQL(TIBUpdateSQL(Component)) then Modified;
912 end;
913
914 function TIBUpdateSQLEditor.GetVerb(Index: Integer): string;
915 begin
916 case Index of
917 0 : Result := SIBUpdateSQLEditor;
918 1: Result := SInterbaseExpressVersion ;
919 end;
920 end;
921
922 function TIBUpdateSQLEditor.GetVerbCount: Integer;
923 begin
924 Result := 2;
925 end;
926
927 { TIBDataSetEditor }
928
929 procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
930 begin
931 if Index < inherited GetVerbCount then
932 inherited ExecuteVerb(Index) else
933 begin
934 Dec(Index, inherited GetVerbCount);
935 case Index of
936 0:
937 if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
938 Designer.Modified;
939 1: (Component as TIBDataSet).ExecSQL;
940 end;
941 end;
942 end;
943
944 function TIBDataSetEditor.GetVerb(Index: Integer): string;
945 begin
946 if Index < inherited GetVerbCount then
947 Result := inherited GetVerb(Index) else
948 begin
949 Dec(Index, inherited GetVerbCount);
950 case Index of
951 0: Result := SIBDataSetEditor;
952 1: Result := SExecute;
953 2: Result := SInterbaseExpressVersion ;
954 end;
955 end;
956 end;
957
958 function TIBDataSetEditor.GetVerbCount: Integer;
959 begin
960 Result := inherited GetVerbCount + 3;
961 end;
962
963 { TIBEventListProperty }
964
965 function TIBEventListProperty.GetAttributes: TPropertyAttributes;
966 begin
967 Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
968 end;
969
970 procedure TIBEventListProperty.Edit;
971 var
972 Events: TStrings;
973 IBEvents: TIBEvents;
974 begin
975 IBEvents := GetComponent(0) as TIBEvents;
976 Events := TStringList.Create;
977 try
978 Events.Assign( IBEvents.Events);
979 if EditAlerterEvents( Events) then
980 begin
981 IBEvents.Events.Assign(Events);
982 Modified
983 end;
984 finally
985 Events.Free;
986 end;
987 end;
988
989 { TIBDatabaseEditor }
990 procedure TIBDatabaseEditor.ExecuteVerb(Index: Integer);
991 begin
992 if Index < inherited GetVerbCount then
993 inherited ExecuteVerb(Index) else
994 begin
995 Dec(Index, inherited GetVerbCount);
996 case Index of
997 0 : if EditIBDatabase(TIBDatabase(Component)) then Designer.Modified;
998 end;
999 end;
1000 end;
1001
1002 function TIBDatabaseEditor.GetVerb(Index: Integer): string;
1003 begin
1004 if Index < inherited GetVerbCount then
1005 Result := inherited GetVerb(Index) else
1006 begin
1007 Dec(Index, inherited GetVerbCount);
1008 case Index of
1009 0: Result := SIBDatabaseEditor;
1010 1 : Result := SInterbaseExpressVersion ;
1011 end;
1012 end;
1013 end;
1014
1015 function TIBDatabaseEditor.GetVerbCount: Integer;
1016 begin
1017 Result := inherited GetVerbCount + 2;
1018 end;
1019
1020 { TIBTransactionEditor }
1021
1022 procedure TIBTransactionEditor.ExecuteVerb(Index: Integer);
1023 begin
1024 case Index of
1025 0: if EditIBTransaction(TIBTransaction(Component)) then Designer.Modified;
1026 end;
1027 end;
1028
1029 function TIBTransactionEditor.GetVerb(Index: Integer): string;
1030 begin
1031 case Index of
1032 0: Result := SIBTransactionEditor;
1033 1: Result := SInterbaseExpressVersion ;
1034 end;
1035 end;
1036
1037 function TIBTransactionEditor.GetVerbCount: Integer;
1038 begin
1039 Result := 2;
1040 end;
1041
1042 { TIBQueryEditor }
1043
1044 procedure TIBQueryEditor.ExecuteVerb(Index: Integer);
1045 var
1046 Query: TIBQuery;
1047 begin
1048 if Index < inherited GetVerbCount then
1049 inherited ExecuteVerb(Index) else
1050 begin
1051 Query := Component as TIBQuery;
1052 Dec(Index, inherited GetVerbCount);
1053 case Index of
1054 0: Query.ExecSQL;
1055 1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
1056 end;
1057 end;
1058 end;
1059
1060 function TIBQueryEditor.GetVerb(Index: Integer): string;
1061 begin
1062 if Index < inherited GetVerbCount then
1063 Result := inherited GetVerb(Index) else
1064 begin
1065 Dec(Index, inherited GetVerbCount);
1066 case Index of
1067 0: Result := SExecute;
1068 1: Result := SEditSQL;
1069 2: Result := SInterbaseExpressVersion ;
1070 end;
1071 end;
1072 end;
1073
1074 function TIBQueryEditor.GetVerbCount: Integer;
1075 begin
1076 Result := inherited GetVerbCount + 3;
1077 end;
1078
1079 { TIBStoredProcEditor }
1080
1081 procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer);
1082 begin
1083 if Index < inherited GetVerbCount then
1084 inherited ExecuteVerb(Index) else
1085 begin
1086 Dec(Index, inherited GetVerbCount);
1087 if Index = 0 then (Component as TIBStoredProc).ExecProc;
1088 end;
1089 end;
1090
1091 function TIBStoredProcEditor.GetVerb(Index: Integer): string;
1092 begin
1093 if Index < inherited GetVerbCount then
1094 Result := inherited GetVerb(Index) else
1095 begin
1096 Dec(Index, inherited GetVerbCount);
1097 case Index of
1098 0: Result := SExecute;
1099 1: Result := SInterbaseExpressVersion ;
1100 end;
1101 end;
1102 end;
1103
1104 function TIBStoredProcEditor.GetVerbCount: Integer;
1105 begin
1106 Result := inherited GetVerbCount + 2;
1107 end;
1108
1109 { TIBTableFieldLinkProperty }
1110
1111 procedure TIBTableFieldLinkProperty.Edit;
1112 begin
1113 FTable := DataSet as TIBTable;
1114 if assigned(FTable.Database) then
1115 FTable.Database.Connected := true;
1116 inherited Edit;
1117 end;
1118
1119 function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
1120 begin
1121 Result := FTable.IndexDefs
1122 end;
1123
1124 function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
1125 begin
1126 Result := FTable.IndexFieldNames;
1127 end;
1128
1129 function TIBTableFieldLinkProperty.GetMasterFields: string;
1130 begin
1131 Result := FTable.MasterFields;
1132 end;
1133
1134 procedure TIBTableFieldLinkProperty.SetIndexFieldNames(const Value: string);
1135 begin
1136 FTable.IndexFieldNames := Value;
1137 end;
1138
1139 procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
1140 begin
1141 FTable.MasterFields := Value;
1142 end;
1143
1144 { TIBUpdateSQLProperty }
1145
1146 procedure TIBUpdateSQLProperty.Edit;
1147 var
1148 IBDataset: TIBDataset;
1149 begin
1150 IBDataset := GetComponent(0) as TIBDataset;
1151 if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
1152 end;
1153
1154 { TIBUpdateSQLUpdateProperty }
1155
1156 procedure TIBUpdateSQLUpdateProperty.Edit;
1157 begin
1158 GetObjects;
1159 if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
1160 end;
1161
1162 { TIBRefreshSQLProperty }
1163
1164 procedure TIBRefreshSQLProperty.Edit;
1165 var
1166 IBDataset: TIBDataset;
1167 begin
1168 IBDataset := GetComponent(0) as TIBDataset;
1169 if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
1170 end;
1171
1172 { TIBUpdateSQLRefreshSQLProperty }
1173
1174 procedure TIBUpdateSQLRefreshSQLProperty.Edit;
1175 begin
1176 GetObjects;
1177 if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
1178 end;
1179
1180 { TIBDeleteSQLProperty }
1181
1182 procedure TIBDeleteSQLProperty.Edit;
1183 var
1184 IBDataset: TIBDataSet;
1185 begin
1186 IBDataset := GetComponent(0) as TIBDataSet;
1187 if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
1188 end;
1189
1190 { TIBUpdateSQLDeleteProperty }
1191
1192 function TIBUpdateSQLDeleteProperty.GetAttributes: TPropertyAttributes;
1193 begin
1194 Result:=inherited GetAttributes;
1195 end;
1196
1197 procedure TIBUpdateSQLDeleteProperty.Edit;
1198 begin
1199 GetObjects;
1200 if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
1201 end;
1202
1203 { TUpdateSQLPropertyEditor }
1204
1205 function TUpdateSQLPropertyEditor.GetObjects: boolean;
1206 begin
1207 Result := false;
1208 FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
1209 if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
1210 Exit;
1211 FDatabase := nil;
1212 if FIBUpdateSQL.DataSet is TIBQuery then
1213 begin
1214 FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
1215 Result := true
1216 end;
1217 end;
1218
1219 { TIBInsertSQLProperty }
1220
1221 procedure TIBInsertSQLProperty.Edit;
1222 var
1223 IBDataset: TIBDataSet;
1224 begin
1225 IBDataset := GetComponent(0) as TIBDataSet;
1226 if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
1227 end;
1228
1229 { TIBUpdateSQLInsertSQLProperty }
1230
1231 procedure TIBUpdateSQLInsertSQLProperty.Edit;
1232 begin
1233 GetObjects;
1234 if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
1235 end;
1236
1237 { TIBGeneratorProperty }
1238
1239 function TIBGeneratorProperty.GetAttributes: TPropertyAttributes;
1240 begin
1241 Result:= inherited GetAttributes + [paDialog] - [paMultiSelect,paValueList];
1242 end;
1243
1244 procedure TIBGeneratorProperty.Edit;
1245 begin
1246 if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
1247 end;
1248
1249 { TIBSQLEditor }
1250
1251 procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
1252 begin
1253 if IBSQLEditor.EditSQL(TIBSQL(Component)) then Modified;
1254 end;
1255
1256 function TIBSQLEditor.GetVerb(Index: Integer): string;
1257 begin
1258 case Index of
1259 0 : Result := SIBSQLEditor;
1260 1: Result := SInterbaseExpressVersion ;
1261 end;
1262 end;
1263
1264 function TIBSQLEditor.GetVerbCount: Integer;
1265 begin
1266 Result:= 2
1267 end;
1268
1269 { TIBSQLSQLPropertyEditor }
1270
1271 procedure TIBSQLSQLPropertyEditor.Edit;
1272 var
1273 IBSQL: TIBSQL;
1274 begin
1275 IBSQL := GetComponent(0) as TIBSQL;
1276 if IBSQLEditor.EditSQL(IBSQL) then Modified;
1277 end;
1278
1279 initialization
1280 {$I IBDBReg.lrs}
1281 end.