2016. 3. 11.

GroupBox 컨트롤 데모

[출처:https://autohotkey.com/board/topic/71065-groupbox-addwrap-around-existing-controls]


GBTHeight:=10
Gui, +LastFound
Gui, Add, Text, vLabel1, A Label
Gui, Add, Text, x162 yMargin vLabel2, Nother Label
Gui, Add, Edit, Section vMyEdit1 xMargin, This is a Control
Gui, Add, Edit, vMyEdit2 ys x162, This is a Control
Gui, Add, CheckBox, Section vCheck1 xMargin, CheckBox 1
Gui, Add, CheckBox, vCheck2 ys x160, CheckBox 2
GroupBox("GB1", "Testing", GBTHeight, 10, "Label1|Label2|MyEdit1|MyEdit2|Check1|Check2")
Gui, Add, Text, Section xMargin, This is un-named
Gui, Add, DropDownList, xMargin vDDL, LIne 1|Line 2| Line 3
GroupBox("GB2", "Another Test", GBTHeight, 10, "This is un-named|DDL")
Gui, Add, Text, yS, This is a control
Gui, Add, DateTime, vMyDateTime w127
GroupBox("GB3", "Test", GBTHeight, 10, "Static4|MyDateTime")
Gui, Add, Text, vMyText xMargin, Some text to read.
Gui, Add, Button, Section x60, Button 1
Gui, Add, Button, ys x+10, Button 2
GroupBox("GB4", "Buttons Too", GBTHeight, 10, "Button 1|Button 2")
GroupBox("GB5", "Around Another GroupBox", GBTHeight, 10, "MyText|Button 1|Button 2|GB4", 298)
Gui, Show, , GroupBox Test

return
GuiClose:
ExitApp



GroupBox(GBvName,Title,TitleHeight,Margin,Piped_CtrlvNames,FixedWidth="",FixedHeight="") {
 Local maxX, maxY, minX, minY, xPos, yPos
 minX:=99999, minY:=99999, maxX:=0, maxY:=0
 Loop, Parse, Piped_CtrlvNames, |, %A_Space%
 {
  GuiControlGet, GB, Pos, %A_LoopField%
  minX:= GBX<minX ? GBX : minX
  minY:= GBY<minY ? GBY : minY
  maxX:= GBX+GBW>maxX ? GBX+GBW : maxX
  maxY:= GBY+GBH>maxY ? GBY+GBH : maxY
  xPos:= GBX+Margin
  yPos:= GBY+TitleHeight
  GuiControl, Move, %A_LoopField%, x%xPos% y%yPos%
 }
 GBW:= FixedWidth ? FixedWidth : maxX-minX+2*Margin
 GBH:= FixedHeight ? FixedHeight : maxY-MinY+TitleHeight+Margin
 Gui, Add, GroupBox, v%GBvName% x%minX% y%minY% w%GBW% h%GBH%, %Title%
}