Что нового

[Элементы GUI] Работа со значениями элементов

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
создал окно с элементами ввода данных.
есть элемент GUICtrlCreateEdit для ввода сообщения и три элемента GUICtrlCreateCombo.
в них выбирается размер шрифта, жирность, и сам шрифт. как сделать чтобы при выборе определенного значения в GUICtrlCreateCombo это значение присваилось соответствующему значению в GUICtrlSetFont. то есть изначально пишешь
Код:
GUICtrlSetFont(-1, $SIZE,$FATF, 0, $FONT)

а значения переменных берутся из выбранных значений в GUICtrlCreateCombo и применяются..
и еще вопрос: как одним кликом по GUICtrlCreateButton копировать значение из GUICtrlCreateInput и вставить в GUICtrlCreateEdit
перед тем как спросить сильно курил справку... но видимо от курения в мозгу замкнуло. :smile:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 542
Репутация
327
Я пока направлю на путь истинный ;)

1.Создать цикл проверки значений 3-х элементов GUICtrlCreateCombo. Если значение было изменено, то устанавливать новое.
2.По второму вопросу: Используй
Код:
GUICtrlRead()

Код:
GuiCtrlSetData()
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
так и было с путем истинным. сначала я использовал эти функции, а когда не получилось, то написал здесь. ;)
с чтением из строк ввода я знаком. и уже знаком с назначением значения (каламбур)
но нет результата. я так понял что при запуске скрипт берет первое значение а потом не может обновить значение , когда я выбираю другое. вот в чем вопрос.
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Александр сказал(а):
я так понял что при запуске скрипт берет первое значение а потом не может обновить значение , когда я выбираю другое. вот в чем вопрос.
Приведи пример проблемного скрипта
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
вот этот скрипт
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$GO_MESSAGE = GUICreate("ОТПРАВКА СООБЩЕНИЙ", 943, 579, -1, -1)
$LOGIN = GUICtrlCreateInput("Логин", 64, 24, 121, 21)
GUICtrlSetColor(-1, 0x000080)
$PASSWORD = GUICtrlCreateInput("Пароль", 64, 80, 121, 21)
GUICtrlSetColor(-1, 0x000080)
$ADRESS = GUICtrlCreateCombo("http//:", 1, 200, 361, 25)
$Label3 = GUICtrlCreateLabel("ССЫЛКА НА ТЕМУ", 8, 176, 102, 17)
GUICtrlSetColor(-1, 0x000080)
$Label5 = GUICtrlCreateLabel("ПАРОЛЬ", 8, 88, 49, 17)
GUICtrlSetColor(-1, 0xFF0000)
$Label4 = GUICtrlCreateLabel("ЛОГИН", 8, 32, 50, 17)
GUICtrlSetColor(-1, 0xFF0000)
$Label1 = GUICtrlCreateLabel("СООБЩЕНИЕ", 16, 232, 74, 17)
GUICtrlSetColor(-1, 0x000080)
$GO = GUICtrlCreateButton("ОТВЕТИТЬ", 784, 544, 107, 25, $WS_GROUP)
$NEW_ADRES_TEMA = GUICtrlCreateInput("http//:", 368, 200, 409, 21)
$Label2 = GUICtrlCreateLabel("ДОБАВИТЬ ТЕМУ", 376, 176, 106, 17)
GUICtrlSetColor(-1, 0x004E98)
$INSERT_NEW_TEMA = GUICtrlCreateButton("ДОБАВИТЬ", 680, 168, 91, 25, $WS_GROUP)
$FONT = GUICtrlCreateCombo("Arial", 792, 360, 121, 25)
GUICtrlSetData(-1,"Arial Bold|MS Sans Serif|Arial Bold Italic|Arial Italic|Courier|Courier New|Courier New Bold Italic|Lucida Console|MS Sans Serif|Tahoma|Times New Roman|Times New Roman Bold Italic")
$Label7 = GUICtrlCreateLabel("Шрифт", 792, 336, 38, 17)
$SIZEFONT = GUICtrlCreateCombo("8.5", 792, 424, 121, 25)
GUICtrlSetData(-1, "9|10|11|12|13|14|15|16|17|18|19|20|")
$Label8 = GUICtrlCreateLabel("Размер шрифта", 792, 400, 85, 17)
$FATFONT = GUICtrlCreateCombo("400", 792, 488, 121, 25)
GUICtrlSetData(-1,"500|600|700|800|900|1000")
$Label9 = GUICtrlCreateLabel("Жирный шрифта", 792, 464, 98, 17)
$NEW_LOG = GUICtrlCreateButton("СОЗДАТЬ ЛОГ", 816, 16, 99, 25, $WS_GROUP)
$DELLOG = GUICtrlCreateButton("УДАЛИТЬ ЛОГ", 816, 72, 99, 25, $WS_GROUP)
$EDITLOG = GUICtrlCreateButton("РЕДАКТИРОВАТЬ ЛОГ", 784, 128, 131, 25, $WS_GROUP)
$ADRES_IN_MESSAGE = GUICtrlCreateInput("http//:", 1, 136, 361, 21)
$Label10 = GUICtrlCreateLabel("Добавить ссылку в сообщение", 8, 112, 163, 17)
$ADRES_INSERT_MESAGE = GUICtrlCreateButton("ДОБАВИТЬ", 272, 104, 83, 25, $WS_GROUP)
$MESSAGE = GUICtrlCreateEdit("Введи не менее 10 символов!", 1, 256, 777, 321)
GUICtrlSetFont(-1, 9,$FATF, 0, $F)


GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
				EndSwitch
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Код:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $FONT, $SIZEFONT, $FATFONT
			GUICtrlSetFont($MESSAGE, GUICtrlRead($SIZEFONT), GUICtrlRead($FATFONT), 0, GUICtrlRead($FONT))
	EndSwitch
WEnd
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
нечто подобное уже пробовал. клинит весь скрипт.. нет окна. в трее висит значок. если вовремя не отрубить, то вешает систему ( у меня ХР) .
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Александр сказал(а):
нечто подобное уже пробовал. клинит весь скрипт.. нет окна. в трее висит значок. если вовремя не отрубить, то вешает систему ( у меня ХР) .
:Virus:

Как вешает?!? Вот твой скрипт, все работает.

Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $SIZEFONT, $FATFONT, $FONT, $url = "[URL=http://", $urlend = "]", $urlend = "[/URL]", $SF, $FATF, $F

$GO_MESSAGE = GUICreate("ОТПРАВКА СООБЩЕНИЙ", 943, 579, -1, -1)
$LOGIN = GUICtrlCreateInput("Логин", 64, 24, 121, 21)
GUICtrlSetColor(-1, 0x000080)
$PASSWORD = GUICtrlCreateInput("Пароль", 64, 80, 121, 21)
GUICtrlSetColor(-1, 0x000080)
$ADRESS = GUICtrlCreateCombo("http//:", 1, 200, 361, 25)
$Label3 = GUICtrlCreateLabel("ССЫЛКА НА ТЕМУ", 8, 176, 102, 17)
GUICtrlSetColor(-1, 0x000080)
$Label5 = GUICtrlCreateLabel("ПАРОЛЬ", 8, 88, 49, 17)
GUICtrlSetColor(-1, 0xFF0000)
$Label4 = GUICtrlCreateLabel("ЛОГИН", 8, 32, 50, 17)
GUICtrlSetColor(-1, 0xFF0000)
$Label1 = GUICtrlCreateLabel("СООБЩЕНИЕ", 16, 232, 74, 17)
GUICtrlSetColor(-1, 0x000080)
$GO = GUICtrlCreateButton("ОТВЕТИТЬ", 784, 544, 107, 25, $WS_GROUP)
$NEW_ADRES_TEMA = GUICtrlCreateInput("http//:", 368, 200, 409, 21)
$Label2 = GUICtrlCreateLabel("ДОБАВИТЬ ТЕМУ", 376, 176, 106, 17)
GUICtrlSetColor(-1, 0x004E98)
$INSERT_NEW_TEMA = GUICtrlCreateButton("ДОБАВИТЬ", 680, 168, 91, 25, $WS_GROUP)
$FONT = GUICtrlCreateCombo("Arial", 792, 360, 121, 25)
GUICtrlSetData(-1, "Arial Bold|MS Sans Serif|Arial Bold Italic|Arial Italic|Courier|Courier New|Courier New Bold Italic|Lucida Console|MS Sans Serif|Tahoma|Times New Roman|Times New Roman Bold Italic")
$Label7 = GUICtrlCreateLabel("Шрифт", 792, 336, 38, 17)
$SIZEFONT = GUICtrlCreateCombo("8.5", 792, 424, 121, 25)
GUICtrlSetData(-1, "9|10|11|12|13|14|15|16|17|18|19|20|")
$Label8 = GUICtrlCreateLabel("Размер шрифта", 792, 400, 85, 17)
$FATFONT = GUICtrlCreateCombo("400", 792, 488, 121, 25)
GUICtrlSetData(-1, "500|600|700|800|900|1000")
$Label9 = GUICtrlCreateLabel("Жирный шрифта", 792, 464, 98, 17)
$NEW_LOG = GUICtrlCreateButton("СОЗДАТЬ ЛОГ", 816, 16, 99, 25, $WS_GROUP)
$DELLOG = GUICtrlCreateButton("УДАЛИТЬ ЛОГ", 816, 72, 99, 25, $WS_GROUP)
$EDITLOG = GUICtrlCreateButton("РЕДАКТИРОВАТЬ ЛОГ", 784, 128, 131, 25, $WS_GROUP)
$ADRES_IN_MESSAGE = GUICtrlCreateInput("http//:", 1, 136, 361, 21)
$Label10 = GUICtrlCreateLabel("Добавить ссылку в сообщение", 8, 112, 163, 17)
$ADRES_INSERT_MESAGE = GUICtrlCreateButton("ДОБАВИТЬ", 272, 104, 83, 25, $WS_GROUP)
$MESSAGE = GUICtrlCreateEdit("Введи не менее 10 символов!", 1, 256, 777, 321)
;GUICtrlSetFont(-1, 9, $FATF, 0, $F)


GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $FONT, $SIZEFONT, $FATFONT
			GUICtrlSetFont($MESSAGE, GUICtrlRead($SIZEFONT), GUICtrlRead($FATFONT), 0, GUICtrlRead($FONT))
	EndSwitch
WEnd
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
Yashied спасибо...
осталось еще одно :
как одним кликом по GUICtrlCreateButton копировать значение из GUICtrlCreateInput и вставить в GUICtrlCreateEdit
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Александр сказал(а):
Yashied спасибо...
осталось еще одно :
как одним кликом по GUICtrlCreateButton копировать значение из GUICtrlCreateInput и вставить в GUICtrlCreateEdit
Код:
#Include <GUIConstantsEx.au3>

GUICreate('MyGUI', 400, 300)
$Input = GUICtrlCreateInput('', 20, 20, 284, 21)
$Button = GUICtrlCreateButton('Вставить', 310, 19, 70, 23)
$Edit = GUICtrlCreateEdit('', 20, 60, 360, 220)
GUISetState()

While 1
	$Msg = GUIGetMsg()
	Switch $Msg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button
			GUICtrlSetData($Edit, GUICtrlRead($Input), 1)
	EndSwitch
WEnd
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
все получилось.. делал то же самое только не правильно в скрипте располагал ... спасибо за помощь

