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. Как я могу этого достичь?
2 ответа
Решение
Не показывайте свой 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;