Что нового

Создание нового цикла для функционирования добавленной кнопки

Rinfes

Новичок
Сообщения
25
Репутация
0
Создается интерфейс, в котором 2 кнопки. При нажатии на вторую кнопку, в интерфейс добавляется новая. Не получается сделать так, чтобы работали все кнопки.
Код:
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <MsgBoxConstants.au3>

Global $hGUI_main, $iButton_1, $iButton_2, $iButton_3

$hGUI_main = GUICreate("AutoIt", 200, 50)
$iButton_1 = GUICtrlCreateButton("Button 1", 10, 10)
$iButton_2 = GUICtrlCreateButton("Button 2", 70, 10)

GUISetState()

While 1
   Switch GUIGetMsg()
	  Case $GUI_EVENT_CLOSE
		 ExitLoop
	  Case $iButton_1
		 MsgBox(0,"Button 1","Button 1")
	  Case $iButton_2
		 MsgBox(0, "Button 2", "Button 2")
		 Function()
   EndSwitch
WEnd

Func Function()
$iButton_3 = GUICtrlCreateButton("Button 3", 130, 10)
While 1
   Switch GUIGetMsg()
	  Case $iButton_3
		 MsgBox(0, "Button 3", "Button 3")
		 ExitLoop
	  EndSwitch
WEnd
EndFunc

Есть одно решение, в котором кнопка создается заранее, но с параметрами выключена и спрятана. Единственное ли это решение?
Код:
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <MsgBoxConstants.au3>

Global $hGUI_main, $iButton_1, $iButton_2, $iButton_3

$hGUI_main = GUICreate("AutoIt", 200, 50)
$iButton_1 = GUICtrlCreateButton("Button 1", 10, 10)
$iButton_2 = GUICtrlCreateButton("Button 2", 70, 10)
$iButton_3 = GUICtrlCreateButton("Button 3", 130, 10)
GUICtrlSetState( $iButton_3, $GUI_DISABLE + $GUI_HIDE)
GUISetState()

While 1
   Switch GUIGetMsg()
	  Case $GUI_EVENT_CLOSE
		 ExitLoop
	  Case $iButton_1
		 MsgBox(0,"Button 1","Button 1")
	  Case $iButton_2
		 MsgBox(0, "Button 2", "Button 2")
		 Function()
	  Case $iButton_3
		 MsgBox(0, "Button 3", "Button 3")
   EndSwitch
WEnd

Func Function()
GUICtrlSetState( $iButton_3, $GUI_ENABLE + $GUI_SHOW)
EndFunc
 
Автор
Rinfes

Rinfes

Новичок
Сообщения
25
Репутация
0
Хотелось бы сделать 1ый вариант рабочим. То есть создание и добавление кнопки в функции.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Rinfes
чтобы работали все кнопки
Код:
#include <GUIConstantsEx.au3>

Global $hGUI_main, $iButton_1, $iButton_2, $iButton_3 = -1

$hGUI_main = GUICreate("AutoIt", 200, 50)
$iButton_1 = GUICtrlCreateButton("Button 1", 10, 10)
$iButton_2 = GUICtrlCreateButton("Button 2", 70, 10)

GUISetState()

While 1
   Switch GUIGetMsg()
      Case $GUI_EVENT_CLOSE
         ExitLoop
      Case $iButton_1
         MsgBox(0,"Button 1","Button 1")
      Case $iButton_2
         MsgBox(0,"Button 2","Button 2")
         Function()
      Case $iButton_3
         MsgBox(0,"Button 3","Button 3")
   EndSwitch
WEnd

Func Function()
   If $iButton_3 < 0 Then $iButton_3 = GUICtrlCreateButton("Button 3", 130, 10)
EndFunc
Но фактически это тот же вариант со скрытой кнопкой, только "вид сбоку".
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Rinfes [?]
Есть одно решение, в котором кнопка создается заранее, но с параметрами выключена и спрятана. Единственное ли это решение?
зачастую это лучше, если место появления кнопки зафиксировано.
нет смысла писать дополнительные функции.
 
Верх