私はいつも非表示コンポーネントを書いています。それらの作成は非常に簡単で、VCLとFMXでも同様にうまく動作します。これまでのところとても良いですが、今は問題に直面しています。Delphiのビジュアルコンポーネント(キャンバスあり)
TRedistPreview
と呼ばれる私のコンポーネントは、本当にこのような手順を必要とするため、もはや私はTComponent
を継承するために使用されるが、今私はできません:
procedure drawPreview(area: TCanvas);
この手順は何か(図形、線や色)を描画するために持っているため、どこかでTRectangle
の例です。私はTComponent
に描画する能力がないので、私は何か他のものから継承するべきであることをオンラインで見てきました。私はTWinControl
(それはVCLのみ)とTCustomControl
(VCLのみ)を見つけました。
私はキャンバスを得るために何を継承すべきか教えてください。
TRedistPreview = class(TComponent)
end;
をして::
私はprocedure drawPreview(area: TCanvas);
を呼び出し、(
TRectangle
のような)面上に描画することができ
TRedistPreview = class(TSomeClassThatHasCanvas)
end;
私は意味、私は交換したいです。
私は、Canvasを使用して階層内で可能な限り低いクラスを探しています。
このコンポーネントは、WindowsとAndroidでは非常に便利なので、私はFiremonkeyの実装を探しています。私の研究から、私はFMX.Objects
の中にあるTRectangle
から継承することができることを見ましたが、これが正しい選択かどうかはわかりません。
どうすればよいですか?
また、このコンポーネントがVCLに必要な場合は、別のクラスから継承する別のコンポーネントを記述する必要がありますか?
私が言ったように、これはビジュアルコンポーネントを書く初めてのことなので、誰かが私に正しい方法を教えてほしいです!
TComponentから絶対に動かすこと。キャンバスにコンポーネントを描画するメソッドを実装できないという理由はまったくありません。もちろん、そのデザインは間違っているかもしれません。多分あなたは視覚的なコントロールが必要でしょう。おそらくあなたは間違ったことを求めています。 –
はい、VCLとFMXは互いに互換性がありません。両方で動作する1つのコントロールを書くという意味ではありません。基本的にセミ・トラックからミニ・クーパーにディーゼル・エンジンを取り付けるようなものです。 –
ジャンプスタートとして、この質問の私のコードのようなあらかじめ書いたものを見てみることができます:https://stackoverflow.com/questions/31767346/capturing-signature-very-sketchy-on-touch-screenそれを学び、あなた自身のことを実装してください。 –