Что нового

[Элементы GUI] Перемещение Edit и Checkbox одной полосой прокрутки

AvDA

Новичок
Сообщения
9
Репутация
0
Как одной полосой прокрутки (желательно расположеной в помеченном месте) переместить одновременно окно Edit и набор Checkbox вверх вниз, если окно уменьшить или не будет влезать на монитор? (строк может быть очень много и никакого монитора не хватит)
В поле Edit планируется заполнять строки, напротив каждой из строк должен быть свой Chekbox и перемещаться всгда строго напротив конкретной строки.
При этом, кнопки должны оставаться на своем месте.

Сейчас элементы не перемещаются даже появляющейся полосой прокрутки основного окна
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form_Main = GUICreate("Печать", 378, 576, 487, 109, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME,$WS_VSCROLL))
$Checkbox1 = GUICtrlCreateCheckbox("", 8, 10, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox2 = GUICtrlCreateCheckbox("", 8, 25, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox3 = GUICtrlCreateCheckbox("", 8, 40, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox4 = GUICtrlCreateCheckbox("", 8, 55, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox5 = GUICtrlCreateCheckbox("", 8, 70, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox6 = GUICtrlCreateCheckbox("", 8, 85, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox7 = GUICtrlCreateCheckbox("", 8, 100, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox8 = GUICtrlCreateCheckbox("", 8, 115, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox9 = GUICtrlCreateCheckbox("", 8, 130, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox10 = GUICtrlCreateCheckbox("", 8, 145, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox11 = GUICtrlCreateCheckbox("", 8, 160, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox12 = GUICtrlCreateCheckbox("", 8, 175, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox13 = GUICtrlCreateCheckbox("", 8, 190, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox14 = GUICtrlCreateCheckbox("", 8, 205, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox15 = GUICtrlCreateCheckbox("", 8, 220, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox16 = GUICtrlCreateCheckbox("", 8, 235, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox17 = GUICtrlCreateCheckbox("", 8, 250, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox18 = GUICtrlCreateCheckbox("", 8, 265, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox19 = GUICtrlCreateCheckbox("", 8, 280, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox20 = GUICtrlCreateCheckbox("", 8, 295, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox21 = GUICtrlCreateCheckbox("", 8, 310, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox22 = GUICtrlCreateCheckbox("", 8, 325, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox23 = GUICtrlCreateCheckbox("", 8, 340, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox24 = GUICtrlCreateCheckbox("", 8, 355, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox25 = GUICtrlCreateCheckbox("", 8, 370, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox26 = GUICtrlCreateCheckbox("", 8, 385, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox27 = GUICtrlCreateCheckbox("", 8, 400, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox28 = GUICtrlCreateCheckbox("", 8, 415, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox29 = GUICtrlCreateCheckbox("", 8, 430, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox30 = GUICtrlCreateCheckbox("", 8, 445, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox31 = GUICtrlCreateCheckbox("", 8, 460, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox32 = GUICtrlCreateCheckbox("", 8, 475, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox33 = GUICtrlCreateCheckbox("", 8, 490, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox34 = GUICtrlCreateCheckbox("", 8, 505, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox35 = GUICtrlCreateCheckbox("", 8, 520, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox36 = GUICtrlCreateCheckbox("", 8, 535, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Text = GUICtrlCreateEdit("", 22, 8, 177, 537, BitOR($ES_UPPERCASE,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 10, 400, 0, "Consolas")
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKHEIGHT)
$b_Print = GUICtrlCreateButton("Печать", 232, 120, 123, 57)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$Combo_ComPorts = GUICtrlCreateCombo("", 232, 80, 57, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_Open = GUICtrlCreateButton("Открыть", 232, 8, 123, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_Save = GUICtrlCreateButton("Сохранить", 232, 40, 123, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_reloadCOM = GUICtrlCreateButton("Обновить", 296, 80, 59, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
AvDA
Можно разместить Edit и набор Checkbox-ов на отдельном окне, поверх основного, а прокрутка будет перемещать это окно.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
WSWR
А можно пример, если не сложно. Я тоже хочу такое сделать, да никак не собирусь поискать)
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Немного не в тему... но может проще использовать ListView ?
Код:
#include <ListviewConstants.au3>
#include <WindowsConstants.au3>

$Form_Main = GUICreate("Печать", 378, 576, 487, 109, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME))
$ListView = GUICtrlCreateListView(" ", 22, 8, 177, 537, BitOR($GUI_SS_DEFAULT_LISTVIEW, $LVS_NOCOLUMNHEADER), BitOR($LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT))
GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 0, 160)
For $i = 0 To 100
  GUICtrlCreateListViewItem($i, $ListView)
Next
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit

    EndSwitch
WEnd
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Хочется сделать прокрутку для настроек, когда все не влазит, что бы не делать большое окно.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
AvDA
inververs

Как-то так:
Код:
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

#include <StructureConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>

$Form_Main = GUICreate('Печать', 400, 400, 10, 10, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME))


$b_Print = GUICtrlCreateButton('Печать', 232, 120, 123, 57)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$Combo_ComPorts = GUICtrlCreateCombo('', 232, 80, 57, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_Open = GUICtrlCreateButton('Открыть', 232, 8, 123, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_Save = GUICtrlCreateButton('Сохранить', 232, 40, 123, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_reloadCOM = GUICtrlCreateButton('Обновить', 296, 80, 59, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
GUISetState(@SW_SHOW)


$h_cGUI = GUICreate('Child GUI', 215, 600,10, 10, $WS_CHILD, BitOR($WS_EX_CLIENTEDGE, $WS_SIZEBOX), $Form_Main)

GUIRegisterMsg($WM_VSCROLL, 'WM_VSCROLL')

_GUIScrollBars_Init($h_cGUI)

#Region ### START Koda GUI section ### Form=
$Checkbox1 = GUICtrlCreateCheckbox('', 8, 10, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox2 = GUICtrlCreateCheckbox('', 8, 25, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox3 = GUICtrlCreateCheckbox('', 8, 40, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox4 = GUICtrlCreateCheckbox('', 8, 55, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox5 = GUICtrlCreateCheckbox('', 8, 70, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox6 = GUICtrlCreateCheckbox('', 8, 85, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox7 = GUICtrlCreateCheckbox('', 8, 100, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox8 = GUICtrlCreateCheckbox('', 8, 115, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox9 = GUICtrlCreateCheckbox('', 8, 130, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox10 = GUICtrlCreateCheckbox('', 8, 145, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox11 = GUICtrlCreateCheckbox('', 8, 160, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox12 = GUICtrlCreateCheckbox('', 8, 175, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox13 = GUICtrlCreateCheckbox('', 8, 190, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox14 = GUICtrlCreateCheckbox('', 8, 205, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox15 = GUICtrlCreateCheckbox('', 8, 220, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox16 = GUICtrlCreateCheckbox('', 8, 235, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox17 = GUICtrlCreateCheckbox('', 8, 250, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox18 = GUICtrlCreateCheckbox('', 8, 265, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox19 = GUICtrlCreateCheckbox('', 8, 280, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox20 = GUICtrlCreateCheckbox('', 8, 295, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox21 = GUICtrlCreateCheckbox('', 8, 310, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox22 = GUICtrlCreateCheckbox('', 8, 325, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox23 = GUICtrlCreateCheckbox('', 8, 340, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox24 = GUICtrlCreateCheckbox('', 8, 355, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox25 = GUICtrlCreateCheckbox('', 8, 370, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox26 = GUICtrlCreateCheckbox('', 8, 385, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox27 = GUICtrlCreateCheckbox('', 8, 400, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox28 = GUICtrlCreateCheckbox('', 8, 415, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox29 = GUICtrlCreateCheckbox('', 8, 430, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox30 = GUICtrlCreateCheckbox('', 8, 445, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox31 = GUICtrlCreateCheckbox('', 8, 460, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox32 = GUICtrlCreateCheckbox('', 8, 475, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox33 = GUICtrlCreateCheckbox('', 8, 490, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox34 = GUICtrlCreateCheckbox('', 8, 505, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox35 = GUICtrlCreateCheckbox('', 8, 520, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox36 = GUICtrlCreateCheckbox('', 8, 535, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Text = GUICtrlCreateEdit('', 22, 8, 157, 537, BitOR($ES_UPPERCASE,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, '')
GUICtrlSetFont(-1, 10, 400, 0, 'Consolas')
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKHEIGHT)

#EndRegion ### END Koda GUI section ###

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE           
            Exit
    EndSwitch   
WEnd

Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

    For $x = 0 To UBound($aSB_WindowInfo) - 1
        If $aSB_WindowInfo[$x][0] = $hWnd Then
            $index = $x
            $yChar = $aSB_WindowInfo[$index][3]
            ExitLoop
        EndIf
    Next
    If $index = -1 Then Return 0


    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, 'nMin')
    $Max = DllStructGetData($tSCROLLINFO, 'nMax')
    $Page = DllStructGetData($tSCROLLINFO, 'nPage')
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, 'nPos')
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, 'nTrackPos')

    Switch $nScrollCode
        Case $SB_TOP ; user clicked the HOME keyboard key
            DllStructSetData($tSCROLLINFO, 'nPos', $Min)

        Case $SB_BOTTOM ; user clicked the END keyboard key
            DllStructSetData($tSCROLLINFO, 'nPos', $Max)

        Case $SB_LINEUP ; user clicked the top arrow
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos - 1)

        Case $SB_LINEDOWN ; user clicked the bottom arrow
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos + 1)

        Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos - $Page)

        Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos + $Page)

        Case $SB_THUMBTRACK ; user dragged the scroll box
            DllStructSetData($tSCROLLINFO, 'nPos', $TrackPos)
    EndSwitch
    
;~    // Set the position and then retrieve it.  Due to adjustments
;~    //   by Windows it may not be the same as the value set.

    DllStructSetData($tSCROLLINFO, 'fMask', $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, 'nPos')

    If ($Pos <> $yPos) Then
        _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
        $yPos = $Pos
    EndIf

    Return $GUI_RUNDEFMSG

EndFunc   ;==>WM_VSCROLL
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
AvDA
А вот так создаются Checkbox
Код:
Global $aCheckbox[37]
For $i = 1 To 36
	$aCheckbox[1] = GUICtrlCreateCheckbox('', 8, $i * 15 - 5, 10, 17)
	GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKVCENTER + $GUI_DOCKHEIGHT)
Next

Или так


Добавлено:
Сообщение автоматически объединено:

AvDA
Вы пытаетесь использовать один и тот же стиль $WS_SIZEBOX и $WS_THICKFRAME.

Ещё попробовал использовать опцию GUIResizeMode для групп элементов и это хорошо работает, вот пример:

Код:
#include <WindowsConstants.au3>

$Form_Main = GUICreate('Измени размер окна', 40, 600, 10, 10, $WS_OVERLAPPEDWINDOW)

Global $aCheckbox[37]

Opt("GUIResizeMode", 2 + 32 + 256 + 512) ; лево-верх
For $i = 1 To 9
	$aCheckbox[1] = GUICtrlCreateCheckbox('', 8, $i * 15 - 5, 10, 17)
Next

Opt("GUIResizeMode", 2 + 64 + 256 + 512) ; лево-низ
For $i = 10 To 18
	$aCheckbox[1] = GUICtrlCreateCheckbox('', 8, $i * 15 - 5, 10, 17)
Next

Opt("GUIResizeMode", 4 + 32 + 256 + 512) ; право-верх
For $i = 19 To 27
	$aCheckbox[1] = GUICtrlCreateCheckbox('', 8, $i * 15 - 5, 10, 17)
Next

Opt("GUIResizeMode", 4 + 64 + 256 + 512) ; право-низ
For $i = 28 To 36
	$aCheckbox[1] = GUICtrlCreateCheckbox('', 8, $i * 15 - 5, 10, 17)
Next

Opt("GUIResizeMode") ; восстанавливаем стиль по умолчанию

GUISetState()
Do
Until GUIGetMsg() = -3
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
WSWR
что то не работает.
Может можно сделать так. Создаем форму с настройками, располагаем на ней все контролы, а потом эту форму размещаем на главной, придав ей соответствующие стили. Получится как бы окно в окне.?
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
inververs
Действительно, на Win 7 не работает - код писался на XP.

Можно тогда вместо прокрутки слайдер добавить и им двигать:
Код:
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>


$Form_Main = GUICreate('Печать', 400, 400, 10, 10, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME))
$slider1 = GUICtrlCreateSlider (190, 10, 30, 270, $TBS_VERT)
GUICtrlSetLimit(-1, 210, -25)


$b_Print = GUICtrlCreateButton('Печать', 232, 120, 123, 57)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$Combo_ComPorts = GUICtrlCreateCombo('', 232, 80, 57, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_Open = GUICtrlCreateButton('Открыть', 232, 8, 123, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_Save = GUICtrlCreateButton('Сохранить', 232, 40, 123, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_reloadCOM = GUICtrlCreateButton('Обновить', 296, 80, 59, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
GUISetState(@SW_SHOW)

$h_cGUI = GUICreate('Child GUI', 170, 600, 10, 25, $WS_CHILD, BitOR($WS_EX_CLIENTEDGE, $WS_SIZEBOX), $Form_Main)

#Region ### START Koda GUI section ### Form=
$Checkbox1 = GUICtrlCreateCheckbox('', 8, 10, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox2 = GUICtrlCreateCheckbox('', 8, 25, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox3 = GUICtrlCreateCheckbox('', 8, 40, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox4 = GUICtrlCreateCheckbox('', 8, 55, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox5 = GUICtrlCreateCheckbox('', 8, 70, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox6 = GUICtrlCreateCheckbox('', 8, 85, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox7 = GUICtrlCreateCheckbox('', 8, 100, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox8 = GUICtrlCreateCheckbox('', 8, 115, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox9 = GUICtrlCreateCheckbox('', 8, 130, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox10 = GUICtrlCreateCheckbox('', 8, 145, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox11 = GUICtrlCreateCheckbox('', 8, 160, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox12 = GUICtrlCreateCheckbox('', 8, 175, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox13 = GUICtrlCreateCheckbox('', 8, 190, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox14 = GUICtrlCreateCheckbox('', 8, 205, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox15 = GUICtrlCreateCheckbox('', 8, 220, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox16 = GUICtrlCreateCheckbox('', 8, 235, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox17 = GUICtrlCreateCheckbox('', 8, 250, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox18 = GUICtrlCreateCheckbox('', 8, 265, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox19 = GUICtrlCreateCheckbox('', 8, 280, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox20 = GUICtrlCreateCheckbox('', 8, 295, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox21 = GUICtrlCreateCheckbox('', 8, 310, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox22 = GUICtrlCreateCheckbox('', 8, 325, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox23 = GUICtrlCreateCheckbox('', 8, 340, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox24 = GUICtrlCreateCheckbox('', 8, 355, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox25 = GUICtrlCreateCheckbox('', 8, 370, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox26 = GUICtrlCreateCheckbox('', 8, 385, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox27 = GUICtrlCreateCheckbox('', 8, 400, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox28 = GUICtrlCreateCheckbox('', 8, 415, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox29 = GUICtrlCreateCheckbox('', 8, 430, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox30 = GUICtrlCreateCheckbox('', 8, 445, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox31 = GUICtrlCreateCheckbox('', 8, 460, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox32 = GUICtrlCreateCheckbox('', 8, 475, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox33 = GUICtrlCreateCheckbox('', 8, 490, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox34 = GUICtrlCreateCheckbox('', 8, 505, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox35 = GUICtrlCreateCheckbox('', 8, 520, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox36 = GUICtrlCreateCheckbox('', 8, 535, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Text = GUICtrlCreateEdit('', 22, 8, 157, 537, BitOR($ES_UPPERCASE,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, '')
GUICtrlSetFont(-1, 10, 400, 0, 'Consolas')
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKHEIGHT)

#EndRegion ### END Koda GUI section ###

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE           
            Exit
		Case $slider1
			WinMove($h_cGUI, '', 10, -GUICtrlRead($slider1))
    EndSwitch   
WEnd
 
Автор
A

AvDA

Новичок
Сообщения
9
Репутация
0
WSWR, у меня ХР, не заработал первый предложеный вариант на двух компах, не появляются даже полосы прокрутки при уменьшении окна, включил их дополнительно- на них окно вообще никак не реагирует, а очень бы хотелось именно с полосой прокрутки. Со слайдором заработало )
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
AvDA
А GUIScrollbars_Ex от Melba23 у тебя работает? Ещё проверь это
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Немного изменил скрипт WSWR, вроде работает.
Код:
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

#include <StructureConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>

$Form_Main = GUICreate('Печать', 365, 400, 10, 10)

$b_Print = GUICtrlCreateButton('Печать', 232, 120, 123, 57)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$Combo_ComPorts = GUICtrlCreateCombo('', 232, 80, 57, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_Open = GUICtrlCreateButton('Открыть', 232, 8, 123, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_Save = GUICtrlCreateButton('Сохранить', 232, 40, 123, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$b_reloadCOM = GUICtrlCreateButton('Обновить', 296, 80, 59, 25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
GUISetState(@SW_SHOW)

$h_cGUI = GUICreate('Child GUI', 215, 375, 10, 10, $WS_CHILD, BitOR($WS_EX_CLIENTEDGE, $WS_SIZEBOX), $Form_Main)

GUIRegisterMsg($WM_VSCROLL, 'WM_VSCROLL')

$iScrollInfoMax = 32
_GUIScrollBars_Init($h_cGUI)
_GUIScrollBars_SetScrollInfoMax($h_cGUI, $SB_VERT, $iScrollInfoMax)
_GUIScrollBars_SetScrollInfoMax($h_cGUI, $SB_HORZ, 0)

#Region ### START Koda GUI section ### Form=
$Checkbox1 = GUICtrlCreateCheckbox('', 8, 10, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox2 = GUICtrlCreateCheckbox('', 8, 25, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox3 = GUICtrlCreateCheckbox('', 8, 40, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox4 = GUICtrlCreateCheckbox('', 8, 55, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox5 = GUICtrlCreateCheckbox('', 8, 70, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox6 = GUICtrlCreateCheckbox('', 8, 85, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox7 = GUICtrlCreateCheckbox('', 8, 100, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox8 = GUICtrlCreateCheckbox('', 8, 115, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox9 = GUICtrlCreateCheckbox('', 8, 130, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox10 = GUICtrlCreateCheckbox('', 8, 145, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox11 = GUICtrlCreateCheckbox('', 8, 160, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox12 = GUICtrlCreateCheckbox('', 8, 175, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox13 = GUICtrlCreateCheckbox('', 8, 190, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox14 = GUICtrlCreateCheckbox('', 8, 205, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox15 = GUICtrlCreateCheckbox('', 8, 220, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox16 = GUICtrlCreateCheckbox('', 8, 235, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox17 = GUICtrlCreateCheckbox('', 8, 250, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox18 = GUICtrlCreateCheckbox('', 8, 265, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox19 = GUICtrlCreateCheckbox('', 8, 280, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox20 = GUICtrlCreateCheckbox('', 8, 295, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox21 = GUICtrlCreateCheckbox('', 8, 310, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox22 = GUICtrlCreateCheckbox('', 8, 325, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox23 = GUICtrlCreateCheckbox('', 8, 340, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox24 = GUICtrlCreateCheckbox('', 8, 355, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox25 = GUICtrlCreateCheckbox('', 8, 370, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox26 = GUICtrlCreateCheckbox('', 8, 385, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox27 = GUICtrlCreateCheckbox('', 8, 400, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox28 = GUICtrlCreateCheckbox('', 8, 415, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox29 = GUICtrlCreateCheckbox('', 8, 430, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox30 = GUICtrlCreateCheckbox('', 8, 445, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox31 = GUICtrlCreateCheckbox('', 8, 460, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox32 = GUICtrlCreateCheckbox('', 8, 475, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox33 = GUICtrlCreateCheckbox('', 8, 490, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox34 = GUICtrlCreateCheckbox('', 8, 505, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox35 = GUICtrlCreateCheckbox('', 8, 520, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Checkbox36 = GUICtrlCreateCheckbox('', 8, 535, 10, 17)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKHEIGHT)
$Text = GUICtrlCreateEdit('', 22, 8, 157, 537, BitOR($ES_UPPERCASE,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, '')
GUICtrlSetFont(-1, 10, 400, 0, 'Consolas')
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKHEIGHT)

#EndRegion ### END Koda GUI section ###

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

    For $x = 0 To UBound($aSB_WindowInfo) - 1
        If $aSB_WindowInfo[$x][0] = $hWnd Then
            $index = $x
            $yChar = $aSB_WindowInfo[$index][3]
            ExitLoop
        EndIf
    Next
    If $index = -1 Then Return 0


    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, 'nMin')
    $Max = DllStructGetData($tSCROLLINFO, 'nMax')
    $Page = DllStructGetData($tSCROLLINFO, 'nPage')
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, 'nPos')
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, 'nTrackPos')

    Switch $nScrollCode
        Case $SB_TOP ; user clicked the HOME keyboard key
            DllStructSetData($tSCROLLINFO, 'nPos', $Min)

        Case $SB_BOTTOM ; user clicked the END keyboard key
            DllStructSetData($tSCROLLINFO, 'nPos', $Max)

        Case $SB_LINEUP ; user clicked the top arrow
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos - 1)

        Case $SB_LINEDOWN ; user clicked the bottom arrow
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos + 1)

        Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos - $Page)

        Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos + $Page)

        Case $SB_THUMBTRACK ; user dragged the scroll box
            DllStructSetData($tSCROLLINFO, 'nPos', $TrackPos)
    EndSwitch

;~    // Set the position and then retrieve it.  Due to adjustments
;~    //   by Windows it may not be the same as the value set.

    DllStructSetData($tSCROLLINFO, 'fMask', $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, 'nPos')

    If ($Pos <> $yPos) Then
        _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
        $yPos = $Pos
    EndIf

    Return $GUI_RUNDEFMSG

EndFunc   ;==>WM_VSCROLL
Но это для окна с постоянными размерами. Если нужно менять размер основного окна, то придётся обрабатывать $WM_SIZE, в котором изменять размер дочернего окна и соответственно пересчитывать скролл. В справке по
Код:
_GUIScrollBars_Init()
есть пример, но нужно разбираться :scratch:
 
Автор
A

AvDA

Новичок
Сообщения
9
Репутация
0
Удалось решить вопрос изспользуя англоязычный хелп на форуме http://autoit-script.ru/autoit3_docs/libfunctions/_guiscrollbars_init.htm
Код:
;#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>

    Local $GUIMsg, $hGUI,  $h_cGUI2, $Edit1, $Checkbox1 , $Checkbox2, $Checkbox3, $Checkbox4, $Checkbox5, $Checkbox6, $Checkbox7, $Checkbox8, $Checkbox9

   $hGUI = GUICreate("ScrollBar Example", 400, 400, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
   $h_cGUI2 = GUICreate("Child GUI", 200, 200, 215, 10, $WS_CHILD, $WS_EX_CLIENTEDGE, $hGUI)
   GUISwitch($hGUI)
   GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
   GUISetState()
    _GUIScrollBars_Init($hGUI, 0);, 100)
   $Edit1 = GUICtrlCreateEdit("", 150, 112, 161, 385)
   $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 40, 80, 97, 17)
   $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 40, 96, 97, 17)
   $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 40, 112, 97, 17)
   $Checkbox4 = GUICtrlCreateCheckbox("Checkbox4", 48, 432, 97, 17)
   $Checkbox5 = GUICtrlCreateCheckbox("Checkbox5", 48, 416, 97, 17)
   $Checkbox6 = GUICtrlCreateCheckbox("Checkbox6", 48, 400, 97, 17)
   $Checkbox7 = GUICtrlCreateCheckbox("Checkbox7", 40, 248, 97, 17)
   $Checkbox8 = GUICtrlCreateCheckbox("Checkbox8", 40, 232, 97, 17)
   $Checkbox9 = GUICtrlCreateCheckbox("Checkbox9", 40, 264, 97, 17)



   

    While 1
        $GUIMsg = GUIGetMsg()

        Switch $GUIMsg
            Case $GUI_EVENT_CLOSE;
               ExitLoop
        EndSwitch
    WEnd

    Exit



Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)



Добавлено:
Сообщение автоматически объединено:

InnI, WSWR и остальные откликнувшиеся- спасибо )
InnI- ага, уже нашел
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Действительно, здесь
http://www.autoitscript.com/forum/topic/113723-scrollbars-made-easy-new-version-20-jan-12/
хорошие примеры на эту тему от Melba23
У этого товарища вообще много полезных UDF
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,487
inververs [?]
Хочется сделать прокрутку для настроек, когда все не влазит, что бы не делать большое окно.
Можно ещё использовать TreeViewTab:
Описание: Данная библиотека позволяет создавать псевдо-вкладки (Tab) в виде дерева списка (TreeView). Полезно для диалога настроек.
 
Верх