Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
Должен получиться список построенный по данным из ини файла »
Этого мало.

Зачем там в цикле создаётся столько GUI сколько записей в ini?

Цитата Centrinar:
какие то чекбоксы выше, какие то ниже »
Может правее/левее?

И для чего нужен первый параметр в ini, это типа счётчик всех ключей? можно и без него:

Код: Выделить весь код
#RequireAdmin
#NoTrayIcon

#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <GUIScrollbars_Ex.au3>

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

$aParams = IniReadSection("conf.ini", "Params")
Global $iTotalParams = UBound($aParams)-1

Global $anCheckBoxes1[$iTotalParams + 1]
Global $aCheckedIcons1[$iTotalParams + 1]
Global $aUnCheckedIcons1[$iTotalParams + 1]
Global $aCompleteIcons1[$iTotalParams + 1]
Global $aInstalledIcons1[$iTotalParams + 1]

$hGUI = GUICreate("My GUI Tab", 852, 650)
GUISetBkColor(0xc64444)

Global $progs[$iTotalParams + 1]
$progs[0] = $iTotalParams

$hChild_Ctrls = GUICreate("", 760, 400, 20, 100, $WS_CHILD, -1, $hGUI)
GUISetBkColor(0xc64444)
Dim $iTop = 40, $iLeft = 40, $iTop2 = 60

For $i = 1 To $progs[0]
	$parse = StringRegExp(IniRead("conf.ini", "Params", "prog" & $i, "<de.exe><INI file ?><0>"), "<(.*?)>", 3)
	$hChild_Ctrls1 = _SetProgrs_Proc("images", $i, $parse[1], $anCheckBoxes1, $aCheckedIcons1, $aUnCheckedIcons1, $aInstalledIcons1, $aCompleteIcons1)
Next

GUISetState(@SW_SHOW, $hChild_Ctrls)
GUISwitch($hGUI)

GUICtrlCreateTabItem("")
$nStart = GUICtrlCreateButton("Выполнить", 640, 560, 150, 30)
$btn1 = GUICtrlCreateButton("отметить все", 260, 50, 130, 30)

GUISetState(@SW_SHOW, $hGUI)

While 1
	$nMsg = GUIGetMsg()

	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $btn1
			For $i = 1 To $iTotalParams
				$aArray = $anCheckBoxes1[$i]
				GUICtrlSetState($aArray[1], $GUI_CHECKED)
			Next
		Case $nStart

	EndSwitch
WEnd

Func _CheckProgrs_Proc($hChild_Ctrls, $aProgs, $anCheckBoxes, $aCheckedIcons, $aUnCheckedIcons, $aInstalledIcons, $aCompleteIcons)
	Local $aCheckBox, $iScrollPos

	For $i = 1 To $aProgs[0]
		$aCheckBox = $anCheckBoxes[$i]

		If GUICtrlRead($aCheckBox[1]) = 1 Then
			$sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
			$sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')

			_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aInstalledIcons[$i])
			MsgBox(64, $sProgName, "zz", 3)
			_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aCompleteIcons[$i])
		Else
			_GUICtrlSetImageEx($hChild_Ctrls, $aCheckBox[0], $aUnCheckedIcons[$i])
		EndIf
	Next
EndFunc   ;==>_CheckProgrs_Proc

Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile = "", $nIconIndex = 0)
	Local $aRetArr[2]

	$aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft - 20, $iTop - 1, 16, 16)
	GUICtrlSetState($aRetArr[0], $GUI_DISABLE)

	$aRetArr[1] = GUICtrlCreateCheckbox($sText, $iLeft, $iTop, $iWidth, $iHeight)
	GUICtrlSetBkColor($aRetArr[1], 0xc64444)

	Return $aRetArr
EndFunc   ;==>_GUICtrlCreateCheckboxEx

Func _GUICtrlSetImageEx($hWnd, $nCtrlID, $sFileName, $iIconName = "", $iIconType = 0)
	Local $iScrollPage, $iScrollPos

	$iScrollPage = _GUIScrollBars_GetScrollInfoPage($hWnd, $SB_VERT)

	If $iScrollPage > 0 Then
		$iScrollPos = _GUIScrollBars_GetScrollPos($hWnd, $SB_VERT)
		_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, 0)
		GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
		_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, $iScrollPos)
	Else
		GUICtrlSetImage($nCtrlID, $sFileName, $iIconName, $iIconType)
	EndIf
EndFunc   ;==>_GUICtrlSetImageEx

Func _SetProgrs_Proc($sIconsPath, $iIndex, $sName, ByRef $anCheckBoxes, ByRef $aCheckedIcons, ByRef $aUnCheckedIcons, ByRef $aInstalledIcons, ByRef $aCompleteIcons)
	$aCheckedIcons[$iIndex] = $sIconsPath & "\01.ico"
	$aUnCheckedIcons[$iIndex] = $sIconsPath & "\01.ico"
	$aInstalledIcons[$iIndex] = $sIconsPath & "\03.ico"
	$aCompleteIcons[$iIndex] = $sIconsPath & "\02.ico"
	$anCheckBoxes[$iIndex] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($sName, '^.*=', ''), $iLeft, $iTop, -1, 15, $aUnCheckedIcons[$i])
	$iTop += 80
	$iTop2 += 80
	
	If $iTop > 370 Then
		_GUIScrollbars_Generate($hChild_Ctrls, 0, $iTop, 0, 0, 1)
	EndIf
	
	Return $hChild_Ctrls
EndFunc   ;==>_SetProgrs_Proc

Func _SwitchTabs_Proc($iTab, $iMode = -1)
	Switch $iTab
		Case 0
			If $iMode = -1 Then
				GUISetState(@SW_HIDE, $hChild_Ctrls2)
				GUISetState(@SW_SHOW, $hChild_Ctrls1)
			EndIf

			ControlFocus($hChild_Ctrls1, "", "")
		Case 1
			If $iMode = -1 Then
				GUISetState(@SW_HIDE, $hChild_Ctrls1)
				GUISetState(@SW_SHOW, $hChild_Ctrls2)
			EndIf

			ControlFocus($hChild_Ctrls2, "", "")
	EndSwitch
EndFunc   ;==>_SwitchTabs_Proc
P.S
main=<2> из ini нужно убрать.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:30, 08-09-2010 | #9