내 응용 프로그램에서는 3 개의 탭이있는 TTabControl을 사용합니다. 3 개의 버튼이있는 기본 탭 (TabItem1) : Button1은 나를 TabItem2로, Button2는 TabItem3으로, 버튼 3은 TabItem3으로 이동합니다. 나는 사용자가 응용 프로그램을 종료하고자하는 경우 묻는 메시지가 팝업의 ActiveTab가 TabItem1 경우 누른 키가 다음 vkHardwareBack 경우하드 버튼 처리 vkHardwareBack
:
나는 FormKeyUp 이벤트는 탐색 및 제어하는 처리합니다. 대답이 '예'인 경우 응용 프로그램을 닫고 아무 것도 일어나지 않으면. 이 부분은 잘 작동합니다!
그러나 ActiveTab이 TabItem2 또는 TabItem3 경우 그때 특성을 가진 TTabChangeItem 표준 행동 발사에 의해 메인 탭 (TabItem1)로 돌아갈 수있는 응용 프로그램을 원하는 :
- 탭 : TabItem1
- 방향 : tdReversed를
- 거래 : ttSlide 그러나 이런 일이되지
. ActiveTab이 TabItem2 또는 TabItem3 인 동안 사용자가 vkHardwareBack을 누르면 응용 프로그램이 백그라운드로 이동하고 홈 화면이 표시됩니다.
어떤 아이디어 내가 잘못 했습니까?
이procedure TfMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkHardwareBack then
if TabControl.ActiveTab = TabItem1 then
if MessageDlg('Are you sure you want to Exit?', TMsgDlgType.mtWarning,
[TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes then
MainActivitiy.finish
else
ChangeTabAction1.Execute; // I tried here also: TabControl.ActiveTab := TabItem2; but still the same results
end;
실제 코드를 보여주십시오 여기
그리고는 a를 FormKeyUp 절차입니다. –
여기 FormKeyUp 프로 시저가 있습니다 : 프로 시저 TfMain.FormKeyUp (보낸 사람 : TObject, var 키 : Word, var KeyChar : Char; Shift : TShiftState); 이 시작하면 키 = vkHardwareBack 다음 경우 TabControl1.ActiveTab = TabItem1 다음 경우는 MessageDlg (TMsgDlgType.mtWarning, '당신이 종료 하시겠습니까? 확실 해요', [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes then MainAcitivity.finish else ChangeTabAction.Execute else end; 물론 Tab (TabControl.ActiveTab : = TabItem1)의 명시적인 변경을 시도했지만 그 결과는 동일합니다. –
원래 질문을 코드를 업데이트하도록 수정하십시오. 주석에 넣지 마십시오. 그리고 각'else' 문이 어떤'if' 문과 함께 있는지 명확하게하기 위해 코드에'begin/end' 블록을 두는 것에 대해 생각할 수도 있습니다. –