Что нового

Установка текста в элемент

Rinfes

Новичок
Сообщения
25
Репутация
0
С помощью программы отловлен элемент, который показывает время: [CLASS:SysDateTimePick32; INSTANCE:1]
Значение этого элемента выводится в формате ЧЧ:ММ:СС
Пытаюсь поставить нужное для себя время. Команды не помогают. Что делать?
Код:
ControlSetText("Окно №1", "", "[CLASS:SysDateTimePick32; INSTANCE:1]", "20:00:00")
ControlSend("Окно №1", "", "[CLASS:SysDateTimePick32; INSTANCE:1]", "20:00:00")


Исходный код этой программы:
Код:
#include <GUIConstantsEx.au3>
#include <DateTimeConstants.au3>


Example1()
Func Example1()
    Local $n, $msg

    GUICreate("Время", 200, 200, 800, 200)
    $n = GUICtrlCreateDate("", 20, 20, 100, 20, $DTS_TIMEFORMAT)
    GUISetState()

    ; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
    Do
        $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

    MsgBox(4096, "Время", GUICtrlRead($n))
    GUIDelete()
EndFunc
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Да вроди можно заменить
Код:
#include <GUIConstantsEx.au3>
#include <DateTimeConstants.au3>

HotKeySet('{F1}', '_EditTime')

Example1()
Func Example1()
    Local $n, $msg

    GUICreate("Время", 200, 200, 800, 200)
    $n = GUICtrlCreateDate("", 20, 20, 100, 20, $DTS_TIMEFORMAT)
    GUISetState()

    ; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
    Do
        $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

    MsgBox(4096, "Время", GUICtrlRead($n))
    GUIDelete()
EndFunc

Func _EditTime()
	ControlSend("Время", "", "[CLASS:SysDateTimePick32; INSTANCE:1]", "20:00:00")
EndFunc
Только оно не тикает :smile:
 
Автор
Rinfes

Rinfes

Новичок
Сообщения
25
Репутация
0
Ну вот если программа скомпилирована и запускается как exe файл, то не работает. Кстати, ваш вариант не полностью рабочий. число "20" устанавливается в ту ячейку времени, которая выбрана.

Установить время получается, если добавить в начало
Код:
ControlFocus("Окно №1", "", "[CLASS:SysDateTimePick32; INSTANCE:1]")


Но если скрипт запустить еще раз, то "20 часов" он поставить в минуты
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Сейчас почитал справку. Я так понимаю, что в поле дата можно устанавливать с помощью команды
Код:
$Err = GUICtrlSetData($n, '00:00:00')
ConsoleWrite($Err & @LF)

Только не пойму, почему возращает 0, то есть ошибка. При этом время не устанавливается.
Может кто-то сможет подсказать, как это правильно делать.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Да, теперь это точно работает.
Код:
#include <GUIConstantsEx.au3>
#include <DateTimeConstants.au3>

HotKeySet('{F1}', '_EditTime')
Global $n
Example1()
Func Example1()
    Local $msg

    GUICreate("Время", 200, 200, 800, 200)
    $n = GUICtrlCreateDate("", 20, 20, 100, 20, $DTS_TIMEFORMAT)
    GUISetState()

    ; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
    Do
        $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

    MsgBox(4096, "Время", GUICtrlRead($n))
    GUIDelete()
EndFunc

Func _EditTime()
	$sTime = InputBox('Ввод времени', 'Введите время:', GUICtrlRead($n))
	If StringRegExp($sTime, '^([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}', 0) Then
		$sTime = '2015/01/01 ' & $sTime
		GUICtrlSetData($n, $sTime)
		ConsoleWrite($sTime & @LF)
	Else
		MsgBox(0, 'Ошибка', 'Не корректное время', 5)
	EndIf
EndFunc
 
Верх