- Сообщения
- 8,671
- Репутация
- 2,481
Как можно определить, где именно сфокусирован курсор на элементе GUICtrlCreateDate (с отображением времени)?
Имеется в виду сфокусирован ли курсор на часах или на минутах.
Вот пример:
нужно чтобы при вводе времени фокус всё время переходил далее (если ввели минуты в первом элементе, то нужно сфокусировать следующий элемент).
Имеется в виду сфокусирован ли курсор на часах или на минутах.
Вот пример:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <DateTimeConstants.au3>
$hGUI = GUICreate('Test', 200, 200)
$iDate1 = GUICtrlCreateDate('', 10, 10, 80, 20, $DTS_TIMEFORMAT)
GUICtrlSendMsg($iDate1, $DTM_SETFORMATW, 0, 'HH:mm')
$iDate2 = GUICtrlCreateDate('', 10, 40, 80, 20, $DTS_TIMEFORMAT)
GUICtrlSendMsg($iDate2, $DTM_SETFORMATW, 0, 'HH:mm')
GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
If @error Then Return $GUI_RUNDEFMSG
Local $iIDFrom = DllStructGetData($tNMHDR, 'IDFrom')
Local $iCode = DllStructGetData($tNMHDR, 'Code')
If $iCode = $DTN_DATETIMECHANGE Then
;If it's focused on second field in time element (on minutes), then we need to send {TAB} instead of {RIGHT} (to jump to next element)
ControlSend($hWnd, '', $iIDFrom, '{RIGHT}')
EndIf
EndFunc
нужно чтобы при вводе времени фокус всё время переходил далее (если ввели минуты в первом элементе, то нужно сфокусировать следующий элемент).