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 ответа

Решение

Может быть, вам нужен SetSubComponent.

Не показывайте свой 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;
Другие вопросы по тегам