Что нового

Автоматический расчет координат повторяющихся GUI-элементов

fortages

Новичок
Сообщения
81
Репутация
3
Помогите с такой проблемой...
При использовании
Код:
GUICtrlCreateLabel() и GUICtrlCreateInput()
нужно указать координаты, где они находятся. Для одного такого раза это просто -
c80bc8eb4bfd.jpg
, но как быть, если таких полей должно быть хотя бы 20-25 штук? Пока подобрала циферки для
Код:
GUICtrlCreateLabel("Введите данные 2")
ушло минут 10. Можно ли их автоматически как-то разместить?

Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <File.au3>
#include <WinAPIEx.au3>
#include <GuiListView.au3>
#include <TreeviewConstants.au3>


				
					$taskerGUI = GUICreate("Планировщик", 600, 650)
					
					GUICtrlCreateLabel("Введите данные 1", 20, 13)
					GUICtrlCreateLabel("Имя 1", 20, 53)
					$Name_Input= GUICtrlCreateInput("", 100, 50, 150, 20)
					GUICtrlCreateLabel("Пароль 1", 20, 83)
					$Pass_Input = GUICtrlCreateInput("", 100, 80, 150, 20)
					$Cancel_Button = GUICtrlCreateButton("Список...", 100, 110, 80, 20)
					
					GUICtrlCreateLabel("Введите данные 2",20, 160, 170)
					
					GUISetState(@SW_SHOW, $taskerGUI)
					While 1
								Switch GUIGetMsg()
						Case $GUI_EVENT_CLOSE
							 Exit
						Case $Cancel_Button
							 Exit
						Case $TNext_Button
							;blablabla	
							EndSwitch
							Wend
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
fortages
Для размещения нескольких элементов можно использовать
http://autoit-script.ru/index.php?topic=273.0

А так элементы создаются в цикле, их номера заносятся в массив:

Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <File.au3>
#include <WinAPIEx.au3>
#include <GuiListView.au3>
#include <TreeviewConstants.au3>

$taskerGUI = GUICreate("Планировщик", 300, 650)

;~ GUICtrlCreateLabel("Введите данные 1", 20, 13)
;~ GUICtrlCreateLabel("Имя 1", 20, 53)
;~ $Name_Input = GUICtrlCreateInput("", 100, 50, 150, 20)
;~ GUICtrlCreateLabel("Пароль 1", 20, 83)
;~ $Pass_Input = GUICtrlCreateInput("", 100, 80, 150, 20)
;~ $Cancel_Button = GUICtrlCreateButton("Список...", 100, 110, 80, 20)

Local $aGUICtrl[5][3]

For $i = 1 To UBound($aGUICtrl) - 1
	GUICtrlCreateLabel("Введите данные " & $i, 20, 13 + (160 * ($i - 1)))
	GUICtrlCreateLabel("Имя " & $i, 20, 53 + (160 * ($i - 1)))
	GUICtrlCreateLabel("Пароль " & $i, 20, 83 + (160 * ($i - 1)))
	$aGUICtrl[$i][0] = GUICtrlCreateInput("", 100, 50 + (160 * ($i - 1)), 150, 20)
	$aGUICtrl[$i][1] = GUICtrlCreateInput("", 100, 80 + (160 * ($i - 1)), 150, 20)
	$aGUICtrl[$i][2] = GUICtrlCreateButton("Список...", 100, 110 + (160 * ($i - 1)), 80, 20)
Next


GUISetState(@SW_SHOW, $taskerGUI)

While 1
	Local $nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $aGUICtrl[1][2] To $aGUICtrl[UBound($aGUICtrl) - 1][2]
			For $i = 0 To UBound($aGUICtrl) - 1
				If $nMsg = $aGUICtrl[$i][2] Then
					MsgBox(0, 'Заголовок', GUICtrlRead($aGUICtrl[$i][0]) & @CRLF & GUICtrlRead($aGUICtrl[$i][1]))
					ExitLoop
				EndIf
			Next
	EndSwitch
WEnd
 
Автор
fortages

fortages

Новичок
Сообщения
81
Репутация
3
Огромнейшее спасибо!! :beer: Не знала про Koda FormDesigner... Это оказывается такая крутая вещь)) Очень удобно. И за примерчик спасибо, буду разбираться. :reading_book: Спасибо, WSWR, очень помогли! :smile:
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
WSWR
а как добавить полосу прокрутки к окну, если все элементы не влазят?
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
inververs
$WS_VSCROLL и $WS_HSCROLL, если не ошибаюсь
 
Верх