можно ли сделать чтобы не весь шрифт менялся а только выделеный? это по размеру и прочим параметрам?
прошу прощения за наглость
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Александр сказал(а):
...можно ли сделать чтобы не весь шрифт менялся а только выделеный?
С GUICtrlCreateEdit() нельзя.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 542
Репутация
327
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
создал окно GUICreate в нем есть элемент GUICtrlCreateEdit есть кнопка, которая вызывает еще одно окно GUICtrlCreateEdit, в которое я ввожу данные и жму ок. происходит передача данных в предыдущее окно а второе окно исчезает. вроде бы все нормально, но после этого в основном окне все элементы не работают, то есть весь функционал что на них навешан, а точнее остальные кнопки с функциями.. как сделать чтобы такого не происходило.. была передача значения , но и сохранялось функциональность первого окна..
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Александр сказал(а):
создал окно GUICreate в нем есть элемент GUICtrlCreateEdit есть кнопка, которая вызывает еще одно окно GUICtrlCreateEdit, в которое я ввожу данные и жму ок. происходит передача данных в предыдущее окно а второе окно исчезает. вроде бы все нормально, но после этого в основном окне все элементы не работают, то есть весь функционал что на них навешан, а точнее остальные кнопки с функциями.. как сделать чтобы такого не происходило.. была передача значения , но и сохранялось функциональность первого окна..
И где твой пример, который так плохо ведет себя?
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
вот простой пример
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


$Form = GUICreate("Form1", 633, 447, 335, 166)
$Edit = GUICtrlCreateEdit("", 40, 80, 561, 129)
GUICtrlSetData(-1, "Edit1")
$Button11 = GUICtrlCreateButton("Button1", 104, 240, 75, 25, $WS_GROUP)
$Button22 = GUICtrlCreateButton("Button2", 456, 248, 75, 25, $WS_GROUP)
$Button33 = GUICtrlCreateButton("Button3", 96, 328, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button11
_edit()
Case $Button22
	Exit
Case $Button33
	Exit
	EndSwitch
WEnd


Func _edit()
$Form1 = GUICreate("Form1", 416, 242, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 96, 40, 185, 89)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("Button1", 128, 176, 155, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			GUICtrlSetData($Edit, GUICtrlRead($Edit1), 1)
			GUIDelete()
	EndSwitch
WEnd
EndFunc

Добавлено:
Сообщение автоматически объединено:

можно то можно, но как? в предложенном коде можно показать реализацию?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Ты забыл поставить Return.

Код:
Func _edit()
	$Form1 = GUICreate('Form1', 416, 242, 192, 124)
	$Edit1 = GUICtrlCreateEdit('', 96, 40, 185, 89)
	GUICtrlSetData(-1, 'Edit1')
	$Button1 = GUICtrlCreateButton('Button1', 128, 176, 155, 25)
	GUISetState(@SW_SHOW)

	While 1
		$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				Exit
			Case $Button1
				GUICtrlSetData($Edit, GUICtrlRead($Edit1), 1)
				GUIDelete()
				Return
		EndSwitch
	WEnd
EndFunc   ;==>_edit


Но лучше делать так (сравни).

Код:
Func _edit()
	GUISetState(@SW_DISABLE, $Form)
	$Form1 = GUICreate('Form1', 416, 242, 192, 124, -1, -1, $Form)
	$Edit1 = GUICtrlCreateEdit('', 96, 40, 185, 89)
	GUICtrlSetData(-1, 'Edit1')
	$Button1 = GUICtrlCreateButton('Button1', 128, 176, 155, 25)
	GUISetState(@SW_SHOW, $Form1)

	While 1
		$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $Button1
				GUICtrlSetData($Edit, GUICtrlRead($Edit1), 1)
				ExitLoop
		EndSwitch
	WEnd
	DllCall('user32.dll', 'int', 'SetActiveWindow', 'hwnd', $Form)
	GUIDelete($Form1)
	GUISetState(@SW_ENABLE, $Form)
EndFunc   ;==>_edit
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
спасибо. работают оба варианта.. но почему второй лучше? только потому что вызывается функция библиотеки системы?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Александр сказал(а):
спасибо. работают оба варианта.. но почему второй лучше? только потому что вызывается функция библиотеки системы?
Нет. Второй блокирует первое окно, и разблокирует, когда ты закрываешь второе. Я же написал сравни. Попробуй щелкни по первому окну. :smile:
 
Верх