ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/IBDBReg.pas
Revision: 80
Committed: Mon Jan 1 11:31:07 2018 UTC (6 years, 10 months ago) by tony
Content type: text/x-pascal
File size: 34604 byte(s)
Log Message:
Fixes merged into public release

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