1

授業がある:

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 を使用しています。どうすればそれを達成できますか?

4

2 に答える 2

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;
于 2015-01-13T13:14:43.740 に答える
1

たぶん SetSubComponent が必要です。

于 2015-01-13T13:01:56.987 に答える