我有课:
TcvDbedit = class(TCustomMaskEdit)
...
private
...
fQuery: TQuery;
...
protected
...
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
...
published
...
property DataQuery: TQuery read fQuery write fQuery;
...通过这种方式,我可以将TQuery作为属性,并可以更改属性查询。我需要一些其他的东西,来改变tQuery的属性并将它们保存在dfm中。我不希望TQuery在形式上可见。实际上我和TFDQuery一起工作。我怎样才能做到这一点?
发布于 2015-01-13 13:01:56
也许你需要SetSubComponent。
发布于 2015-01-13 13:14:43
不要将fQuery公开为TcvDbEdit的公共成员,而是公开所需的属性-
interface
TcvDbedit = class(TCustomMaskEdit)
private
fQuery: TQuery;
procedure SetSQL(AValue : String);
function GetSQL;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property SQL : TStrings read GetSQL write SetSQL;
end;
implementation
constructor TcvDbedit.Create(AOwner : TComponent);
begin
fQuery = TQuery.Create(self);
end
destructor TcvDbedit.Destroy;
begin
fQuery.Free;
end;
procedure TcvDbedit.SetValue(AValue : String);
begin
fQuery.SQL.Assign(AValue);
end;
function TcvDbedit.GetSQL : TStrings;
begin
return fQuery.SQL;
end;https://stackoverflow.com/questions/27922698
复制相似问题