Что нового

[Элементы GUI] Не получается сделать полосу прокрутки

fortages

Новичок
Сообщения
81
Репутация
3
Здравствуйте!
Помогите пожалуйста сделать полосу прокрутки.

Нужно сделать что-то вроде карты здания, нажал на кнопку "этаж 1" - открылась карта первого этажа, нажал на кнопку "этаж 2" - открылась карта второго этажа и т.д.
Открытие информации по кнопке "этаж №Х" открывает еще одну такую же форму, только уже с кнопками "кабинет 1", "кабинет 2" и т.д. Кабинетов слишком много и из-за этого нужна полоса прокрутки. А вот сделать ее не могу.

abba977c4968.png


К первому варианту не получилось добавить элемент прокрутки, а во втором варианте, если использовать GUICtrlCreateEdit, то не работает клик по кнопкам и сами полосы прокрутки.

Если в первом варианте нажать на кнопку 1, то тестовое сообщение появляется, во втором варианте - не выходит.
Вот код:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("План помещений", 503, 420, 241, 122)
$Group1 = GUICtrlCreateGroup("Group1", 80, 24, 169, 345)
$Button1 = GUICtrlCreateButton("этаж 1", 88, 56, 73, 25)
$Button2 = GUICtrlCreateButton("этаж 2", 88, 88, 73, 25)
$Button3 = GUICtrlCreateButton("этаж 3", 88, 120, 73, 25)
$Button4 = GUICtrlCreateButton("этаж 4", 88, 152, 73, 25)
$Button5 = GUICtrlCreateButton("этаж 5", 88, 184, 73, 25)
$Button6 = GUICtrlCreateButton("этаж 6", 88, 216, 73, 25)
$Button7 = GUICtrlCreateButton("этаж 7", 88, 248, 73, 25)
$Button8 = GUICtrlCreateButton("этаж 8", 88, 280, 73, 25)
$Button9 = GUICtrlCreateButton("этаж 9", 88, 312, 73, 25)

GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateEdit("", 296, 32, 169, 345)
$Button10 = GUICtrlCreateButton("этаж 1", 312, 40, 75, 25)
$Button11 = GUICtrlCreateButton("этаж 2", 312, 72, 75, 25)
$Button12 = GUICtrlCreateButton("этаж 3", 312, 104, 75, 25)
$Button13 = GUICtrlCreateButton("этаж 4", 312, 136, 75, 25)
$Button14 = GUICtrlCreateButton("этаж 5", 312, 168, 75, 25)
$Button15 = GUICtrlCreateButton("этаж 6", 312, 200, 75, 25)
$Button16 = GUICtrlCreateButton("этаж 7", 312, 232, 75, 25)
$Button17 = GUICtrlCreateButton("этаж 8", 312, 264, 75, 25)
$Button18 = GUICtrlCreateButton("этаж 9", 312, 296, 75, 25)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			MsgBox('0','test', 'проверка кнопки в первом варианте')
		Case $Button10
			MsgBox('0','test', 'проверка кнопки во втором варианте')
	EndSwitch
WEnd

Подскажите, пожалуйста, как сделать правильно?
 

InnI

AutoIT Гуру
Сообщения
4,958
Репутация
1,448
Scroll UDF. Much easier than the _GUIScrollBars UDF.

Код:
#include <GUIConstantsEx.au3>
#include <GUIScroll.au3>

$Form1 = GUICreate("План помещений", 250, 200)
$Button1 = GUICtrlCreateButton("этаж 1", 88, 56, 73, 25)
$Button2 = GUICtrlCreateButton("этаж 2", 88, 88, 73, 25)
$Button3 = GUICtrlCreateButton("этаж 3", 88, 120, 73, 25)
$Button4 = GUICtrlCreateButton("этаж 4", 88, 152, 73, 25)
$Button5 = GUICtrlCreateButton("этаж 5", 88, 184, 73, 25)
$Button6 = GUICtrlCreateButton("этаж 6", 88, 216, 73, 25)
$Button7 = GUICtrlCreateButton("этаж 7", 88, 248, 73, 25)
$Button8 = GUICtrlCreateButton("этаж 8", 88, 280, 73, 25)
$Button9 = GUICtrlCreateButton("этаж 9", 88, 312, 73, 25)

Scrollbar_Create($Form1, $SB_VERT, 400)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            MsgBox('0','test', 'проверка кнопки в первом варианте')
    EndSwitch
WEnd
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
может, не обязательно кнопки
Код:
#include <GUIConstantsEx.au3>
$Form1 = GUICreate("Form1", 615, 438, 483, 202)
$TreeView1 = GUICtrlCreateTreeView(8, 8, 273, 417)
$label = GUICtrlCreateLabel('', 300, 8, 200, 20)
Local $array[51]
For $i = 1 To 50
	$array[$i] = 'Схема этажа ' & $i
	GUICtrlCreateTreeViewItem('Этаж ' & $i, $TreeView1)
Next

GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case 5 To 54
			GUICtrlSetData($label, $array[$nMsg - 4])
	EndSwitch
WEnd
и с прокруткой сразу решаем проблему. можно использовать
Код:
GUICtrlCreateListView
 
Автор
fortages

fortages

Новичок
Сообщения
81
Репутация
3
InnI спасибо огромное! Все заработало, только путь к include не знаю, поэтому указала просто путь к диску D:\, на который GUIScroll.au3 и скачан. :smile:

joiner какая интересная идея, спасибо!
А можно вместо массива и цикла
Код:
Local $array[51]
For $i = 1 To 50
    $array[$i] = 'Схема этажа ' & $i
    GUICtrlCreateTreeViewItem('Этаж ' & $i, $TreeView1)
Next

названия этих элементов указать вручную? Т.к. там надо "Кабинет 203. Бухгалтер Иванова И.И", "Кабинет 204. Менеджер продаж Петров С.В." и т.д.

В свободном месте, где "Схема этажа" можно же будет встроить картинку и видео? (Задумали видео для наглядности и свистелок, а фото это уже именно технический план)


P.S. Огромное спасибо! :smile: :IL_AutoIt_1:
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
можно сделать все . это только пример. а дальше твоя фантазия
 
Автор
fortages

fortages

Новичок
Сообщения
81
Репутация
3
Спасибо за идею. :smile:
Почему кнопка "лучший ответ" только одна? Обе ответа классные и помогли очень! :beer:

Огромное спасибо!
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Я бы наверное сделал это всё через HTML + JS, там и с прокруткой сразу дело решается, и фотографии легко вставлять, вот насчёт видео неуверен, но думаю как-нибудь тоже можно будет вставить...
 
Верх