Показать полную графическую версию : [решено] Вопрос по GUI
Помогите пожалуйста разобраться в таком вопросе:
1. вот допустим имееться такой код
$A1=GuiCtrlCreateInput("5", 100, 35, 40, 20)
$A2=GUICtrlRead($A1)
и ввел я например цифру 5
Почему, когда я пишу следующую строку
MsgBox(0,1,""& $A2 &"",1) выводится в качестве A2 какое то левое значение, а не "5"
и если я напишу
MsgBox(0,1,""& GUICtrlRead($A1) &"",1) выводится именно то, что я ввел, т.е. "5"
Как правильно присвоить переменной вводимое значение?
2. И вот аналогичный вопрос про галочку
$A1=GuiCtrlCreateCheckbox("", 120, 78, 40, 20)
$A2=GUICtrlRead($A1)
И странно то, что при нажатой возвращаеться единица, а при отжатой возвращаеться 4. И мне кажеться, что я что то не так делаю, подскажите пожалуйста что именно.
выводится в качестве A2 какое то левое значение, а не "5" »
Нет, у меня именно 5 и выводится. Полный нерабочий пример можно увидеть?
странно то, что при нажатой возвращаеться единица, а при отжатой возвращаеться 4 »
Всё верно, оно так и задуманно, а что вас заставило ожидать другое значение? В справке ведь об этом сказано. 1 это константа $GUI_CHECKED, а 4 это $GUI_UNCHECKED.
Кстати, я делаю вот что для получения 1-цы для поставленной отметки, и 0 для снятой:
$iState = Number(GUICtrlRead($A1) = 1)
Да собственно еще раз проверил и вот код
#include <GuiConstantsEx.au3>
Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)
Global $ExitID
Global $A1
Global $A2
GUI()
Func GUI()
Local $YesID
; GUI
GuiCreate("1.0", 420, 300)
; TAB
GuiCtrlCreateTab(10, 0, 400, 260)
GuiCtrlCreateTabItem("main")
GuiCtrlCreateLabel("Number", 20, 40)
; UPDOWN
$A1=GuiCtrlCreateInput("5", 100, 35, 40, 20)
GuiCtrlCreateUpDown(-1)
$A2=GUICtrlRead($A1)
$YesID = GUICtrlCreateButton("Start", 10, 260, 100, 30)
GUICtrlSetOnEvent($YesID, "Start")
$ExitID = GUICtrlCreateButton("Exit", 290, 260, 100, 30)
GUICtrlSetOnEvent($ExitID, "OnExit")
GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")
GUISetState() ; display the GUI
While 1
Sleep(1000)
WEnd
EndFunc
Func Start()
MsgBox(0,1," "& $A2 &" ",2)
EndFunc
Func OnExit()
Exit
EndFunc
Сам то я пользуюсь AutoIt3_2_5_4_ru.chm - вот таким справочником (1,3 mb), в гугле тоже вводил, но там выскакивают эти функции в коде, пришлось как то на примерах осваивать.
Да собственно еще раз проверил и вот код »
Так в чём проблема, и в этом примере отображает 5 после нажатия Start.
я пользуюсь AutoIt3_2_5_4_ru.chm »
Мда... нужно обновлять русскую справку, а времени не хватает :(
FlatX007
28-06-2009, 15:14
Так нарно понятнее будет
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form = GUICreate("", 144, 76, 302, 218)
$Input1 = GUICtrlCreateInput("", 8, 8, 121, 21)
$Button1 = GUICtrlCreateButton("Button1", 56, 40, 75, 25, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$Read = GUICtrlRead($Input1)
MsgBox(16, "Сообщение", "Значение переменной $Read = " & $Read)
EndSwitch
WEnd
Ща ... Креатор опять будет ругацо типа опять наКoda`ил (FormDesigner) :yes:
Креатор опять будет ругацо типа опять наКoda`ил »
Да я и не ругался по этому поводу, просто высказал своё мнение :)
Мда... нужно обновлять русскую справку, а времени не хватает »
У меня, кстати, тоже была такая мысля. Я даже что-то начал.
Думал сначала просто переводить. А потом плюнул. Влом как-то стало.
Может "навалимся всем скопом" и переведём справку? Тем более, что есть база: справка Валерия Иванова.
Программа минмум: перевести стандартные функции и справку (380 функций и по мелочи).
Программа максимум: перевести UDF и добавить русские примеры (1980 функций)
Как идейка? Ведь если будет хотя бы четыре человека, то работа будет идти гораздо быстрее.
Так в чём проблема, и в этом примере отображает 5 после нажатия Start. »
А ты попробуй значение сменить. Если изменить на 4, то все равно выводит 5!
Пытался сейчас переписать код программы не хочет обрабатывать цикл... Без опций
Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)
У меня, кстати, тоже была такая мысля. Я даже что-то начал.
Думал сначала просто переводить. А потом плюнул. Влом как-то стало.
Может "навалимся всем скопом" и переведём справку? Тем более, что есть база: справка Валерия Иванова.
Программа минмум: перевести стандартные функции и справку (380 функций и по мелочи).
Программа максимум: перевести UDF и добавить русские примеры (1980 функций)
Как идейка? Ведь если будет хотя бы четыре человека, то работа будет идти гораздо быстрее. »
Согласен :)
#include <GUIConstantsEx.au3>
;Задаем наш GUI
$hGUI = GUICreate("1.0", 420, 300)
GuiCtrlCreateTab(10, 0, 400, 260)
GuiCtrlCreateTabItem("main")
GuiCtrlCreateLabel("Number", 20, 40)
; UPDOWN
$A1=GuiCtrlCreateInput("5", 100, 35, 40, 20)
GuiCtrlCreateUpDown(-1)
$YesID = GUICtrlCreateButton("Start", 10, 260, 100, 30)
$ExitID = GUICtrlCreateButton("Exit", 290, 260, 100, 30)
GUISetState(@SW_SHOW, $hGUI) ;Отображаем GUI
;Запускаем цикл для обработrи событий
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ExitID
Exit
Case $YesID
$A2=GUICtrlRead($A1)
MsgBox(0,1," "& $A2 &" ",2)
EndSwitch
WEnd
Извиняюсь что не в цвете(программы под рукой нету)
Собственно этот скрипт ДОЛЖЕН работать но обработка событий не работает
Думал сначала просто переводить. А потом плюнул. Влом как-то стало. »
И мои попытки тем же окончились...
Sylver Dragon, Medic84, по поводу перевода справки, все сюда (http://forum.oszone.net/post-1153805.html) :)
ты попробуй значение сменить. Если изменить на 4, то все равно выводит 5! »
И? Там же GUICtrlRead() читается один раз и в начале, оно и логично.
И? Там же GUICtrlRead() читается один раз и в начале, оно и логично. »
Значит все прекрасно работает :)
А мои попытки перестроить ее не увенчаличь успехом :(
думаешь сам начать? или открыть ветку и собирать переводы »
См. ранние посты.
Перечитал все, но так и не понял, где ошибка, не затруднит ли кого нить в кратце изложить ответ на мой вопрос? Ну никак без помощи не получаеться.
FlatX007
28-06-2009, 21:13
Значение в переменую $A2 записывается до того как оно было изменено.
т.е. при отрисовке GUI окна в переменную $A2 записыватеся значение 5 которое считывает функция GUICtrlRead($A1) из поля Инпут.
Перечитал все, но так и не понял, где ошибка, не затруднит ли кого нить в кратце изложить ответ на мой вопрос? Ну никак без помощи не получаеться. »
И так....
Задача: После нажатия на кнопку "Start":
1. Прочитать данные из "GuiCtrlCreateInput"
2. Вывести результат в "MsgBox".
Идентификатор (указатель) на "GuiCtrlCreateInput": "$A1"
Соообщение "MsgBox" выводится в функции: "Start"
Алгоритм действий пользователя, на примере твоего скрипта:
1. После нажатия кнопки "Start" - вызывается функция "Start"
2. Вызванная функция "Start" выводит "MsgBox" сообщение, которое отображает текст, которые содержится в переменной "$A2"
Вопрос 1: Как и когда поподает текст в переменную "$A2" ?
Ответ: В примере твоего кода, в переменную "$A2" текст записывается один-единственный раз, сразу после создания "GuiCtrlCreateInput":
...........
; TAB
GuiCtrlCreateTab(10, 0, 400, 260)
GuiCtrlCreateTabItem("main")
GuiCtrlCreateLabel("Number", 20, 40)
; UPDOWN
$A1=GuiCtrlCreateInput("5", 100, 35, 40, 20)
GuiCtrlCreateUpDown(-1)
$A2=GUICtrlRead($A1)
$YesID = GUICtrlCreateButton("Start", 10, 260, 100, 30)
GUICtrlSetOnEvent($YesID, "Start")
...........
Вопрос 2: Следуя поставленной задаче, почему в твоем скрипте не выполняется пункт № 1?
Что нужно сделать, что бы было правильно: При каждом вызове функции "Start" считывать данные из "GuiCtrlCreateInput" и записывать результат в переменную "$A2".
Теперь понял суть?
Сможешь сам исправить свой скрипт (http://forum.oszone.net/post-1153760-3.html)?
Огромное спасибо. Сча буду исправлять ошибки.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.