2009-09-09 3 views
4

TCustomControl을 기반으로하는 표 컨트롤을 작성하므로 모든 구조, 그림 및 탐색을 직접 처리 할 수 ​​있습니다.TCustomControl은 입력 포커스를 어떻게 받습니까?

내 생성자에서

, 나는이에 ControlStyle을 설정 : 내가 알아낼 수없는 비트는 이것이다

ControlStyle := ControlStyle + [csCaptureMouse, csClickEvents, 
    csDoubleClicks, csNeedsBorderPaint, csPannable]; 

컨트롤이 마우스 이벤트를 처리하는 경우, 내가 일을 할 수있는 아이디어 세트 선택 등등. 나는 컨트롤이 결코 포커스를받지 못한다는 것을 알았다. 폼에 TComboBox가 생기고 폼이 생성 될 때 명확하게 포커스가 맞춰집니다. 내 그리드 내에서 클릭하는 횟수에 관계없이 초점은 콤보 상자에 머물러 있습니다.

물론 이것은 키보드 이벤트 처리에도 영향을 미칩니다.

그렇다면 질문을 클릭 할 때 포커스가 컨트롤로 이동해야하는 것은 어떻게 결정됩니까?

답변

9

CustomControl은 클릭 할 때 SetFocus를 호출해야합니다.

procedure TMyCustomControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin 
    inherited; 

    if not (csDesigning in ComponentState) and CanFocus then 
    SetFocus; 
+0

+1 내 맞춤 컨트롤에서 수행하는 작업입니다. – Nat

관련 문제