質問

私のバージョンのdelphiが表示されますが、TPaintBoxのキーイベント(OnKeyDown、OnKeyUp、OnKeyPress)イベントがありません。そのようなものを処理したいと思います。誰かがこれらのイベントのペイントボックスを持っていましたか?

役に立ちましたか?

解決

TLamaが言ったように、TCustomControlから継承する必要があります。ただし、すべてのキーボードイベントを公開するには、追加のコードが必要になります。 TPanelはすでにCanvasといくつかのキーボードイベントを公開しているため、簡単な方法を選択してTPanelから継承することができます。

ただし、TCustomControlのプロパティを公開し、新しいOnPaintイベントを導入する新しいコントロールを作成して登録する方法を示すコードを次に示します。

新しいパッケージを作成し、このユニットを追加してインストールすると、フォーカスを設定できる新しいTGTPaintBoxコントロールが作成されます(表示されませんが)。キーボード入力も取得できます。 ジェネラコディセタグプレ

PaintBoxも透明であるため、コントロールを透明にするためにいくつかの機能を追加しました。 1つの欠点は、以前に描画されたコンテンツをクリアするために親を再描画する必要があることです。デモアプリケーションでは、これは十分に簡単です。コントロールの代わりにフォームを無効にするだけです。 :p
不要な場合は、WMEraseBkGndCreateParamsSetParentをコントロールから削除できます。

小さなデモ: フォームにラベルを貼ります。その上にTGTPaintBoxを置き、少し大きくします。次に、タイマーと、おそらく他のいくつかのコントロールを追加します。

GTPaintBoxのTabStopプロパティをTrueに設定していることを確認してください。

次に、次のイベントを実装します。 ジェネラコディセタグプレ

他のヒント

ペイントボックスを含むフレームを作成し(alClientに合わせて)、必要に応じてフレームを再利用することもできます。TFrameはウィンドウコントロールであるため、すべてのキーボードイベントがあります。それらは公開されていませんが、コードで割り当てることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top