↑  ←  Описание функции


_GUICtrlDTP_Create

Создаёт элемент содержащий дату и время

#include <GuiDateTimePicker.au3>
_GUICtrlDTP_Create($hWnd, $iX, $iY [, $iWidth = 120 [, $iHeight = 21 [, $iStyle = 0x00000000 [, $iExStyle = 0x00000000]]]])

Параметры

$hWnd Дескриптор родительского окна или окна владельца
$iX Координата левого края
$iY Координата верхнего края
$iWidth [необязательный] Ширина элемента
$iHeight [необязательный] Высота элемента
$iStyle [необязательный] Стили элемента:
    $DTS_APPCANPARSE - Позволяет приложению анализировать данные введённые пользователем и принимать соответствующие действия. Это позволяет редактировать поле элемента как строку при нажатии F2 или двойном клике. Элемент высылает $DTN_USERSTRING, когда пользователь завершил редактирование.
    $DTS_LONGDATEFORMAT - Отображает дату в расширенном формате
    $DTS_RIGHTALIGN - Раскрывающийся календарь выравнивается по правому краю элемента, а не по левому, которое по умолчанию
    $DTS_SHOWNONE - Отображает галочку в элементе. Позволяет элементу соглашаться с отсутствием даты, как с правильным выбором.
    $DTS_SHORTDATEFORMAT - Отображает дату в кратком формате
    $DTS_SHORTDATECENTURYFORMAT - Четырёх-цифровое поле года
    $DTS_TIMEFORMAT - Отображает время
    $DTS_UPDOWN - Устанавливает элемент up-down (стрелочки вверх-вниз) справа от элемента даты (DTP) для изменения значения времени. Этот стиль может использоваться вместо выпадающего календаря, который по умолчанию
    Принудительный стиль: $WS_CHILD, $WS_VISIBLE
$iExStyle [необязательный] Расширенный стиль элемента

Возвращаемое значение

Успех:Возвращает дескриптор элемента DTP
Ошибка:Возвращает 0

Примечания

Эта функция предназначена для опытных пользователей и для изучения того, как элемент работает.

См. также

_GUICtrlDTP_Destroy

Пример

#include <GUIConstantsEx.au3>
#include <GuiDateTimePicker.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

$Debug_DTP = False ; Проверяет ClassName передаваемый в DTP функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает

Global $hDTP

_Main()

