--- ibx/trunk/design/IBDBReg.pas 2011/02/18 16:26:16 5 +++ ibx/trunk/design/IBDBReg.pas 2012/08/05 18:28:19 7 @@ -24,6 +24,10 @@ { Corporation. All Rights Reserved. } { Contributor(s): Jeff Overcash } { } +{ IBX For Lazarus (Firebird Express) } +{ Contributor: Tony Whyman, MWA Software http://www.mwasoftware.co.uk } +{ Portions created by MWA Software are copyright McCallum Whyman } +{ Associates Ltd 2011 } {************************************************************************} unit IBDBReg; @@ -51,7 +55,7 @@ unit IBDBReg; interface uses {Windows,} SysUtils, Classes, Graphics, Dialogs, Controls, Forms, TypInfo, - DB, IBTable, IBDatabase, IBEventsEditor, + DB, IBTable, IBDatabase, IBEventsEditor, LazarusPackageIntf, IBUpdateSQL, IBXConst, ComponentEditors, PropEdits, DBPropEdits, FieldsEditor; type @@ -124,7 +128,7 @@ type { TIBQueryEditor } - TIBQueryEditor = class(TComponentEditor) + TIBQueryEditor = class(TFieldsComponentEditor) public procedure ExecuteVerb(Index: Integer); override; function GetVerb(Index: Integer): string; override; @@ -133,7 +137,7 @@ type { TIBStoredProcEditor } - TIBStoredProcEditor = class(TComponentEditor) + TIBStoredProcEditor = class(TFieldsComponentEditor) public procedure ExecuteVerb(Index: Integer); override; function GetVerb(Index: Integer): string; override; @@ -142,7 +146,7 @@ type { TIBDataSetEditor } - TIBDataSetEditor = class(TComponentEditor) + TIBDataSetEditor = class(TFieldsComponentEditor) public procedure ExecuteVerb(Index: Integer); override; function GetVerb(Index: Integer): string; override; @@ -158,6 +162,24 @@ type function GetVerbCount: Integer; override; end; +{ TIBSQLEditor } + + TIBSQLEditor = class(TComponentEditor) + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + +{ TIBServiceEditor} + + TIBServiceEditor = class(TComponentEditor) + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + TIBStoredProcParamsProperty = class(TCollectionPropertyEditor) public procedure Edit; override; @@ -189,6 +211,13 @@ type procedure Edit; override; end; +{TIBSQLSQLPropertyEditor } + + TIBSQLSQLPropertyEditor = class(TSQLPropertyEditor) + public + procedure Edit; override; + end; + { TIBDatasetSQLProperty } TIBDatasetSQLProperty = class(TSQLPropertyEditor) @@ -290,23 +319,29 @@ procedure Register; implementation uses IB, IBQuery, IBStoredProc, IBCustomDataSet, - IBIntf, IBSQL, (*IBSQLMonitor,*) IBDatabaseInfo, IBEvents, - IBServices, (*IBInstall,*) IBDatabaseEdit, IBTransactionEdit, + IBIntf, IBSQL, IBSQLMonitor, IBDatabaseInfo, IBEvents, + IBServices, IBDatabaseEdit, IBTransactionEdit, IBBatchMove, DBLoginDlg, IBExtract,LResources, IBSelectSQLEditor, IBModifySQLEditor,IBDeleteSQLEditor,IBRefreshSQLEditor, - IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor; + IBInsertSQLEditor, IBGeneratorEditor, IBUpdateSQLEditor, IBDataSetEditor, + IBSQLEditor, ibserviceeditor; + + procedure Register; begin - RegisterComponents(IBPalette1, [TIBTable, TIBQuery, - TIBStoredProc, TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBBatchMove, - TIBDataSet, TIBSQL, TIBDatabaseInfo, (*TIBSQLMonitor,*) TIBEvents, TIBExtract]); - if (TryIBLoad) and IBServiceAPIPresent then + if not TryIBLoad then Exit; + + RegisterNoIcon([TIBStringField, TIBBCDField]); + RegisterNoIcon([TIntegerField]); + RegisterComponents(IBPalette1, [ TIBQuery, TIBDataSet, + TIBDatabase, TIBTransaction, TIBUpdateSQL, TIBEvents, + TIBSQL, TIBDatabaseInfo, TIBSQLMonitor, + TIBStoredProc,TIBBatchMove, TIBTable,TIBExtract]); + if IBServiceAPIPresent then RegisterComponents(IBPalette2, [TIBConfigService, TIBBackupService, TIBRestoreService, TIBValidationService, TIBStatisticalService, TIBLogService, TIBSecurityService, TIBServerProperties]); - RegisterClasses([TIBStringField, TIBBCDField]); -// RegisterFields([TIBStringField, TIBBCDField]); --not sure if this is needed in lazarus RegisterPropertyEditor(TypeInfo(TIBFileName), TIBDatabase, 'DatabaseName', TIBFileNameProperty); {do not localize} RegisterPropertyEditor(TypeInfo(string), TIBStoredProc, 'StoredProcName', TIBStoredProcNameProperty); {do not localize} RegisterPropertyEditor(TypeInfo(TParams), TIBStoredProc, 'Params', TIBStoredProcParamsProperty); @@ -320,13 +355,14 @@ begin RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'InsertSQL', TIBInsertSQLProperty); {do not localize} RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'RefreshSQL', TIBRefreshSQLProperty); {do not localize} RegisterPropertyEditor(TypeInfo(TStrings), TIBDataSet, 'DeleteSQL', TIBDeleteSQLProperty); {do not localize} - RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLProperty); {do not localize} + RegisterPropertyEditor(TypeInfo(TStrings), TIBSQL, 'SQL', TIBSQLSQLPropertyEditor); {do not localize} RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'RefreshSQL', TIBUpdateSQLRefreshSQLProperty); {do not localize} RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'ModifySQL', TIBUpdateSQLUpdateProperty); {do not localize} RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'InsertSQL', TIBUpdateSQLInsertSQLProperty); {do not localize} RegisterPropertyEditor(TypeInfo(TStrings), TIBUpdateSQL, 'DeleteSQL', TIBUpdateSQLDeleteProperty); {do not localize} RegisterPropertyEditor(TypeInfo(TStrings), TIBEvents, 'Events', TIBEventListProperty); {do not localize} - RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'Generator', TIBGeneratorProperty); {do not localize} + RegisterPropertyEditor(TypeInfo(TPersistent), TIBDataSet, 'GeneratorField', TIBGeneratorProperty); {do not localize} + RegisterPropertyEditor(TypeInfo(TPersistent), TIBQuery, 'GeneratorField', TIBGeneratorProperty); {do not localize} RegisterComponentEditor(TIBDatabase, TIBDatabaseEditor); RegisterComponentEditor(TIBTransaction, TIBTransactionEditor); @@ -334,6 +370,40 @@ begin RegisterComponentEditor(TIBDataSet, TIBDataSetEditor); RegisterComponentEditor(TIBQuery, TIBQueryEditor); RegisterComponentEditor(TIBStoredProc, TIBStoredProcEditor); + RegisterComponentEditor(TIBSQL, TIBSQLEditor); + RegisterComponentEditor(TIBCustomService, TIBServiceEditor); +end; + +{ TIBServiceEditor } + +procedure TIBServiceEditor.ExecuteVerb(Index: Integer); +begin + if Index < inherited GetVerbCount then + inherited ExecuteVerb(Index) else + begin + Dec(Index, inherited GetVerbCount); + case Index of + 0 : if ibserviceeditor.EditIBService(TIBCustomService(Component)) then Designer.Modified; + end; + end; +end; + +function TIBServiceEditor.GetVerb(Index: Integer): string; +begin + if Index < inherited GetVerbCount then + Result := inherited GetVerb(Index) else + begin + Dec(Index, inherited GetVerbCount); + case Index of + 0: Result := SIBServiceEditor; + 1 : Result := SInterbaseExpressVersion; + end; + end; +end; + +function TIBServiceEditor.GetVerbCount: Integer; +begin + Result := inherited GetVerbCount + 2; end; { TIBFileNameProperty } @@ -342,7 +412,7 @@ begin with TOpenDialog.Create(Application) do try InitialDir := ExtractFilePath(GetStrValue); - Filter := 'Database Files|*.gdb'; {do not localize} + Filter := SDatabaseFilter; {do not localize} if Execute then SetStrValue(FileName); finally @@ -370,9 +440,16 @@ var i : integer; begin StoredProc := GetComponent(0) as TIBStoredProc; + if StoredProc.Database = nil then + Exit; + with StoredProc do + try for I := 0 to StoredProcedureNames.Count - 1 do Proc (StoredProcedureNames[i]); + except on E: Exception do + MessageDlg(E.Message,mtError,[mbOK],0) + end; end; { TIBTableNameProperty } @@ -474,8 +551,7 @@ var Query: TIBQuery; begin Query := GetComponent(0) as TIBQuery; - if Assigned(Query.Database) and - IBSelectSQLEditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Modified; + if IBSelectSQLEditor.EditSQL(Query.Database,Query.SQL) then Modified; end; { TIBDatasetSQLProperty } @@ -485,8 +561,7 @@ var IBDataset: TIBDataset; begin IBDataset := GetComponent(0) as TIBDataset; - if Assigned(IBDataSet.Database) and - IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.SelectSQL) then Modified; + if IBSelectSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.SelectSQL) then Modified; end; { TIBSQLProperty } @@ -496,7 +571,7 @@ var IBSQL: TIBSQL; begin IBSQL := GetComponent(0) as TIBSQL; - if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.Transaction,IBSQL.SQL) then Modified; + if IBSelectSQLEditor.EditSQL(IBSQL.Database,IBSQL.SQL) then Modified; end; { TIBUpdateSQLEditor } @@ -516,7 +591,7 @@ end; function TIBUpdateSQLEditor.GetVerbCount: Integer; begin - Result := 2; + Result := 2; end; { TIBDataSetEditor } @@ -525,12 +600,17 @@ procedure TIBDataSetEditor.ExecuteVerb(I var IBDataset: TIBDataset; begin + if Index < inherited GetVerbCount then + inherited ExecuteVerb(Index) else + begin + Dec(Index, inherited GetVerbCount); case Index of 0: if IBDataSetEditor.EditIBDataSet(TIBDataSet(Component)) then Designer.Modified; 1: (Component as TIBDataSet).ExecSQL; end; + end; end; function TIBDataSetEditor.GetVerb(Index: Integer): string; @@ -549,7 +629,7 @@ end; function TIBDataSetEditor.GetVerbCount: Integer; begin - Result := 3; + Result := inherited GetVerbCount + 3; end; { TIBEventListProperty } @@ -568,7 +648,11 @@ begin Events := TStringList.Create; try Events.Assign( IBEvents.Events); - if EditAlerterEvents( Events) then IBEvents.Events.Assign(Events); + if EditAlerterEvents( Events) then + begin + IBEvents.Events.Assign(Events); + Modified + end; finally Events.Free; end; @@ -633,12 +717,16 @@ procedure TIBQueryEditor.ExecuteVerb(Ind var Query: TIBQuery; begin + if Index < inherited GetVerbCount then + inherited ExecuteVerb(Index) else + begin Query := Component as TIBQuery; Dec(Index, inherited GetVerbCount); case Index of 0: Query.ExecSQL; - 1: if ibselectsqleditor.EditSQL(Query.Database,Query.Transaction,Query.SQL) then Designer.Modified; + 1: if ibselectsqleditor.EditSQL(Query.Database,Query.SQL) then Designer.Modified; end; + end; end; function TIBQueryEditor.GetVerb(Index: Integer): string; @@ -657,22 +745,32 @@ end; function TIBQueryEditor.GetVerbCount: Integer; begin - Result := 3; + Result := inherited GetVerbCount + 3; end; { TIBStoredProcEditor } procedure TIBStoredProcEditor.ExecuteVerb(Index: Integer); begin + if Index < inherited GetVerbCount then + inherited ExecuteVerb(Index) else + begin + Dec(Index, inherited GetVerbCount); if Index = 0 then (Component as TIBStoredProc).ExecProc; + end; end; function TIBStoredProcEditor.GetVerb(Index: Integer): string; begin + if Index < inherited GetVerbCount then + Result := inherited GetVerb(Index) else + begin + Dec(Index, inherited GetVerbCount); case Index of 0: Result := SExecute; 1: Result := SInterbaseExpressVersion; end; + end; end; function TIBStoredProcEditor.GetVerbCount: Integer; @@ -732,18 +830,15 @@ var IBDataset: TIBDataset; begin IBDataset := GetComponent(0) as TIBDataset; - if Assigned(IBDataSet.Database) and - IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.ModifySQL) then Modified; + if IBModifySQLEditor.EditSQL(IBDataSet.Database,IBDataSet.ModifySQL) then Modified; end; { TIBUpdateSQLUpdateProperty } procedure TIBUpdateSQLUpdateProperty.Edit; begin - if not GetObjects then - ShowMessage('Not Linked to an IBQuery object or Database not assigned') - else - if IBModifySQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.ModifySQL) then Modified; + GetObjects; + if IBModifySQLEditor.EditSQL(FDatabase,FIBUpdateSQL.ModifySQL) then Modified; end; { TIBRefreshSQLProperty } @@ -751,20 +846,18 @@ end; procedure TIBRefreshSQLProperty.Edit; var IBDataset: TIBDataset; + aDatabase: TIBDatabase; begin IBDataset := GetComponent(0) as TIBDataset; - if Assigned(IBDataSet.Database) and - IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.RefreshSQL) then Modified; + if IBRefreshSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.RefreshSQL) then Modified; end; { TIBUpdateSQLRefreshSQLProperty } procedure TIBUpdateSQLRefreshSQLProperty.Edit; begin - if not GetObjects then - ShowMessage('Not Linked to an IBQuery object or Database not assigned') - else - if IBRefreshSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.RefreshSQL) then Modified; + GetObjects; + if IBRefreshSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.RefreshSQL) then Modified; end; { TIBDeleteSQLProperty } @@ -774,8 +867,7 @@ var IBDataset: TIBDataset; begin IBDataset := GetComponent(0) as TIBDataset; - if Assigned(IBDataSet.Database) and - IBDeleteSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.DeleteSQL) then Modified; + if IBDeleteSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.DeleteSQL) then Modified; end; { TIBUpdateSQLDeleteProperty } @@ -787,10 +879,8 @@ end; procedure TIBUpdateSQLDeleteProperty.Edit; begin - if not GetObjects then - ShowMessage('Not Linked to an IBQuery object or Database not assigned') - else - if IBDeleteSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.DeleteSQL) then Modified; + GetObjects; + if IBDeleteSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.DeleteSQL) then Modified; end; { TUpdateSQLPropertyEditor } @@ -801,6 +891,7 @@ begin FIBUpdateSQL := GetComponent(0) as TIBUpdateSQL; if not assigned(FIBUpdateSQL) or not assigned(FIBUpdateSQL.DataSet) then Exit; + FDatabase := nil; if FIBUpdateSQL.DataSet is TIBQuery then begin FDatabase := (FIBUpdateSQL.DataSet as TIBQuery).Database; @@ -815,18 +906,15 @@ var IBDataset: TIBDataset; begin IBDataset := GetComponent(0) as TIBDataset; - if Assigned(IBDataSet.Database) and - IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.Transaction,IBDataSet.InsertSQL) then Modified; + if IBInsertSQLEditor.EditSQL(IBDataSet.Database,IBDataSet.InsertSQL) then Modified; end; { TIBUpdateSQLInsertSQLProperty } procedure TIBUpdateSQLInsertSQLProperty.Edit; begin - if not GetObjects then - ShowMessage('Not Linked to an IBQuery object or Database not assigned') - else - if IBInsertSQLEditor.EditSQL(FDatabase,FDatabase.DefaultTransaction,FIBUpdateSQL.InsertSQL) then Modified; + GetObjects; + if IBInsertSQLEditor.EditSQL(FDatabase,FIBUpdateSQL.InsertSQL) then Modified; end; { TIBGeneratorProperty } @@ -841,6 +929,36 @@ begin if IBGeneratorEditor.EditGenerator(GetPersistentReference as TIBGenerator) then Modified; end; +{ TIBSQLEditor } + +procedure TIBSQLEditor.ExecuteVerb(Index: Integer); +begin + if IBSQLEditor.EditIBSQL(TIBSQL(Component)) then Modified; +end; + +function TIBSQLEditor.GetVerb(Index: Integer): string; +begin + case Index of + 0 : Result := SIBSQLEditor; + 1: Result := SInterbaseExpressVersion; + end; +end; + +function TIBSQLEditor.GetVerbCount: Integer; +begin + Result:= 2 +end; + +{ TIBSQLSQLPropertyEditor } + +procedure TIBSQLSQLPropertyEditor.Edit; +var + IBSQL: TIBSQL; +begin + IBSQL := GetComponent(0) as TIBSQL; + if IBSQLEditor.EditIBSQL(IBSQL) then Modified; +end; + initialization {$I IBDBReg.lrs} end.