git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.SDAC@3 6f543ec7-021b-7e4c-98c9-62eafc7fb9a8
216 lines
5.1 KiB
ObjectPascal
216 lines
5.1 KiB
ObjectPascal
|
|
//////////////////////////////////////////////////
|
|
// Data Access Components
|
|
// Copyright © 1998-2005 Core Lab. All right reserved.
|
|
// SQL Editor
|
|
//////////////////////////////////////////////////
|
|
|
|
{$IFNDEF CLR}
|
|
|
|
{$I Dac.inc}
|
|
|
|
unit DASQLEditor;
|
|
{$ENDIF}
|
|
interface
|
|
uses
|
|
{$IFDEF MSWINDOWS}
|
|
Windows, Messages, Graphics, Controls, Forms, Dialogs,
|
|
ComCtrls, StdCtrls, ExtCtrls, Buttons,
|
|
{$ENDIF}
|
|
{$IFDEF LINUX}
|
|
Types, QGraphics, QControls, QForms, QDialogs, QStdCtrls,
|
|
QExtCtrls, QComCtrls, QButtons,
|
|
{$ENDIF}
|
|
{$IFDEF DBTOOLS}
|
|
DBToolsClient,
|
|
{$ENDIF}
|
|
SysUtils, DB, Classes,
|
|
DBAccess, MemUtils,
|
|
CREditor, CRTabEditor, CRFrame, DASQLFrame, DAParamsFrame, DAMacrosFrame, DASPCallFrame;
|
|
|
|
type
|
|
TDASQLEditorForm = class(TCRTabEditorForm)
|
|
shSQL: TTabSheet;
|
|
shParameters: TTabSheet;
|
|
shMacros: TTabSheet;
|
|
shGeneratorSPC: TTabSheet;
|
|
btExecute: TButton;
|
|
procedure btExecuteClick(Sender: TObject);
|
|
protected
|
|
FSQLFrame: TDASQLFrame;
|
|
FParamsFrame: TDAParamsFrame;
|
|
FMacrosFrame: TDAMacrosFrame;
|
|
FSPCallFrame: TDASPCallFrame;
|
|
|
|
FLocalComponent, FComponent: TComponent;
|
|
FOldAfterExecute: TAfterExecuteEvent;
|
|
|
|
procedure AfterExecute(Sender: TObject; Result: boolean);
|
|
|
|
procedure DoInit; override;
|
|
procedure DoActivate; override;
|
|
procedure DoFinish; override;
|
|
procedure DoSave; override;
|
|
|
|
procedure DoError(E: Exception); virtual;
|
|
|
|
function GetSQL: TCustomDASQL;
|
|
procedure SetSQL(Value: TCustomDASQL);
|
|
function GetComponent: TComponent; override;
|
|
procedure SetComponent(Value: TComponent); override;
|
|
function GetLocalComponent: TComponent; override;
|
|
|
|
function GetFrameByInitProp: TCRFrame; override;
|
|
|
|
property SQL: TCustomDASQL read GetSQL write SetSQL;
|
|
|
|
public
|
|
property SQLFrame: TDASQLFrame read FSQLFrame;
|
|
property ParamsFrame: TDAParamsFrame read FParamsFrame;
|
|
property MacrosFrame: TDAMacrosFrame read FMacrosFrame;
|
|
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
DADesignUtils;
|
|
|
|
{$IFDEF IDE}
|
|
{$R *.dfm}
|
|
{$ENDIF}
|
|
{$IFDEF MSWINDOWS}
|
|
{$R DASQLEditor.dfm}
|
|
{$ENDIF}
|
|
{$IFDEF LINUX}
|
|
{$R *.xfm}
|
|
{$ENDIF}
|
|
|
|
procedure TDASQLEditorForm.DoInit;
|
|
begin
|
|
inherited;
|
|
|
|
try
|
|
FLocalComponent := TComponentClass(FComponent.ClassType).Create(nil);
|
|
TDBAccessUtils.SetDesigning(FLocalComponent, csDesigning in FComponent.ComponentState);
|
|
FLocalComponent.Assign(FComponent);
|
|
FDADesignUtilsClass.SetDesignCreate(FLocalComponent, True);
|
|
finally
|
|
|
|
Assert(FSQLFrame <> nil);
|
|
Assert(FParamsFrame <> nil);
|
|
Assert(FMacrosFrame <> nil);
|
|
Assert(FSPCallFrame <> nil);
|
|
FSPCallFrame.Mode := spSQL;
|
|
|
|
Modified := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TDASQLEditorForm.DoActivate;
|
|
var
|
|
Frame: TCRFrame;
|
|
begin
|
|
inherited;
|
|
|
|
Frame := GetFrameByInitProp;
|
|
if Frame <> nil then begin
|
|
PageControl.ActivePage := Frame.Page;
|
|
//Frame.SetFocus; // on Kylix control can be invisible in the form OnShow event
|
|
Frame.Activate;
|
|
end;
|
|
|
|
if PageControl.ActivePage = FSQLFrame.Page then
|
|
ActiveControl := FSQLFrame.ActiveControl;
|
|
end;
|
|
|
|
procedure TDASQLEditorForm.DoFinish;
|
|
begin
|
|
FLocalComponent.Free;
|
|
FLocalComponent := nil;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TDASQLEditorForm.AfterExecute(Sender:TObject; Result:boolean);
|
|
begin
|
|
btExecute.Enabled := True;
|
|
FDADesignUtilsClass.SetAfterExecute(FLocalComponent, FOldAfterExecute);
|
|
end;
|
|
|
|
procedure TDASQLEditorForm.DoSave;
|
|
begin
|
|
inherited;
|
|
FComponent.Assign(FLocalComponent);
|
|
end;
|
|
|
|
procedure TDASQLEditorForm.DoError(E: Exception);
|
|
begin
|
|
PageControl.ActivePage := FSQLFrame.Page;
|
|
{$IFDEF DBTOOLS}
|
|
if DBTools.HasDACSqlEditorFrame(FSQLFrame.meSQL) then
|
|
ActiveControl := DBTools.GetDACSqlEditorFrame(FSQLFrame.meSQL)
|
|
else
|
|
{$ENDIF}
|
|
ActiveControl := FSQLFrame.meSQL;
|
|
end;
|
|
|
|
procedure TDASQLEditorForm.btExecuteClick(Sender: TObject);
|
|
begin
|
|
SaveControlData;
|
|
CheckConnection(FLocalComponent);
|
|
FOldAfterExecute := FDADesignUtilsClass.GetAfterExecute(FLocalComponent);
|
|
FDADesignUtilsClass.SetAfterExecute(FLocalComponent, AfterExecute);
|
|
btExecute.Enabled := False;
|
|
try
|
|
FDADesignUtilsClass.Execute(FLocalComponent);
|
|
FParamsFrame.SelectItem;
|
|
except
|
|
on E: Exception do begin
|
|
DoError(E);
|
|
AfterExecute(FLocalComponent, False);
|
|
raise;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TDASQLEditorForm.GetSQL: TCustomDASQL;
|
|
begin
|
|
Result := FComponent as TCustomDASQL;
|
|
end;
|
|
|
|
procedure TDASQLEditorForm.SetSQL(Value: TCustomDASQL);
|
|
begin
|
|
FComponent := Value;
|
|
end;
|
|
|
|
function TDASQLEditorForm.GetComponent: TComponent;
|
|
begin
|
|
Result := SQL;
|
|
end;
|
|
|
|
procedure TDASQLEditorForm.SetComponent(Value: TComponent);
|
|
begin
|
|
SQL := Value as TCustomDASQL;
|
|
end;
|
|
|
|
function TDASQLEditorForm.GetLocalComponent: TComponent;
|
|
begin
|
|
Result := FLocalComponent;
|
|
end;
|
|
|
|
function TDASQLEditorForm.GetFrameByInitProp: TCRFrame;
|
|
begin
|
|
if InitialProperty = 'SQL' then
|
|
Result := FSQLFrame
|
|
else
|
|
if InitialProperty = 'Params' then
|
|
Result := FParamsFrame
|
|
else
|
|
if InitialProperty = 'Macros' then
|
|
Result := FMacrosFrame
|
|
else
|
|
Result := inherited GetFrameByInitProp;
|
|
end;
|
|
|
|
end.
|