Size: a a a

2019 February 15

KS

Kot S in AutoIT RU
MrBlack, Ну во-первых, неправильно, что ты удаляешь контрол кнопки, тебе нужно просто прятать/показывать кнопку, это делается с помощью GUICtrlSetState($button, $GUI_HIDE) и GUICtrlSetState($button, $GUI_SHOW). Но кнопки почему-то не появляются, если менять размер GUI. Если сразу сделать его большим и не менять, то всё работает. Сейчас попробую разобраться ещё
источник

MM

MrBlack MrBlack in AutoIT RU
В этом и фишка что гуи будет слишком большой, если не менять размер
источник

KS

Kot S in AutoIT RU
Видимо ты поэтому и пересоздавал кнопку, потому что меняется контрол исходного GUI, да?
источник

MM

MrBlack MrBlack in AutoIT RU
Да
источник

MM

MrBlack MrBlack in AutoIT RU
Просто этих кнопок будет очень много
источник

MM

MrBlack MrBlack in AutoIT RU
но не на всех пользователях все кнопки будут нужны
источник

MM

MrBlack MrBlack in AutoIT RU
по этому я хочу и выстраивать размер гуи, в соответствии с необходимым кол-вом кнопок
источник

MM

MrBlack MrBlack in AutoIT RU
подгонять размер, под кол-во кнопок, вот
источник

MM

MrBlack MrBlack in AutoIT RU
можно было бы конечно через меню это сделать, но мне нужно выполнять пересчет кол-ва пунктов, при нажатии кнопки start
источник

KS

Kot S in AutoIT RU
MrBlack, в этому случае поможет установка определённого типа изменения размеров GUI. Просто добавь в начало скрипта Opt("GUIResizeMode", $GUI_DOCKALL)
источник

MM

MrBlack MrBlack in AutoIT RU
Понял, спасибо большое, сейчас проверю
источник

MM

MrBlack MrBlack in AutoIT RU
Не помогает что то
источник

MM

MrBlack MrBlack in AutoIT RU
Сделал вот так, все же
#include <WindowsConstants.au3>
#include <GuiConstants.au3>
#include <GUIConstantsEx.au3>

Local $sChek, $rand

$sGui = GUICreate("", 60, 30, 0, 0, $WS_POPUP +  $WS_BORDER, $WS_EX_TOPMOST)
$button0 = GUICtrlCreateButton('START', 0, 0, 60, 30, $BS_PUSHLIKE)
GUICtrlSetFont(-1,11,700)
$button1 = GUICtrlCreateButton('Кнопка1', 1, 1, 58, 30)
$button2 = GUICtrlCreateButton('Кнопка2', 1, 1, 58, 30)
$button3 = GUICtrlCreateButton('Кнопка3', 1, 1, 58, 30)
$button4 = GUICtrlCreateButton('Кнопка4', 1, 1, 58, 30)
$button5 = GUICtrlCreateButton('Кнопка5', 1, 1, 58, 30)

GUICtrlSetState($button1, $GUI_HIDE)
GUICtrlSetState($button2, $GUI_HIDE)
GUICtrlSetState($button3, $GUI_HIDE)
GUICtrlSetState($button4, $GUI_HIDE)
GUICtrlSetState($button5, $GUI_HIDE)

GUISetState()

While 1
 Switch GUIGetMsg()
   Case $button0
     _Request()
   Case $button1
     MsgBox(4096, 'Done', 'Кнопка1')
   Case $button2
     MsgBox(4096, 'Done', 'Кнопка2')
   Case $button3
     MsgBox(4096, 'Done', 'Кнопка3')
   Case $button4
     MsgBox(4096, 'Done', 'Кнопка4')
   Case $button5
     MsgBox(4096, 'Done', 'Кнопка5')
   Case $GUI_EVENT_CLOSE
     Exit
 EndSwitch
Wend

Func _Request()
 If $sChek = 0 Then
   ControlMove('','',$sGui,'','',62,360)
   $rand = Random(1, 5, 1)
   If $rand = 1 Then
     GUICtrlSetPos($button1, 1, 30)
     GUICtrlSetState($button1, $GUI_SHOW)
   EndIf
   If $rand = 2 Then
     GUICtrlSetPos($button2, 1, 60)
     GUICtrlSetState($button2, $GUI_SHOW)
   EndIf
   If $rand = 3 Then
     GUICtrlSetPos($button3, 1, 90)
     GUICtrlSetState($button3, $GUI_SHOW)
   EndIf
   If $rand = 4 Then
     GUICtrlSetPos($button4, 1, 120)
     GUICtrlSetState($button4, $GUI_SHOW)
   EndIf
   If $rand = 5 Then
     GUICtrlSetPos($button5, 1, 150)
     GUICtrlSetState($button5, $GUI_SHOW)
   EndIf
   $sChek = 1
 Else
   GUICtrlSetState($button1, $GUI_HIDE)
   GUICtrlSetState($button2, $GUI_HIDE)
   GUICtrlSetState($button3, $GUI_HIDE)
   GUICtrlSetState($button4, $GUI_HIDE)
   GUICtrlSetState($button5, $GUI_HIDE)
   ControlMove('','',$sGui,'','',62,32)
   $sChek = 0
 EndIf
