どのようには、TCustomControlは、入力フォーカスを受け取るのでしょうか?
-
22-09-2019 - |
質問
私は自分自身を塗装し、ナビゲーション、すべての構造を扱うことができますので、私はは、TCustomControlに基づいてグリッドコントロールを書いています。私が把握するように見えることができないことを少しはこれです:
私のコンストラクタで、私はこれにControlStyleを設定します:
ControlStyle := ControlStyle + [csCaptureMouse, csClickEvents,
csDoubleClicks, csNeedsBorderPaint, csPannable];
コントロールハンドルのマウスイベントならば、私はコントロールがフォーカスを受け取ることはありませんことに気づいたもののなどIセットの選択のようなものを行うことができているという考え。私は、フォーム上のTComboBoxを持って起こると、フォームが作成されたとき、それは明らかに焦点を当てています。どんなに私は、グリッド内をクリック回数、コンボボックスにフォーカス滞在ます。
もちろんこれは、同様にキーボードイベントの私の取扱いのための意味を持っています。
質問があるので、は、どのようにそれはあなたがそれをクリックしたときに、フォーカスがコントロールにシフトする必要があると判断しているのですか?
解決
それは時にクリックされたときCustomControlが自身にのSetFocusを呼び出す必要があります。
procedure TMyCustomControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
inherited;
if not (csDesigning in ComponentState) and CanFocus then
SetFocus;
所属していません StackOverflow