Я добавил что бы он создавала еще 1 или 2 столюца если чекбоксов становиться много
Код:
if $iTop > 450 & $iLeft = 20 Then $iTop = 20 & $iLeft = 120
if $iTop > 450 & $iLeft = 120 Then $iTop = 20 & $iLeft = 240
но он почемуто переносит только один чекбокс или вообще не переносит их на след столбец...
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; Только эту строку и нужно править для добавления новых, или удаления пунктов ;)
Global $sProgs = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'
Global Const $aProgs = StringSplit($sProgs, '|')
Global $anCheckBoxes[$aProgs[0]+1]
Global $aCheckedIcons[$aProgs[0]+1]
Global $aUnCheckedIcons[$aProgs[0]+1]
$Form1 = GUICreate("", 500, 500, -1, -1)
$iTop = 10
$iLeft = 20
For $i = 1 To $aProgs[0]
$aCheckedIcons[$i] = -5
$aUnCheckedIcons[$i] = -4
$anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, 100, 15, "shell32.dll", $aUnCheckedIcons[$i])
$iTop += 20
if $iTop > 450 & $iLeft = 20 Then $iTop = 20 & $iLeft = 120
if $iTop > 450 & $iLeft = 120 Then $iTop = 20 & $iLeft = 240
Next
$nStart = GUICtrlCreateButton("Выполнить", 10, 110, 80, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nStart
For $i = 1 To $aProgs[0]
$aCheckBox = $anCheckBoxes[$i]
If GUICtrlRead($aCheckBox[1]) = 1 Then
GUICtrlSetImage($aCheckBox[0], "shell32.dll", $aCheckedIcons[$i])
$sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
$sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
MsgBox(64, $sProgName, $sProgExe)
Else
GUICtrlSetImage($aCheckBox[0], "shell32.dll", $aUnCheckedIcons[$i])
EndIf
Next
EndSwitch
WEnd
Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0)
Local $aRetArr[2]
$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 17, $iTop, 16, 16)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$aRetArr[1] = GUICtrlCreateCheckbox(" " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight, $WS_CLIPSIBLINGS)
Return $aRetArr
EndFunc
|