|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Вызов одной формы из другой |
|
[решено] Вызов одной формы из другой
|
Старожил Сообщения: 156 |
Профиль | Отправить PM | Цитировать Всем привет! Следующий вопрос - как вызвать одну форму из другой, чтобы обе формы взаимно видели элементы друг друга. Я думал, чтобы не загромождать код двумя формами, разделить его и вызывать по необходимости. Дошел только до #include одного скрипта в другой. Думал, будет как по аналогии с бейсиком - форма1.Поле1=Форма2.Поле1... ну как то так, давно это было... Или это не возможно в принципе?
|
|
Отправлено: 13:03, 08-09-2013 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата eus_deus:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $hForm1 = GUICreate('Form1', 300, 200, 100, 100) $hForm2 = GUICreate('Form2', 300, 200, 450, 100) $aForm1_Elements = _FormElements($hForm1) $aForm2_Elements = _FormElements($hForm2) GUISetState(@SW_SHOW, $hForm1) GUISetState(@SW_SHOW, $hForm2) While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE Exit Case $aForm1_Elements[1] To $aForm1_Elements[$aForm1_Elements[0]] MsgBox(64, 'Event', 'Event from element (' & GUICtrlRead($iMsg, 1) & ') in form 1', 0, $hForm1) Case $aForm2_Elements[1] To $aForm2_Elements[$aForm2_Elements[0]] MsgBox(64, 'Event', 'Event from element (' & GUICtrlRead($iMsg, 1) & ') in form 2', 0, $hForm2) EndSwitch WEnd Func _FormElements($hForm) GUISwitch($hForm) Local $aRet[3] = [2] $aRet[1] = GUICtrlCreateButton('Button1', 20, 20, 60, 20) $aRet[2] = GUICtrlCreateButton('Button2', 20, 40, 60, 20) Return $aRet EndFunc |
|
------- Отправлено: 21:55, 08-09-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать Creat0R, общую суть вроде уловил. попробую переделать код. надо, чтобы второе окно появлялось по необходимости при нажатии на кнопку
|
Отправлено: 22:00, 08-09-2013 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата eus_deus:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $hForm1 = GUICreate('Form1', 300, 200, 100, 100) $iShowForm2_Bttn = GUICtrlCreateButton('Show Form2', 20, 170, 90, 20) $aForm1_Elements = _FormElements($hForm1) $hForm2 = GUICreate('Form2', 300, 200, 450, 100) $aForm2_Elements = _FormElements($hForm2) GUISetState(@SW_SHOW, $hForm1) While 1 $aMsg = GUIGetMsg(1) Switch $aMsg[0] Case $GUI_EVENT_CLOSE If $aMsg[1] = $hForm1 Then Exit Else ContinueCase ;To trigger next state EndIf Case $iShowForm2_Bttn If GUICtrlRead($iShowForm2_Bttn) = 'Show Form2' Then GUICtrlSetData($iShowForm2_Bttn, 'Hide Form2') GUISetState(@SW_SHOW, $hForm2) Else GUICtrlSetData($iShowForm2_Bttn, 'Show Form2') GUISetState(@SW_HIDE, $hForm2) EndIf Case $aForm1_Elements[1] To $aForm1_Elements[$aForm1_Elements[0]] MsgBox(64, 'Event', 'Event from element (' & GUICtrlRead($aMsg[0], 1) & ') in form 1', 0, $hForm1) Case $aForm2_Elements[1] To $aForm2_Elements[$aForm2_Elements[0]] MsgBox(64, 'Event', 'Event from element (' & GUICtrlRead($aMsg[0], 1) & ') in form 2', 0, $hForm2) EndSwitch WEnd Func _FormElements($hForm) GUISwitch($hForm) Local $aRet[3] = [2] $aRet[1] = GUICtrlCreateButton('Button1', 20, 20, 60, 20) $aRet[2] = GUICtrlCreateButton('Button2', 20, 40, 60, 20) Return $aRet EndFunc |
|
------- Отправлено: 22:45, 08-09-2013 | #4 |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать Creat0R, ну ты прямо бог autoit'a. Добей меня уже тогда - а если нужны разные контролы на форме, то как их прописать в функцию Func _FormElements($hForm)? Назначение формы - форма настройки. Вроде не нужна на экране постоянно, но в то же время ее наличие необходимо
|
|
Отправлено: 22:52, 08-09-2013 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата eus_deus:
Ты определись что тебе нужно, в первом сообщении спрашивается о синхронизации элементов в разных формах, теперь уже речь идёт о другом. Может лучше опишешь задачу, чтобы был понятен конечный результат? |
|
------- Отправлено: 23:54, 08-09-2013 | #6 |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать Цитата eus_deus:
|
|
Отправлено: 12:00, 09-09-2013 | #7 |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать в принципе вопрос решен. мне нужно было только понятие того, что весь код будет в одном модуле, а не в разных, как я это строил. помог код для кнопки
дело за малым - как при закрытии второй формы по крестику, не закрывать первую? |
Отправлено: 12:17, 09-09-2013 | #8 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата eus_deus:
|
|
------- Отправлено: 12:49, 09-09-2013 | #9 |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать Creat0R, вопросов нет. по крайней мере, не в этой теме. Здесь вопрос решен
|
Отправлено: 13:09, 09-09-2013 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Копирование строк из одной файла в другой | Kamerad | Скриптовые языки администрирования Windows | 3 | 28-01-2013 09:59 | |
Чтение диска из одной ОС, в другой. | spider1973 | Хочу все знать | 7 | 07-01-2010 16:39 | |
DNS/DHCP - Доступ к определенному компьютеру в одной сети из другой | Dreamer_ | Сетевые технологии | 1 | 24-06-2009 20:17 | |
Доступ из одной сети к другой посредствам DSL модема. | stavskiys | Сетевые технологии | 4 | 17-12-2006 15:03 | |
2е ОС на 1м РС, ограничение в доступе к дискам из одной ОСхр к другой ОС2000... | bruno | Microsoft Windows 2000/XP | 4 | 03-10-2005 12:07 |
|