私の質問では: 一度に複数のクラスに対して「As」演算子で「Sender」パラメーターを使用する方法
私が Remy Lebeau's Answer を選んだのは、そのようなほとんどの状況で最もダイナミックな技術だったからです。RTTI TypInfo クラスを使用します。
しかし、このクラスを使用していると、別の問題が発生 しました。サブプロパティ値を設定するにはどうすればよいですか?
function TRemote.UpdateQuery(DataSet: TDataSet; SQL: String): Boolean;
var
PropInfo: PPropInfo;
begin
{ atualiza o código SQL padrão de um dataSet de consulta tipo View }
PropInfo := GetPropInfo(DataSet, 'SQL', []);
if not Assigned(PropInfo) then
begin
Result := False;
Exit;
end;
try
DataSet.Close;
SetPropValue(DataSet, PropInfo, SQL);
DataSet.Open;
Result := True;
except
Result := False;
end;
end;
例: TIBQuery があり、SQL プロパティのテキストを更新したいと考えています。しかし、SQL プロパティは TStrings クラスなので、SQL.Text を使用する必要があります。上記のコードでは、TStrings を取得し、後で通常の文字列を設定しようとしたため、「Invalid Property Type」というエラーが発生します。
GetPropInfo を使用して SQL.Text に到達する方法は? SQL プロパティを持つ TIBQuery と TZQuery の共通の先祖があるので、関数パラメーターの TDataSet の代わりに変更できますか?