ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/IBDBReg.pas
Revision: 19
Committed: Mon Jul 7 13:00:15 2014 UTC (10 years, 4 months ago) by tony
Content type: text/x-pascal
File size: 29058 byte(s)
Log Message:
Committing updates for Release R1-1-0

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 {$G+} (* Imported data: On *)
43 {$H+} (* Huge Strings: On *)
44 {$J-} (* Modification of Typed Constants: Off *)
45 {$M+} (* Generate run-time type information: On *)
46 {$O+} (* Optimization: On *)
47 {$Q-} (* Overflow checks: Off *)
48 {$R-} (* Range checks: Off *)
49 {$T+} (* Typed address: On *)
50 {$U+} (* Pentim-safe FDIVs: On *)
51 {$W-} (* Always generate stack frames: Off *)
52 {$X+} (* Extended syntax: On *)
53 {$Z1} (* Minimum Enumeration Size: 1 Byte *)
54
55 interface
56
57 uses SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo,
58 DB, IBTable, IBDatabase, IBEventsEditor, LazarusPackageIntf,
59 IBUpdateSQL, IBXConst, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor,
60 dbFieldLinkPropEditor;
61
62 type
63
64 { TIBFileNameProperty
65 Property editor the DataBase Name property. Brings up the Open dialog }
66
67 TIBFileNameProperty = class(TStringProperty)
68 public
69 procedure Edit; override;
70 function GetAttributes: TPropertyAttributes; override;
71 end;
72
73 { TIBNameProperty
74 }
75 TIBNameProperty = class(TStringProperty)
76 public
77 function GetAttributes: TPropertyAttributes; override;
78 end;
79
80 { TIBStoredProcNameProperty
81 Editor for the TIBStoredProc.StoredProcName property. Displays a drop-down list of all
82 the StoredProcedures in the Database.}
83 TIBStoredProcNameProperty = class(TIBNameProperty)
84 public
85 procedure GetValues(Proc: TGetStrProc); override;
86 end;
87
88 { TIBTableNameProperty
89 Editor for the TIBTable.TableName property. Displays a drop-down list of all
90 the Tables in the Database.}
91 TIBTableNameProperty = class(TIBNameProperty)
92 public
93 procedure GetValues(Proc: TGetStrProc); override;
94 end;
95
96 { TDBStringProperty }
97
98 TDBStringProperty = class(TStringProperty)
99 private
100 function ConnecttoDB: boolean;
101 public
102 function GetAttributes: TPropertyAttributes; override;
103 procedure GetValueList(List: TStrings); virtual;
104 procedure GetValues(Proc: TGetStrProc); override;
105 procedure Edit; override;
106 end;
107
108 { TIBIndexFieldNamesProperty }
109
110 TIBIndexFieldNamesProperty = class(TDBStringProperty)
111 public
112 procedure GetValueList(List: TStrings); override;
113 end;
114
115 TIBIndexNameProperty = class(TDBStringProperty)
116 public
117 procedure GetValueList(List: TStrings); override;
118 end;
119
120 { TIBDatabaseEditor }
121
122 TIBDatabaseEditor = class(TComponentEditor)
123 procedure ExecuteVerb(Index: Integer); override;
124 function GetVerb(Index: Integer): string; override;
125 function GetVerbCount: Integer; override;
126 end;
127
128 { TIBTransactionEditor }
129
130 TIBTransactionEditor = class(TComponentEditor)
131 public
132 procedure ExecuteVerb(Index: Integer); override;
133 function GetVerb(Index: Integer): string; override;
134 function GetVerbCount: Integer; override;
135 end;
136
137 { TIBQueryEditor }
138
139 TIBQueryEditor = class(TFieldsComponentEditor)
140 public
141 procedure ExecuteVerb(Index: Integer); override;
142 function GetVerb(Index: Integer): string; override;
143 function GetVerbCount: Integer; override;
144 end;
145
146 { TIBStoredProcEditor }
147
148 TIBStoredProcEditor = class(TFieldsComponentEditor)
149 public
150 procedure ExecuteVerb(Index: Integer); override;
151 function GetVerb(Index: Integer): string; override;
152 function GetVerbCount: Integer; override;
153 end;
154
155 { TIBDataSetEditor }
156
157 TIBDataSetEditor = class(TFieldsComponentEditor)
158 public
159 procedure ExecuteVerb(Index: Integer); override;
160 function GetVerb(Index: Integer): string; override;
161 function GetVerbCount: Integer; override;
162 end;
163
164 { TIBUpdateSQLEditor }
165
166 TIBUpdateSQLEditor = class(TComponentEditor)
167 public
168 procedure ExecuteVerb(Index: Integer); override;
169 function GetVerb(Index: Integer): string; override;
170 function GetVerbCount: Integer; override;
171 end;
172
173 { TIBSQLEditor }
174
175 TIBSQLEditor = class(TComponentEditor)
176 public
177 procedure ExecuteVerb(Index: Integer); override;
178 function GetVerb(Index: Integer): string; override;
179 function GetVerbCount: Integer; override;
180 end;
181
182 { TIBServiceEditor}
183
184 TIBServiceEditor = class(TComponentEditor)
185 public
186 procedure ExecuteVerb(Index: Integer); override;
187 function GetVerb(Index: Integer): string; override;
188 function GetVerbCount: Integer; override;
189 end;
190
191 TIBStoredProcParamsProperty = class(TCollectionPropertyEditor)
192 public
193 procedure Edit; override;
194 end;
195
196 { TIBTableFieldLinkProperty }
197
198 TIBTableFieldLinkProperty = class(TFieldLinkProperty)
199 private
200 FTable: TIBTable;
201 protected
202 function GetIndexDefs: TIndexDefs; override;
203 function GetIndexFieldNames: string; override;
204 function GetMasterFields: string; override;
205 procedure SetIndexFieldNames(const Value: string); override;
206 procedure SetMasterFields(const Value: string); override;
207 public
208 procedure Edit; override;
209 end;
210
211 { TSQLPropertyEditor }
212
213 TSQLPropertyEditor = class(TStringsPropertyEditor)
214 public
215 function GetAttributes: TPropertyAttributes; override;
216 end;
217
218 { TIBQuerySQLProperty }
219
220 TIBQuerySQLProperty = class(TSQLPropertyEditor)
221 public
222 procedure Edit; override;
223 end;
224
225 {TIBSQLSQLPropertyEditor }
226
227 TIBSQLSQLPropertyEditor = class(TSQLPropertyEditor)
228 public
229 procedure Edit; override;
230 end;
231
232 { TIBDatasetSQLProperty }
233
234 TIBDatasetSQLProperty = class(TSQLPropertyEditor)
235 public
236 procedure Edit; override;
237 end;
238
239 { TIBSQLProperty }
240
241 TIBSQLProperty = class(TSQLPropertyEditor)
242 public
243 procedure Edit; override;
244 end;
245
246 { TUpdateSQLPropertyEditor }
247
248 TUpdateSQLPropertyEditor = class(TSQLPropertyEditor)
249 protected
250 FIBUpdateSQL: TIBUpdateSQL;
251 FDatabase: TIBDatabase;
252 function GetObjects: boolean;
253 end;
254
255 { TIBUpdateSQLProperty }
256
257 TIBUpdateSQLProperty = class(TSQLPropertyEditor)
258 public
259 procedure Edit; override;
260 end;
261
262 { TIBRefreshSQLProperty }
263
264 TIBRefreshSQLProperty = class(TSQLPropertyEditor)
265 public
266 procedure Edit; override;
267 end;
268
269 { TIBInsertSQLProperty }
270
271 TIBInsertSQLProperty = class(TSQLPropertyEditor)
272 public
273 procedure Edit; override;
274 end;
275
276 { TIBDeleteSQLProperty }
277
278 TIBDeleteSQLProperty = class(TSQLPropertyEditor)
279 public
280 procedure Edit; override;
281 end;
282
283 { TIBUpdateSQLUpdateProperty }
284
285 TIBUpdateSQLUpdateProperty = class(TUpdateSQLPropertyEditor)
286 public
287 procedure Edit; override;
288 end;
289
290 { TIBUpdateSQLRefreshSQLProperty }
291
292 TIBUpdateSQLRefreshSQLProperty = class(TUpdateSQLPropertyEditor)
293 public
294 procedure Edit; override;
295 end;
296
297 { TIBUpdateSQLInsertSQLProperty }
298
299 TIBUpdateSQLInsertSQLProperty = class(TUpdateSQLPropertyEditor)
300 public
301 procedure Edit; override;
302 end;
303
304 { TIBUpdateSQLDeleteProperty }
305
306 TIBUpdateSQLDeleteProperty = class(TUpdateSQLPropertyEditor)
307 public
308 function GetAttributes: TPropertyAttributes; override;
309 procedure Edit; override;
310 end;
311
312 { TIBEventListProperty }
313
314 TIBEventListProperty = class(TClassProperty)
315 public
316 function GetAttributes: TPropertyAttributes; override;
317 procedure Edit; override;
318 end;
319
320 {TIBGeneratorProperty}
321
322 TIBGeneratorProperty = class(TPersistentPropertyEditor)
323 public
324 function GetAttributes: TPropertyAttributes; override;
325 procedure Edit; override;
326 end;
327
328 procedure Register;
329
330 implementation
331
332 uses IB, IBQuery, IBStoredProc, IBCustomDataSet,
333 IBIntf, IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents,
334 IBServices, IBDatabaseEdit, IBTransactionEdit,
335 IBBatchMove, DBLoginDlg, IBExtract,LResources, IBSelectSQLEditor,
336 IBModifySQLEditor,IBDeleteSQLEditor,IBRefreshSQLEditor,
337 IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor,
338 IBSQLEditor, ibserviceeditor, LCLVersion;
339
340
341
342 procedure Register;
343 begin
344 if not TryIBLoad then
345 begin
346 MessageDlg('IBX is unable to locate the Firebird Library - have you remembered to install it?',mtError,[mbOK],0);
347 Exit;
348 end;
349
350 RegisterNoIcon([TIBStringField, TIBBCDField]);
351 {$if lcl_fullversion < 01010000}
352 {see http://bugs.freepascal.org/view.php?id=19035 }
353 RegisterNoIcon([TIntegerField]);
354 {$endif}
355 RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet,
356 TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBEvents,
357 TIBSQL, TIBDatabaseInfo, TIBSQLMonitor,
358 TIBStoredProc,TIBBatchMove, TIBTable,TIBExtract]);
359 if IBServiceAPIPresent then
360 RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService,
361 TIBRestoreService, TIBValidationService, TIBStatisticalService,
362 TIBLogService, TIBSecurityService, TIBServerProperties]);
363 RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize}
364 RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize}
365 RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty);
366 RegisterPropertyEditor(TypeInfo(string), TIBTable, 'TableName', TIBTableNameProperty); {do not localize}
367 RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexName', TIBIndexNameProperty); {do not localize}
368 RegisterPropertyEditor(TypeInfo(string), TIBTable, 'IndexFieldNames', TIBIndexFieldNamesProperty); {do not localize}
369 RegisterPropertyEditor(TypeInfo(string), TIBTable, 'MasterFields', TIBTableFieldLinkProperty); {do not localize}
370 RegisterPropertyEditor(TypeInfo(TStrings), TIBQuery, 'SQL', TIBQuerySQLProperty); {do not localize}
371 RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'SelectSQL', TIBDatasetSQLProperty); {do not localize}
372 RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'ModifySQL', TIBUpdateSQLProperty); {do not localize}
373 RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'InsertSQL', TIBInsertSQLProperty); {do not localize}
374 RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'RefreshSQL', TIBRefreshSQLProperty); {do not localize}
375 RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'DeleteSQL', TIBDeleteSQLProperty); {do not localize}
376 RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLSQLPropertyEditor); {do not localize}
377 RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'RefreshSQL', TIBUpdateSQLRefreshSQLProperty); {do not localize}
378 RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize}
379 RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize}
380 RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize}
381 RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize}
382 RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty); {do not localize}
383 RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty); {do not localize}
384
385 RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor);
386 RegisterComponentEditor(TIBTransaction, TIBTransactionEditor);
387 RegisterComponentEditor(TIBUpdateSQL, TIBUpdateSQLEditor);
388 RegisterComponentEditor(TIBDataSet, TIBDataSetEditor);
389 RegisterComponentEditor(TIBQuery, TIBQueryEditor);
390 RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor);
391 RegisterComponentEditor(TIBSQL, TIBSQLEditor);
392 RegisterComponentEditor(TIBCustomService, TIBServiceEditor);
393 end;
394
395 { TIBServiceEditor }
396
397 procedure TIBServiceEditor.ExecuteVerb(Index: Integer);
398 begin
399 if Index < inherited GetVerbCount then
400 inherited ExecuteVerb(Index) else
401 begin
402 Dec(Index, inherited GetVerbCount);
403 case Index of
404 0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified;
405 end;
406 end;
407 end;
408
409 function TIBServiceEditor.GetVerb(Index: Integer): string;
410 begin
411 if Index < inherited GetVerbCount then
412 Result := inherited GetVerb(Index) else
413 begin
414 Dec(Index, inherited GetVerbCount);
415 case Index of
416 0: Result := SIBServiceEditor;
417 1 : Result := SInterbaseExpressVersion;
418 end;
419 end;
420 end;
421
422 function TIBServiceEditor.GetVerbCount: Integer;
423 begin
424 Result := inherited GetVerbCount + 2;
425 end;
426
427 { TIBFileNameProperty }
428 procedure TIBFileNameProperty.Edit;
429 begin
430 with TOpenDialog.Create(Application) do
431 try
432 InitialDir := ExtractFilePath(GetStrValue);
433 Filter := SDatabaseFilter; {do not localize}
434 if Execute then
435 SetStrValue(FileName);
436 finally
437 Free
438 end;
439 end;
440
441 function TIBFileNameProperty.GetAttributes: TPropertyAttributes;
442 begin
443 Result := [paDialog];
444 end;
445
446 { TIBNameProperty }
447
448 function TIBNameProperty.GetAttributes: TPropertyAttributes;
449 begin
450 Result := [paValueList, paSortList];
451 end;
452
453 { TIBStoredProcNameProperty }
454
455 procedure TIBStoredProcNameProperty.GetValues(Proc: TGetStrProc);
456 var
457 StoredProc : TIBStoredProc;
458 i : integer;
459 begin
460 StoredProc := GetComponent(0) as TIBStoredProc;
461 if StoredProc.Database = nil then
462 Exit;
463
464 with StoredProc do
465 try
466 for I := 0 to StoredProcedureNames.Count - 1 do
467 Proc (StoredProcedureNames[i]);
468 except on E: Exception do
469 MessageDlg(E.Message,mtError,[mbOK],0)
470 end;
471 end;
472
473 { TIBTableNameProperty }
474
475 procedure TIBTableNameProperty.GetValues(Proc: TGetStrProc);
476 var
477 Table : TIBTable;
478 i : integer;
479 begin
480 Table := GetComponent(0) as TIBTable;
481 if Table.Database = nil then
482 Exit;
483 with Table do
484 for I := 0 to TableNames.Count - 1 do
485 Proc (TableNames[i]);
486 end;
487
488 { TDBStringProperty }
489
490 function TDBStringProperty.ConnecttoDB: boolean;
491 var DataSet: TIBCustomDataSet;
492 begin
493 Result := false;
494 DataSet := (GetComponent(0) as TIBCustomDataSet);
495 if assigned(Dataset.Database) then
496 begin
497 try
498 DataSet.Database.Connected := true;
499 except on E: Exception do
500 ShowMessage(E.Message)
501 end;
502 Result := DataSet.Database.Connected
503 end;
504 end;
505
506 function TDBStringProperty.GetAttributes: TPropertyAttributes;
507 begin
508 Result := [paValueList, paSortList, paMultiSelect];
509 end;
510
511 procedure TDBStringProperty.GetValueList(List: TStrings);
512 begin
513 end;
514
515 procedure TDBStringProperty.GetValues(Proc: TGetStrProc);
516 var
517 I: Integer;
518 Values: TStringList;
519 begin
520 if not ConnecttoDB then Exit;
521 Values := TStringList.Create;
522 try
523 GetValueList(Values);
524 for I := 0 to Values.Count - 1 do Proc(Values[I]);
525 finally
526 Values.Free;
527 end;
528 end;
529
530 procedure TDBStringProperty.Edit;
531 begin
532 if ConnecttoDB then
533 inherited Edit;
534 end;
535
536 { Utility Functions }
537
538 function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
539 var
540 PropInfo: PPropInfo;
541 begin
542 Result := nil;
543 PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, PropName);
544 if (PropInfo <> nil) and (PropInfo^.PropType^.Kind = tkClass) then
545 Result := TObject(GetOrdProp(Instance, PropInfo)) as TPersistent;
546 end;
547
548 function GetIndexDefs(Component: TPersistent): TIndexDefs;
549 var
550 DataSet: TDataSet;
551 begin
552 DataSet := Component as TDataSet;
553 Result := GetPropertyValue(DataSet, 'IndexDefs') as TIndexDefs; {do not localize}
554 if Assigned(Result) then
555 begin
556 Result.Updated := False;
557 Result.Update;
558 end;
559 end;
560
561 { TIBIndexFieldNamesProperty }
562
563 procedure TIBIndexFieldNamesProperty.GetValueList(List: TStrings);
564 var
565 I: Integer;
566 IndexDefs: TIndexDefs;
567 begin
568 IndexDefs := GetIndexDefs(GetComponent(0));
569 for I := 0 to IndexDefs.Count - 1 do
570 with IndexDefs[I] do
571 if (Options * [ixExpression, ixDescending] = []) and (Fields <> '') then
572 List.Add(Fields);
573 end;
574
575
576 { TIBIndexNameProperty }
577
578 procedure TIBIndexNameProperty.GetValueList(List: TStrings);
579 begin
580 GetIndexDefs(GetComponent(0)).GetItemNames(List);
581 end;
582
583 { TSQLPropertyEditor }
584
585 function TSQLPropertyEditor.GetAttributes: TPropertyAttributes;
586 begin
587 Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
588 end;
589
590 { TIBQuerySQLProperty }
591
592 procedure TIBQuerySQLProperty.Edit;
593 var
594 Query: TIBQuery;
595 begin
596 Query := GetComponent(0) as TIBQuery;
597 if IBSelectSQLEditor.EditSQL(Query,Query.SQL) then Modified;
598 end;
599
600 { TIBDatasetSQLProperty }
601
602 procedure TIBDatasetSQLProperty.Edit;
603 var
604 IBDataset: TIBDataset;
605 begin
606 IBDataset := GetComponent(0) as TIBDataset;
607 if IBSelectSQLEditor.EditSQL(IBDataSet,IBDataSet.SelectSQL) then Modified;
608 end;
609
610 { TIBSQLProperty }
611
612 procedure TIBSQLProperty.Edit;
613 var
614 IBSQL: TIBSQL;
615 begin
616 IBSQL := GetComponent(0) as TIBSQL;
617 if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
618 end;
619
620 { TIBUpdateSQLEditor }
621
622 procedure TIBUpdateSQLEditor.ExecuteVerb(Index: Integer);
623 begin
624 if IBUpdateSQLEditor.EditIBUpdateSQL(TIBUpdateSQL(Component)) then Modified;
625 end;
626
627 function TIBUpdateSQLEditor.GetVerb(Index: Integer): string;
628 begin
629 case Index of
630 0 : Result := SIBUpdateSQLEditor;
631 1: Result := SInterbaseExpressVersion;
632 end;
633 end;
634
635 function TIBUpdateSQLEditor.GetVerbCount: Integer;
636 begin
637 Result := 2;
638 end;
639
640 { TIBDataSetEditor }
641
642 procedure TIBDataSetEditor.ExecuteVerb(Index: Integer);
643 var
644 IBDataset: TIBDataset;
645 begin
646 if Index < inherited GetVerbCount then
647 inherited ExecuteVerb(Index) else
648 begin
649 Dec(Index, inherited GetVerbCount);
650 case Index of
651 0:
652 if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then
653 Designer.Modified;
654 1: (Component as TIBDataSet).ExecSQL;
655 end;
656 end;
657 end;
658
659 function TIBDataSetEditor.GetVerb(Index: Integer): string;
660 begin
661 if Index < inherited GetVerbCount then
662 Result := inherited GetVerb(Index) else
663 begin
664 Dec(Index, inherited GetVerbCount);
665 case Index of
666 0: Result := SIBDataSetEditor;
667 1: Result := SExecute;
668 2: Result := SInterbaseExpressVersion;
669 end;
670 end;
671 end;
672
673 function TIBDataSetEditor.GetVerbCount: Integer;
674 begin
675 Result := inherited GetVerbCount + 3;
676 end;
677
678 { TIBEventListProperty }
679
680 function TIBEventListProperty.GetAttributes: TPropertyAttributes;
681 begin
682 Result := inherited GetAttributes + [paDialog] - [paMultiSelect,paSubProperties];
683 end;
684
685 procedure TIBEventListProperty.Edit;
686 var
687 Events: TStrings;
688 IBEvents: TIBEvents;
689 begin
690 IBEvents := GetComponent(0) as TIBEvents;
691 Events := TStringList.Create;
692 try
693 Events.Assign( IBEvents.Events);
694 if EditAlerterEvents( Events) then
695 begin
696 IBEvents.Events.Assign(Events);
697 Modified
698 end;
699 finally
700 Events.Free;
701 end;
702 end;
703
704 { TIBDatabaseEditor }
705 procedure TIBDatabaseEditor.ExecuteVerb(Index: Integer);
706 begin
707 if Index < inherited GetVerbCount then
708 inherited ExecuteVerb(Index) else
709 begin
710 Dec(Index, inherited GetVerbCount);
711 case Index of
712 0 : if EditIBDatabase(TIBDatabase(Component)) then Designer.Modified;
713 end;
714 end;
715 end;
716
717 function TIBDatabaseEditor.GetVerb(Index: Integer): string;
718 begin
719 if Index < inherited GetVerbCount then
720 Result := inherited GetVerb(Index) else
721 begin
722 Dec(Index, inherited GetVerbCount);
723 case Index of
724 0: Result := SIBDatabaseEditor;
725 1 : Result := SInterbaseExpressVersion;
726 end;
727 end;
728 end;
729
730 function TIBDatabaseEditor.GetVerbCount: Integer;
731 begin
732 Result := inherited GetVerbCount + 2;
733 end;
734
735 { TIBTransactionEditor }
736
737 procedure TIBTransactionEditor.ExecuteVerb(Index: Integer);
738 begin
739 case Index of
740 0: if EditIBTransaction(TIBTransaction(Component)) then Designer.Modified;
741 end;
742 end;
743
744 function TIBTransactionEditor.GetVerb(Index: Integer): string;
745 begin
746 case Index of
747 0: Result := SIBTransactionEditor;
748 1: Result := SInterbaseExpressVersion;
749 end;
750 end;
751
752 function TIBTransactionEditor.GetVerbCount: Integer;
753 begin
754 Result := 2;
755 end;
756
757 { TIBQueryEditor }
758
759 procedure TIBQueryEditor.ExecuteVerb(Index: Integer);
760 var
761 Query: TIBQuery;
762 begin
763 if Index < inherited GetVerbCount then
764 inherited ExecuteVerb(Index) else
765 begin
766 Query := Component as TIBQuery;
767 Dec(Index, inherited GetVerbCount);
768 case Index of
769 0: Query.ExecSQL;
770 1: if ibselectsqleditor.EditSQL(Query,Query.SQL) then Designer.Modified;
771 end;
772 end;
773 end;
774
775 function TIBQueryEditor.GetVerb(Index: Integer): string;
776 begin
777 if Index < inherited GetVerbCount then
778 Result := inherited GetVerb(Index) else
779 begin
780 Dec(Index, inherited GetVerbCount);
781 case Index of
782 0: Result := SExecute;
783 1: Result := SEditSQL;
784 2: Result := SInterbaseExpressVersion;
785 end;
786 end;
787 end;
788
789 function TIBQueryEditor.GetVerbCount: Integer;
790 begin
791 Result := inherited GetVerbCount + 3;
792 end;
793
794 { TIBStoredProcEditor }
795
796 procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer);
797 begin
798 if Index < inherited GetVerbCount then
799 inherited ExecuteVerb(Index) else
800 begin
801 Dec(Index, inherited GetVerbCount);
802 if Index = 0 then (Component as TIBStoredProc).ExecProc;
803 end;
804 end;
805
806 function TIBStoredProcEditor.GetVerb(Index: Integer): string;
807 begin
808 if Index < inherited GetVerbCount then
809 Result := inherited GetVerb(Index) else
810 begin
811 Dec(Index, inherited GetVerbCount);
812 case Index of
813 0: Result := SExecute;
814 1: Result := SInterbaseExpressVersion;
815 end;
816 end;
817 end;
818
819 function TIBStoredProcEditor.GetVerbCount: Integer;
820 begin
821 Result := inherited GetVerbCount + 2;
822 end;
823
824 { TIBStoredProcParamsProperty }
825
826 procedure TIBStoredProcParamsProperty.Edit;
827 var
828 StoredProc: TIBStoredProc;
829 Params: TParams;
830 begin
831 StoredProc := (GetComponent(0) as TIBStoredProc);
832 Params := TParams.Create(nil);
833 try
834 StoredProc.CopyParams(Params);
835 finally
836 Params.Free;
837 end;
838 inherited Edit;
839 end;
840
841 { TIBTableFieldLinkProperty }
842
843 procedure TIBTableFieldLinkProperty.Edit;
844 begin
845 FTable := DataSet as TIBTable;
846 if assigned(FTable.Database) then
847 FTable.Database.Connected := true;
848 inherited Edit;
849 end;
850
851 function TIBTableFieldLinkProperty.GetIndexDefs: TIndexDefs;
852 begin
853 Result := FTable.IndexDefs
854 end;
855
856 function TIBTableFieldLinkProperty.GetIndexFieldNames: string;
857 begin
858 Result := FTable.IndexFieldNames;
859 end;
860
861 function TIBTableFieldLinkProperty.GetMasterFields: string;
862 begin
863 Result := FTable.MasterFields;
864 end;
865
866 procedure TIBTableFieldLinkProperty.SetIndexFieldNames(const Value: string);
867 begin
868 FTable.IndexFieldNames := Value;
869 end;
870
871 procedure TIBTableFieldLinkProperty.SetMasterFields(const Value: string);
872 begin
873 FTable.MasterFields := Value;
874 end;
875
876 { TIBUpdateSQLProperty }
877
878 procedure TIBUpdateSQLProperty.Edit;
879 var
880 IBDataset: TIBDataset;
881 begin
882 IBDataset := GetComponent(0) as TIBDataset;
883 if IBModifySQLEditor.EditSQL(IBDataSet,IBDataSet.ModifySQL) then Modified;
884 end;
885
886 { TIBUpdateSQLUpdateProperty }
887
888 procedure TIBUpdateSQLUpdateProperty.Edit;
889 begin
890 GetObjects;
891 if IBModifySQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.ModifySQL) then Modified;
892 end;
893
894 { TIBRefreshSQLProperty }
895
896 procedure TIBRefreshSQLProperty.Edit;
897 var
898 IBDataset: TIBDataset;
899 aDatabase: TIBDatabase;
900 begin
901 IBDataset := GetComponent(0) as TIBDataset;
902 if IBRefreshSQLEditor.EditSQL(IBDataSet,IBDataSet.RefreshSQL) then Modified;
903 end;
904
905 { TIBUpdateSQLRefreshSQLProperty }
906
907 procedure TIBUpdateSQLRefreshSQLProperty.Edit;
908 begin
909 GetObjects;
910 if IBRefreshSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.RefreshSQL) then Modified;
911 end;
912
913 { TIBDeleteSQLProperty }
914
915 procedure TIBDeleteSQLProperty.Edit;
916 var
917 IBDataset: TIBDataSet;
918 begin
919 IBDataset := GetComponent(0) as TIBDataSet;
920 if IBDeleteSQLEditor.EditSQL(IBDataSet,IBDataSet.DeleteSQL) then Modified;
921 end;
922
923 { TIBUpdateSQLDeleteProperty }
924
925 function TIBUpdateSQLDeleteProperty.GetAttributes: TPropertyAttributes;
926 begin
927 Result:=inherited GetAttributes;
928 end;
929
930 procedure TIBUpdateSQLDeleteProperty.Edit;
931 begin
932 GetObjects;
933 if IBDeleteSQLEditor.EditSQL(FIBUpdateSQL.DataSet,FIBUpdateSQL.DeleteSQL) then Modified;
934 end;
935
936 { TUpdateSQLPropertyEditor }
937
938 function TUpdateSQLPropertyEditor.GetObjects: boolean;
939 begin
940 Result := false;
941 FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL;
942 if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then
943 Exit;
944 FDatabase := nil;
945 if FIBUpdateSQL.DataSet is TIBQuery then
946 begin
947 FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database;
948 Result := true
949 end;
950 end;
951
952 { TIBInsertSQLProperty }
953
954 procedure TIBInsertSQLProperty.Edit;
955 var
956 IBDataset: TIBDataSet;
957 begin
958 IBDataset := GetComponent(0) as TIBDataSet;
959 if IBInsertSQLEditor.EditSQL(IBDataSet,IBDataSet.InsertSQL) then Modified;
960 end;
961
962 { TIBUpdateSQLInsertSQLProperty }
963
964 procedure TIBUpdateSQLInsertSQLProperty.Edit;
965 begin
966 GetObjects;
967 if IBInsertSQLEditor.EditSQL(FIBUpdateSQL.Dataset,FIBUpdateSQL.InsertSQL) then Modified;
968 end;
969
970 { TIBGeneratorProperty }
971
972 function TIBGeneratorProperty.GetAttributes: TPropertyAttributes;
973 begin
974 Result:= inherited GetAttributes + [paDialog] - [paMultiSelect,paValueList];
975 end;
976
977 procedure TIBGeneratorProperty.Edit;
978 begin
979 if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified;
980 end;
981
982 { TIBSQLEditor }
983
984 procedure TIBSQLEditor.ExecuteVerb(Index: Integer);
985 begin
986 if IBSQLEditor.EditIBSQL(TIBSQL(Component)) then Modified;
987 end;
988
989 function TIBSQLEditor.GetVerb(Index: Integer): string;
990 begin
991 case Index of
992 0 : Result := SIBSQLEditor;
993 1: Result := SInterbaseExpressVersion;
994 end;
995 end;
996
997 function TIBSQLEditor.GetVerbCount: Integer;
998 begin
999 Result:= 2
1000 end;
1001
1002 { TIBSQLSQLPropertyEditor }
1003
1004 procedure TIBSQLSQLPropertyEditor.Edit;
1005 var
1006 IBSQL: TIBSQL;
1007 begin
1008 IBSQL := GetComponent(0) as TIBSQL;
1009 if IBSQLEditor.EditIBSQL(IBSQL) then Modified;
1010 end;
1011
1012 initialization
1013 {$I IBDBReg.lrs}
1014 end.