프레임과 일부 컨트롤 (편집, 버튼 등)이 있습니다. 프레임 컨트롤의 어느 곳에서나 ENTER 키를 눌러 가로 채고 Tab 키로 변환하는 방법 (SHIFT 상태 고려)?Delphi : TFrame에서 Enter 키가 Tab 키로 작동하는 방법
답변
다음은 을 입력하면을 누르면 다음 컨트롤로 이동할 수있는 프레임의 메시지를 처리하는 몇 가지 예제 코드입니다. 이 샘플에서는 키를 수정하지 않으므로 키가됩니다. 대신 다음 제어를 선택하고 키 다운 메시지의 추가 처리를 방지합니다.
코드를 추가로 조정해야 할 수도 있습니다. 하나의 컨트롤에 실제로 키를 입력해야하는 경우 (예 : TMemo
) 예외를 추가해야합니다. 두 번째로, 네비게이션은 프레임에 래핑됩니다. 즉, 마지막 프레임 컨트롤 이후에 첫 번째 프레임 컨트롤에 포커스가 설정됩니다. 폼이 아닌 프레임 컨트롤입니다. 이 경우 메시지 반환을위한 조건을 추가 할 수 있습니다. 일부 조건에서 기본 처리를 원하면 다른 것을하지 않고도 상속을 호출하십시오.
type
TFrame2 = class(TFrame)
...
protected
procedure CMChildKey(var Message: TCMChildKey); message CM_CHILDKEY;
end;
..
procedure TFrame2.CMChildKey(var Message: TCMChildKey);
begin
if Message.CharCode = VK_RETURN then begin
SelectNext(Screen.ActiveControl, not Bool(GetKeyState(VK_SHIFT) and $80), True);
Message.Result := 1;
end else
inherited;
end;
CM_DIALOGKEY
의 처리를 수정하면됩니다.
글쎄,이 기능과 작동 방식은 매우 분명합니다.
프레임에서이를 수행하는 방법을 문의하십시오. 프레임에서 대화 상자 탐색을 처리하는 것은 불가능합니다. 그것은 상당히 명백한 이유 때문에 양식에 의해 수행됩니다. 따라서 프레임을 호스팅하는 형식으로이 코드를 연결해야합니다.
메모 제어의 경우 이는 아무 효과가 없습니다. ENTER을 줄 바꿈 입력으로 처리합니다. 그러나 나는 그것이 당신이 원하는 것이라고 생각합니다. 그렇지 않으면 메모 컨트롤을 완전히 사용할 수 없게됩니다.
@anondv이 대답에서 잘못된 것이 있습니까 –
프레임에서 가능하지 않은 불만입니다. 그러나 폼에 프레임이 많은 경우 해당 이벤트에 대해 하나의 이벤트 핸들러 만 작성해야합니다. 고맙습니다! –
포커스가 한 프레임의 마지막 컨트롤에있는 경우 TAB은 다음 프레임의 첫 번째 컨트롤로 이동해야합니다. 그리고 각 프레임이 분리되어 있기 때문에 프레임이 그 프레임을 담당 할 수 없습니다. 양식에만있는 모든 컨트롤의 큰 그림을 볼 수 있습니다. 그래서 'CM_DIALOGKEY'가 부모 폼으로 전송됩니다. –
내가 많이 있다고 생각 "드롭 잊지"구성 요소가 예를 들어 http://Torry.net
에 예를 들어, 그것을 할, 이러한 구성 요소는 RxLib의 일부 나중에 TJvEnterAsTab
와 JediVCL에 inherted했다 이름.
일부 코드 줄에 작성할 수있는 작업에 구성 요소를 사용하는 것이 불합리하다고 생각합니다. –
은 POV에 따라 다릅니다. 구성 요소는 코드를 중앙 집중화하고 유지 보수의 부담을 다른 사람에게 위임합니다. 그러나 선택은 당신의 것입니다. 나는 당신이 가지고있는 것을 발견했습니다. –
- 1. Enter 키가 Tab 키처럼 작동하는 이유는 무엇입니까?
- 2. 왜 Enter 또는 Tab 키가 TextBox에서 유효성 검사를 수행합니까?
- 3. Tab 키로 Swing JComboBox의 값을 받아들이는 방법
- 4. Tab 변경 Enter
- 5. Enter 키가 검색에 유용합니까?
- 6. TFrame에서 OnKeyDown 이벤트 구현 방법
- 7. JavaFX "Enter"및 "Tab"이벤트
- 8. Silverlight 양식의 Tab 키에 Enter 키 변경
- 9. 단추에 Enter 키가 나타나지 않도록하는 방법
- 10. Tab Control draw on Enter 키
- 11. Enter 키가 요소를 클릭하지 않습니다
- 12. 유형 ENTER 키가 캡처되지 않습니다.
- 13. Delphi 2007 이상에서 작동하는 Delphi obfuscator가 있습니까?
- 14. jEditable TAB 및 ENTER 입력 제출
- 15. Tab 키 기능 VB.Net에서 Enter 키 사용
- 16. ExtJs가 Enter 키를 누를 때 TAB 시뮬레이션
- 17. NSTextView에서 Enter/Tab/Up/Down 키를 찾으십니까?
- 18. muenchian 그룹에서 키가 작동하는 방식
- 19. wxPython : Tab 키로 텍스트 컨트롤 포커스 전환하기
- 20. PYDEV Eclipse 자동 완성을 위해 "TAB"대신 "ENTER"사용
- 21. Jquery - TAB 또는 ENTER 키를 사용하여 TABLE TD에서 변경하는 방법
- 22. JavaFX 2 TextArea : [Enter] 및 [Tab] 사용을 중지하는 방법
- 23. TAB 키가 NetBeans 8에서 작동하지 않습니다.
- 24. Flash 응용 프로그램에서 Tab 키가 이상하게 비활성화되었습니다.
- 25. Matlab 편집기에서 Tab 키가 이상하게 작동합니까?
- 26. Eclipse : TAB 키가 PHP 편집기 (PDT)
- 27. Mac에서 Java에서 Tab 키가 감지되지 않습니다.
- 28. DataGridView TextBox 셀 편집, 변경 Tab 키로 활동 키 입력
- 29. 목록 상자에서 Tab 키가 눌러져 있는지 확인하는 방법
- 30. TWebBrowser 및 Tab 키
내가 원하는 것을 만드는 좋은 코드. –
포커스를받을 수있는 컨트롤이 해당 단일 프레임에있는 컨트롤 만있는 폼에만 프레임 만 나타나면 괜찮습니다. 매우 구체적인 상황에 있다면이 대답은 좋습니다. 보다 일반적인 상황에서는 양식에 살기위한 코드가 필요합니다.음, 다른 곳에서 작동하도록 할 수는 있지만 왜 그럴까요? 양식이 적합한 장소입니다. –
이상한 행동이었습니다. 프레임에는 TLabel 및 TEdit 컨트롤이있는 TScrollBox가 있습니다. 제안 된 코드를 프레임에 첨부하고 Enter 키를 누를 때 포커스가 첫 번째 TEdit에서 마지막으로 변경된 다음 사라졌습니다. 첫 번째 TEdit에 다시 나타난 후 Enter 키를 4 ~ 5 번 눌러야합니다. 문제가 무엇입니까? 포커스가 부모에게 이동 된 위치 : TScrollBox, TFrame, TForm? –