ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/design/IBDBReg.pas
Revision: 13
Committed: Thu Nov 22 22:53:40 2012 UTC (11 years, 11 months ago) by tony
Content type: text/x-pascal
File size: 27021 byte(s)
Log Message:
Committing updates for Release R1-0-3

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