2013-04-01 1 views
0

수정 된 TToolWindow97 = class(TCustomControl) 구성 요소를 사용하고 있습니다.Focused 속성이 항상 False를 반환 할 때 TCustomControl에 포커스가 있는지 알아 보는 방법은 무엇입니까?

enter image description here

난 단지 TForm.Components에서 찾을 수 있습니다. 그리고 그것은 TForm.Controls에 없습니다. 따라서 TForm.ActiveControl은 nil이고 TToolWindow97에 초점을 맞춘 경우 TToolWindow97.Focused = False입니다. 집중해야 할 때를 알아야합니다.

또한 TToolWindow97에 포커스가있는 컨트롤을 찾으려고했습니다. 그러나 그들 모두는 Focused = False을 반환합니다. (TCustomControl에서 inheried) TToolWindow97 항상 FalseFocused 속성 반환에 초점을 맞춘 경우

방법을 찾는 방법은?

P. TToolWindow97 창의 이미지에 그림자가 있습니다. 초점이 맞춰진 창에는 초점이 맞춰진 TToolWindow97 창이 있습니다. 그리고 나는 그것에 어떤 통제도 집중할 수 있습니다. 그러나 그들 모두는 Focused = False을 반환합니다. 나는 이유를 모른다.

도움을 주셔서 감사합니다.

+0

요르단 러셀의 툴바 97입니다. 그렇다면, 내가 정확히 말했을 때, 툴 윈도우는 런타임에 최상위 윈도우에 중첩되어 있습니다. 도구 창의 최상위 창을 찾고 활성 창인지 테스트합니다 (GetActiveWindow). –

+0

GetActiveWindow가 전혀 도움이되지 않습니다. – Dmitry

+1

도구 창이있는 최상위 창을 올바르게 식별하지 못한 것 같습니다 ... –

답변

0

1). TBToolWindow 집중하고 있지 않은 경우 다음 핸들을 스캔 :

 aHandle := (Sender as TForm).Handle; 
     aHandle := aVisible.Handle; 
     aHandle := GetForegroundWindow; 
     aHandle := GetActiveWindow; 
     aHandle := Screen.ActiveForm.Handle; 
     aHandle := Application.ActiveFormHandle; 

그래서, 그 차이는 Screen.ActiveForm.Handle에 있습니다.

2). Microsoft 스파이를 설치하십시오.

3). 화면 변환. 액티브 폼. 16 진수로 이동하여 스파이에서 찾으십시오.

4). 수업을보세요. 따라서 TTBToolWindow에 중점을 둘 때 aHandle 클래스는 TBFloatingWindowParent입니다.

5). TBFloatingWindowParent 컨트롤에 의해 올바른 액티브 플로팅 윈도우 (TTBToolWindow)를 찾는 코드를 작성하십시오.

+0

네, 저의 의견은 이미 다음과 같습니다. * "도구 창의 최상위 창 찾기 및 테스트 ..."* –

4

도구 모음 단추에 포커스가 없습니다. 이미지에서 그리드 컨트롤에 초점이 있다는 것이 분명합니다. 점선으로 된 사각형이 있고 셀은 포커스 색상으로 강조 표시됩니다.

음영 처리 된 이미지가있는 "15"버튼은 이 마우스로을 가리키고 있습니다. 그것의 "초점"상태가 아니라 "호버"또는 "핫"상태입니다. 코드에서 상태 이름은 bsMouseIn이고 FState 필드에 저장됩니다. 해당 필드는 공개 속성을 보호하며 공용 속성이나 메서드를 통해 노출되지 않습니다. OnMouseEnterOnMouseExit 이벤트에 관심이있을 수 있습니다.

툴바 버튼은 포커스를 거의 얻지 못합니다. 그것들은 오직 마우스로만 작동하도록되어 있습니다. 키보드로 조작하려면 관련 바로 가기 키 조합을 대신 누르십시오. 특정 단추 컨트롤 인 TToolbarButton97TGraphicControl에서부터 나오기 때문에 결코 포커스를 얻지 못합니다.

+0

TToolbarButton97 구성 요소가 없습니다. Toolbar2000의 버튼입니다. – Dmitry

+0

Grid는'Focused' 속성에 초점을 두지 않습니다 (그러나 사실 그대로입니다). 또한 내 질문에 대한'TTBToolWindow' - 그것에 대한 컨트롤에 대한 아니었다. 미안하지만, 대답은 완전히 uselles. – Dmitry

+0

TTBToolWindow에 대해 언급 한 것은 이번이 처음입니다. 그게 뭐야? –

관련 문제