EndFunc
источник

KS

Kot S in AutoIT RU
MrBlack MrBlack
Сделал вот так, все же
#include <WindowsConstants.au3>
#include <GuiConstants.au3>
#include <GUIConstantsEx.au3>

Local $sChek, $rand

$sGui = GUICreate("", 60, 30, 0, 0, $WS_POPUP +  $WS_BORDER, $WS_EX_TOPMOST)
$button0 = GUICtrlCreateButton('START', 0, 0, 60, 30, $BS_PUSHLIKE)
GUICtrlSetFont(-1,11,700)
$button1 = GUICtrlCreateButton('Кнопка1', 1, 1, 58, 30)
$button2 = GUICtrlCreateButton('Кнопка2', 1, 1, 58, 30)
$button3 = GUICtrlCreateButton('Кнопка3', 1, 1, 58, 30)
$button4 = GUICtrlCreateButton('Кнопка4', 1, 1, 58, 30)
$button5 = GUICtrlCreateButton('Кнопка5', 1, 1, 58, 30)

GUICtrlSetState($button1, $GUI_HIDE)
GUICtrlSetState($button2, $GUI_HIDE)
GUICtrlSetState($button3, $GUI_HIDE)
GUICtrlSetState($button4, $GUI_HIDE)
GUICtrlSetState($button5, $GUI_HIDE)

GUISetState()

While 1
 Switch GUIGetMsg()
   Case $button0
     _Request()
   Case $button1
     MsgBox(4096, 'Done', 'Кнопка1')
   Case $button2
     MsgBox(4096, 'Done', 'Кнопка2')
   Case $button3
     MsgBox(4096, 'Done', 'Кнопка3')
   Case $button4
     MsgBox(4096, 'Done', 'Кнопка4')
   Case $button5
     MsgBox(4096, 'Done', 'Кнопка5')
   Case $GUI_EVENT_CLOSE
     Exit
 EndSwitch
Wend

Func _Request()
 If $sChek = 0 Then
   ControlMove('','',$sGui,'','',62,360)
   $rand = Random(1, 5, 1)
   If $rand = 1 Then
     GUICtrlSetPos($button1, 1, 30)
     GUICtrlSetState($button1, $GUI_SHOW)
   EndIf
   If $rand = 2 Then
     GUICtrlSetPos($button2, 1, 60)
     GUICtrlSetState($button2, $GUI_SHOW)
   EndIf
   If $rand = 3 Then
     GUICtrlSetPos($button3, 1, 90)
     GUICtrlSetState($button3, $GUI_SHOW)
   EndIf
   If $rand = 4 Then
     GUICtrlSetPos($button4, 1, 120)
     GUICtrlSetState($button4, $GUI_SHOW)
   EndIf
   If $rand = 5 Then
     GUICtrlSetPos($button5, 1, 150)
     GUICtrlSetState($button5, $GUI_SHOW)
   EndIf
   $sChek = 1
 Else
   GUICtrlSetState($button1, $GUI_HIDE)
   GUICtrlSetState($button2, $GUI_HIDE)
   GUICtrlSetState($button3, $GUI_HIDE)
   GUICtrlSetState($button4, $GUI_HIDE)
   GUICtrlSetState($button5, $GUI_HIDE)
   ControlMove('','',$sGui,'','',62,32)
   $sChek = 0
 EndIf
EndFunc
Позже проверю
источник

KS

Kot S in AutoIT RU
Так а где Opt?
источник

KS

Kot S in AutoIT RU
Сразу после инклюдов вставь строку, что я написал выше
источник

MM

MrBlack MrBlack in AutoIT RU
с OPT и GUICtrlDelete не работало, я с другой стороны зашел, со скрытием
источник

Ra

Ruslan aka DUDE in AutoIT RU
MrBlack чтото я непонял
тебе нужно чтобы первый запуск выдавал разное окно в зависимости от какихто условий или перестравивалось на лету? например нажал кнопку и размер окна, расположение и количество кнопок изменилось?
источник

MM

MrBlack MrBlack in AutoIT RU
да, в первом примере так и было, но в "раскрывающемся списке", при нажатии кнопки под любым номером, срабатывала кнопка1
источник

MM

MrBlack MrBlack in AutoIT RU
мне надо чтобы в "раскрывающемся списке" было случайно кол-во кнопок и чтобы размер этого списка подстраивался под кол-во кнопок. Размеры списка и расположение в нем кнопок я планирую высчитать путем математических действий
источник