Func _Main()
    Local $hGUI

    ; Создаёт GUI
    $hGUI = GUICreate("Создание DTP с помощью UDF", 400, 300)
    $hDTP = _GUICtrlDTP_Create($hGUI, 2, 6, 190)
    GUISetState()

    ; Устанавливает формат строки
    _GUICtrlDTP_SetFormat($hDTP, "ddd MMM dd, yyyy hh:mm ttt")

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; Цикл выполняется, пока окно не будет закрыто
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>_Main

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo, $tBuffer, $tBuffer2

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hDTP
            Switch $iCode
                Case $DTN_CLOSEUP ; Высылается элементом "Выбор даты и времени" (DTP), когда пользователь закрыл выпадающий календарь месяца
                    _DebugPrint("$DTN_CLOSEUP" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Возвращаемое значение для этого уведомления не используется
                Case $DTN_DATETIMECHANGE ; Высылается элементом DTP всякий раз, когда происходит изменение
                    $tInfo = DllStructCreate($tagNMDATETIMECHANGE, $ilParam)
                    _DebugPrint("$DTN_DATETIMECHANGE" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tInfo, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @tab & DllStructGetData($tInfo, "IDFrom") & @LF & _
                            "-->Code:" & @tab & DllStructGetData($tInfo, "Code") & @LF & _
                            "-->Flag:" & @tab & DllStructGetData($tInfo, "Flag") & @LF & _
                            "-->Year:" & @tab & DllStructGetData($tInfo, "Year") & @LF & _
                            "-->Month:" & @tab & DllStructGetData($tInfo, "Month") & @LF & _
                            "-->DOW:" & @tab & DllStructGetData($tInfo, "DOW") & @LF & _
                            "-->Day:" & @tab & DllStructGetData($tInfo, "Day") & @LF & _
                            "-->Hour:" & @tab & DllStructGetData($tInfo, "Hour") & @LF & _
                            "-->Minute:" & @tab & DllStructGetData($tInfo, "Minute") & @LF & _
                            "-->Second:" & @tab & DllStructGetData($tInfo, "Second") & @LF & _
                            "-->MSecond:" & @tab & DllStructGetData($tInfo, "MSecond"))
                    Return 0
                Case $DTN_DROPDOWN ; Высылается элементом DTP, когда пользователь раскрывает календарь месяца
                    _DebugPrint("$DTN_DROPDOWN" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Возвращаемое значение для этого уведомления не используется
                Case $DTN_FORMAT ; Высылается элементом DTP, чтобы запросить текст, отображаемый в поле обратного вызова
                    $tInfo = DllStructCreate($tagNMDATETIMEFORMAT, $ilParam)
                    $tBuffer = DllStructCreate("char Format[128]", DllStructGetData($tInfo, "Format"))
                    $tBuffer2 = DllStructCreate("char Display[64]", DllStructGetData($tInfo, "pDisplay"))
                    _DebugPrint("$DTN_FORMAT" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tInfo, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @tab & DllStructGetData($tInfo, "IDFrom") & @LF & _
                            "-->Code:" & @tab & DllStructGetData($tInfo, "Code") & @LF & _
                            "-->Format:" & @tab & DllStructGetData($tBuffer, "Format") & @LF & _
                            "-->Year:" & @tab & DllStructGetData($tInfo, "Year") & @LF & _
                            "-->Month:" & @tab & DllStructGetData($tInfo, "Month") & @LF & _
                            "-->DOW:" & @tab & DllStructGetData($tInfo, "DOW") & @LF & _
                            "-->Day:" & @tab & DllStructGetData($tInfo, "Day") & @LF & _
                            "-->Hour:" & @tab & DllStructGetData($tInfo, "Hour") & @LF & _
                            "-->Minute:" & @tab & DllStructGetData($tInfo, "Minute") & @LF & _
                            "-->Second:" & @tab & DllStructGetData($tInfo, "Second") & @LF & _
                            "-->MSecond:" & @tab & DllStructGetData($tInfo, "MSecond") & @LF & _
                            "-->Display:" & @tab & DllStructGetData($tBuffer2, "Display"))
                    Return 0
                Case $DTN_FORMATQUERY ; Высылается элементом DTP для получения максимально допустимого размера строки, которая будет отображаться в поле обратного вызова
                    $tInfo = DllStructCreate($tagNMDATETIMEFORMATQUERY, $ilParam)
                    $tBuffer = DllStructCreate("char Format[128]", DllStructGetData($tInfo, "Format"))
                    _DebugPrint("$DTN_FORMATQUERY" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tInfo, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @tab & DllStructGetData($tInfo, "IDFrom") & @LF & _
                            "-->Code:" & @tab & DllStructGetData($tInfo, "Code") & @LF & _
                            "-->Format:" & @tab & DllStructGetData($tBuffer, "Format") & @LF & _
                            "-->SizeX:" & @tab & DllStructGetData($tInfo, "SizeX") & @LF & _
                            "-->SizeY:" & @tab & DllStructGetData($tBuffer2, "SizeY"))
                    DllStructSetData($tInfo, "SizeX", 64)
                    DllStructSetData($tInfo, "SizeY", 10)
                    Return 0
                Case $DTN_USERSTRING ; Высылается элементом DTP, когда пользователь завершает редактирование строки в элементе
                    $tInfo = DllStructCreate($tagNMDATETIMESTRING, $ilParam)
                    $tBuffer = DllStructCreate("char UserString[128]", DllStructGetData($tInfo, "UserString"))
                    _DebugPrint("$DTN_USERSTRING" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tInfo, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @tab & DllStructGetData($tInfo, "IDFrom") & @LF & _
                            "-->Code:" & @tab & DllStructGetData($tInfo, "Code") & @LF & _
                            "-->UserString:" & @tab & DllStructGetData($tBuffer, "UserString") & @LF & _
                            "-->Year:" & @tab & DllStructGetData($tInfo, "Year") & @LF & _
                            "-->Month:" & @tab & DllStructGetData($tInfo, "Month") & @LF & _
                            "-->DOW:" & @tab & DllStructGetData($tInfo, "DOW") & @LF & _
                            "-->Day:" & @tab & DllStructGetData($tInfo, "Day") & @LF & _
                            "-->Hour:" & @tab & DllStructGetData($tInfo, "Hour") & @LF & _
                            "-->Minute:" & @tab & DllStructGetData($tInfo, "Minute") & @LF & _
                            "-->Second:" & @tab & DllStructGetData($tInfo, "Second") & @LF & _
                            "-->MSecond:" & @tab & DllStructGetData($tInfo, "MSecond") & @LF & _
                            "-->Flags:" & @tab & DllStructGetData($tInfo, "Flags"))
                    Return 0
                Case $DTN_WMKEYDOWN ; Высылается элементом DTP, когда пользователь вводит в поле обратного вызова
                    $tInfo = DllStructCreate($tagNMDATETIMEFORMATQUERY, $ilParam)
                    $tBuffer = DllStructCreate("char Format[128]", DllStructGetData($tInfo, "Format"))
                    _DebugPrint("$DTN_WMKEYDOWN" & @lf & "--> hwndfrom:" & @tab & DllStructGetData($tInfo, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @tab & DllStructGetData($tInfo, "IDFrom") & @LF & _
                            "-->Code:" & @tab & DllStructGetData($tInfo, "Code") & @LF & _
                            "-->VirtKey:" & @tab & DllStructGetData($tInfo, "VirtKey") & @LF & _
                            "-->Format:" & @tab & DllStructGetData($tBuffer, "Format") & @LF & _
                            "-->Year:" & @tab & DllStructGetData($tInfo, "Year") & @LF & _
                            "-->Month:" & @tab & DllStructGetData($tInfo, "Month") & @LF & _
                            "-->DOW:" & @tab & DllStructGetData($tInfo, "DOW") & @LF & _
                            "-->Day:" & @tab & DllStructGetData($tInfo, "Day") & @LF & _
                            "-->Hour:" & @tab & DllStructGetData($tInfo, "Hour") & @LF & _
                            "-->Minute:" & @tab & DllStructGetData($tInfo, "Minute") & @LF & _
                            "-->Second:" & @tab & DllStructGetData($tInfo, "Second") & @LF & _
                            "-->MSecond:" & @tab & DllStructGetData($tInfo, "MSecond"))
                    Return 0
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _DebugPrint($s_text, $line = @ScriptLineNumber)
    ConsoleWrite( _
            "!===========================================================" & @LF & _
            "+======================================================" & @LF & _
            "-->Строка(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
            "+======================================================" & @LF)
EndFunc   ;==>_DebugPrint