evg64
31-10-2009, 16:40
Добрый день! Во вложенном файле имеется скрин участка GUI-формы. Там 5 интервалов для диапазонов (каждый диапазон состоит из 2-х инпутов и лэйбла). Возможно, понадобится сделать более 5 таких интервалов - в этом случае они не будут помещаться в форму, если последнюю не увеличивать.
Что требуется: выделить этот участок формы в отдельный объект (предположительно через GUICtrlCreateObj) и добавить туда вертикальный скролбар.
Вопросы:
1) Лучшее ли это решение использовать GUICtrlCreateObj? Может быть, есть более рациональные способы добавить скролбар к участку GUI-формы?
2) Что писать аргументом к ObjCreate(), дабы создать форму? :unsure:
Привожу часть кода, отвечающую непосредственно за построение инпутов, изображенных во вложенном файле:
; объявляем всякие переменные
$KolDiapasons=5 ; переменная, отвечающая за кол-во диапазонов
Global $iInputX=56, $iInputY=55, $GuiWidth=396, $GuiHeight=328
Dim $Input[2*$KolDiapasons][2],$Label[2*$KolDiapasons][2]
$GuiX=(@DesktopWidth - 396) / 2
$GuiY=(@DesktopHeight - 328-100) / 2
$Form2 = GUICreate("123", $GuiWidth, $GuiHeight, $GuiX, $GuiY ) ; создаем форму
GUICtrlCreateGroup("Диапазоны",$iInputX-21,$iInputY-45,100,40*$KolDiapasons+35) ; и группу
for $iInputCreate=0 to Ubound($Input)-1 step 2 ; строим инпуты циклом
$Input[$iInputCreate][0] = GUICtrlCreateInput($Input[$iInputCreate][1], $iInputX, $iInputY+40*int($iInputCreate/2), 25, 20)
$Input[$iInputCreate+1][0] = GUICtrlCreateInput($Input[$iInputCreate+1][1], $iInputX+40, $iInputY+40*int($iInputCreate/2), 25, 20)
$Label[int($iInputCreate/2)][0]=GUICtrlCreateLabel(" :", 84, $iInputY+40*int($iInputCreate/2)+2, 12, 24)
$Label[int($iInputCreate/2)][1]=GUICtrlCreateLabel(int($iInputCreate/2)+1&". ", $iInputX-15, $iInputY+40*int($iInputCreate/2)+2, 12, 24)
next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
wend
Что требуется: выделить этот участок формы в отдельный объект (предположительно через GUICtrlCreateObj) и добавить туда вертикальный скролбар.
Вопросы:
1) Лучшее ли это решение использовать GUICtrlCreateObj? Может быть, есть более рациональные способы добавить скролбар к участку GUI-формы?
2) Что писать аргументом к ObjCreate(), дабы создать форму? :unsure:
Привожу часть кода, отвечающую непосредственно за построение инпутов, изображенных во вложенном файле:
; объявляем всякие переменные
$KolDiapasons=5 ; переменная, отвечающая за кол-во диапазонов
Global $iInputX=56, $iInputY=55, $GuiWidth=396, $GuiHeight=328
Dim $Input[2*$KolDiapasons][2],$Label[2*$KolDiapasons][2]
$GuiX=(@DesktopWidth - 396) / 2
$GuiY=(@DesktopHeight - 328-100) / 2
$Form2 = GUICreate("123", $GuiWidth, $GuiHeight, $GuiX, $GuiY ) ; создаем форму
GUICtrlCreateGroup("Диапазоны",$iInputX-21,$iInputY-45,100,40*$KolDiapasons+35) ; и группу
for $iInputCreate=0 to Ubound($Input)-1 step 2 ; строим инпуты циклом
$Input[$iInputCreate][0] = GUICtrlCreateInput($Input[$iInputCreate][1], $iInputX, $iInputY+40*int($iInputCreate/2), 25, 20)
$Input[$iInputCreate+1][0] = GUICtrlCreateInput($Input[$iInputCreate+1][1], $iInputX+40, $iInputY+40*int($iInputCreate/2), 25, 20)
$Label[int($iInputCreate/2)][0]=GUICtrlCreateLabel(" :", 84, $iInputY+40*int($iInputCreate/2)+2, 12, 24)
$Label[int($iInputCreate/2)][1]=GUICtrlCreateLabel(int($iInputCreate/2)+1&". ", $iInputX-15, $iInputY+40*int($iInputCreate/2)+2, 12, 24)
next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
wend