2012-02-25 8 views
5

私はデザイナーシステムの一部であるいくつかのバーチャルコントロールを持っています。彼らは完全に所有者が描かれていることを除いて、デルファイ自身のコンポーネントを模倣しています。私が直面している問題は、私の不動産システムが通常のDelphiとは多少異なるため、プロパティを編集するためにRTTIインスペクタを使用することはできません。Delphi non-rtti inspector

通常のデルファイインスペクタのように見え、動作するインスペクタについて知っていますが、コードでプロパティを定義することはできますか?

し、可能な場合、私は列挙型を定義することを可能にする1:

with edInspector.Items.add('align') do 
Begin 
    Options.add('alLeft',ftord(TMyAlign.azLeft)); 
    Options.add('alTop',ord(TMyAlign.azTop)); 
    Options.add('alRight',ord(TMyAlign.azRight)); 
    Options.add('alBottom',ord(TMyAlign.azBottom)); 
    Options.add('alClient',ord(TMyAlign.azClient)); 
end; 

と複合型を:

with edInspector.Items.add('font') do 
Begin 
    subitems.add('name',dtString).value:=def_FontName; 
    subitems.add('size',dtInteger).value:=def_fontSize; 
    subitems.add('color',dtColor).Value:=def_fontColor; 
end; 
+2

「私の不動産システムは通常のデルファイとは多少異なる」とはどういう意味ですか?公開されたプロパティと公開されたプロパティの違いを認識していますか? –

+0

彼はそうです。外部システムからプロパティをポーリングする。つまり、カスタムオブジェクトの名前と値のペアに格納されます。したがって、通常のRTTIからは表示されません。手作業で取得/設定する必要があります。 –

+0

他のものがパーシステンスメカニズムである場合は、「stored False」と宣言された公開プロパティを使用し、オブジェクトインスペクタでビルドを行います。永続化メカニズムの助けが必要な場合(通常の型付きプロパティに割り当てることができる値にテキストを変換するなど)、TReaderとTFilerがそのジョブをどのように処理するかを見てください。 –

答えて

2

Inspexを試してみてください。すごいかっこいい。

http://www.raize.com/DevTools/Inspex/Default.asp

あなたは、動的にプロパティを追加することができ、あなたは一般的なタイプのほとんどのプロパティエディタを取得します。

これはDelphiオブジェクトインスペクタとよく似た動作をします(複数のオブジェクトを追加すると、セットを編集したり、同じオブジェクトを検出したり、他のオブジェクトを隠したり、プロパティ値を同じにします)。

複数のレベルがある場合は、ツリー状の構造でプロパティを表示します。 TObjectを追加したり、文字列を使用したり、プロパティを1つずつ追加したりすることで簡単に入力できます。

スクリーンショット:Delphi Runtime Inspector

Screenshot

+0

良い見えますが、無料ではありません。私は自由な選択肢がほしいと述べたはずです。 –

0

、あなたは実行時にオブジェクトの情報を見ることができます。

+0

あなたの要件を満たすためには、それを確かに適合させるべきです。 – menjaraz

+0

実行時の情報は必要ありません。実行時にコードで定義した自分の構造体を編集したい。しかし、私は "本当の"オブジェクトを検査したくない。 –