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