2015-01-13 29 views
1

我有類:TEDIT和TQuery的

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。我怎樣才能做到這一點?

回答

1

也許你需要SetSubComponent。

3

不要暴露你的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; 
+0

點就是增加所有屬性。 – user1969258