ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/design/IBDBReg.pas
(Generate patch)

Comparing ibx/trunk/design/IBDBReg.pas (file contents):
Revision 5 by tony, Fri Feb 18 16:26:16 2011 UTC vs.
Revision 19 by tony, Mon Jul 7 13:00:15 2014 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines