Что нового

[Элементы GUI] Считать ини файл в массив, массивом заполнить GUICtrlCreateCombo

konokrad666

Новичок
Сообщения
22
Репутация
0
Есть ини файл вида:

Код:
[labels]
Category56=10
category norm=12
category 3=1
category w=7

Количество категорий заранее неизвестно, нужно считать ини в двумерный массив, а потом категориями заполнить комбо бокс

Код:
$Combo1 = GUICtrlCreateCombo("", 10, 40, 200, 23, $CBS_DROPDOWNLIST + $WS_VSCROLL)


Заранее спасибо.
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Как пример
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $rINI=IniReadSectionNames(@ScriptDir&"\12.ini"),$sText
For $i=1 To $rINI[0]
	$sText&="["&$rINI[$i]&"]|"
	Local $tText=IniReadSection(@ScriptDir&"\12.ini",$rINI[$i])
	For $i1=1 To $tText[0][0]
		$sText&=$tText[$i1][0]&"="&$tText[$i1][1]&"|"
	Next
Next
;~ $sText=StringReplace($sText,"category","")
$gui = GUICreate("", 361, 77)
$Combo1 = GUICtrlCreateCombo("", 0, 8, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,$sText)
$Exit = GUICtrlCreateButton("Закрываем лавочку", 184, 8, 131, 21)
GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Код:
[labels]
Category56=10
category norm=12
category 3=1
category w=7
[123]
fko=4
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
konokrad666 [?]
нужно считать ини в двумерный массив, а потом категориями заполнить комбо бокс
Для начала неплохо бы почитать справку!

Код:
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hForm1 = GUICreate("Form1", 182, 95, 192, 114)
$hCombo1 = GUICtrlCreateCombo("", 18, 30, 145, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUISetState(@SW_SHOW)


$sIni = IniReadSection("my.ini", "labels")
If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
Else
    For $i = 1 To $sIni[0][0]
		GUICtrlSetData($hCombo1, $sIni[$i][1], $sIni[1][1])
    Next
EndIf

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

	EndSwitch
WEnd
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Garrett
не GUICtrlSetData надо давать читать, а INI , в недавнем посте он уже применял GUICtrlSetData :smile:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
MnM
Ошибся! Исправил. Спасибо что поправили :beer:
 
Верх