4

DFM ファイルに保存したくないカスタム コンポーネントのプロパティがあります。私は、DefineProperties メソッドをオーバーライドして、値を保存しないことを期待して、ReadData および WriteData プロシージャを提供しませんでしたが、それでも保存されます。

procedure TAEFDQuery.DefineProperties(Filer: TFiler);
begin
  inherited;
  // Set the ADO Compatibility custom properties to not be saved on the DFM
  Filer.DefineProperty('CommandText', nil, nil, False);
end;

このプロパティを保存しない理由は、プロジェクトを ADO から FireDAC に移植し、一部の ADO コードを変更せずに実行して対応する FireDAC プロパティにリダイレクトする「偽の」プロパティを作成したためです。

type
    TAEFDQuery = class(TFDQuery)
    private
        function GetCommandText: string;
        procedure SetCommandText(AValue: string);
    protected
        procedure DefineProperties(Filer: TFiler); override;
    published
        property CommandText: integer read GetCommandText write SetCommandText;
    end;

implementation

procedure TAEFDQuery.SetCommandText(AValue: string);
begin
  SQL.Text := AValue;
end;

function TAEFDQuery.GetCommandText: string;
begin
  Result := SQL.Text;
end;

procedure TAEFDQuery.DefineProperties(Filer: TFiler);
begin
  inherited;
  // Set the ADO Compatibility custom properties to not be saved on the DFM
  Filer.DefineProperty('CommandText', nil, nil, False);
end;

これらの「偽の」プロパティを、互換性のために、実際のプロパティの役に立たないコピーでDFMファイルに埋めずに保持する正しい方法はどうすればよいですか?.

ありがとうございました。

4

2 に答える 2