2015-01-13 1 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