silvay22 发表于 2013-2-17 20:43:53

【已解决】如何将ini文件中所有字段名及关键字变成组合列表中的子项?

本帖最后由 silvay22 于 2013-2-17 22:07 编辑

脚本目录下有 GR.ini 文件,内容如下:

SID=1
CID=69

SID=2
CID=55

SID=3
CID=99

组合列表图形界面的代码如下:

#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("combo test", 300, 200)
$combo = GUICtrlCreateCombo("", 20, 20, 150)
GUISetState(@SW_SHOW)

silvay22 发表于 2013-2-17 20:47:15

本帖最后由 silvay22 于 2013-2-17 20:49 编辑

论坛中过去有帖子问过这个问题,但是那个代码只能显示字段名,我想将关键字也一同显示该如何做?
仅显示字段名的代码如下:
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Dim $IniName,$cbData
$Form1 = GUICreate("combo test", 300, 200)
$combo = GUICtrlCreateCombo("", 20, 20, 150)
GUISetState(@SW_SHOW)
$IniName = IniReadSectionNames("GR.ini")
For $i = 1 To $IniName
   $cbData &= $IniName[$i]& '|'
Next
GUICtrlSetData($combo, $cbData)

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

        EndSwitch
WEnd

afan 发表于 2013-2-17 21:24:46

循环里面再循环一下就行了For $i = 1 To $IniName
        $cbData &= $IniName[$i] & '|'
        $aKey = IniReadSection("GR.ini", $IniName[$i])
        If @Error Then ContinueLoop
        For $j = 1 To $aKey
                $cbData &= $aKey[$j] & '|'
        Next
Next

veket_linux 发表于 2013-2-17 21:40:46



#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Dim $IniName,$cbData
$Form1 = GUICreate("combo test", 300, 200)
$combo = GUICtrlCreateCombo("", 20, 20, 150)
GUISetState(@SW_SHOW)
$IniName = IniReadSectionNames("GR.ini")
If @error Then
        MsgBox(16, "出错!", "配置文件可能有错误!")
Else
        Dim $keys
        For $i = 1 To $IniName
                $cbData &= $IniName[$i]
                $keys = IniReadSection("GR.ini", $IniName[$i])
                If @error Then
                        ;
                Else
                        $cbData &= ' --- '
                        For $j = 1 To $keys
                                $cbData &= $keys[$j]
                                If $j=$keys Then ContinueLoop
                                $cbData &= ', '
                        Next
                EndIf
                $cbData &= '|'
        Next
        GUICtrlSetData($combo, $cbData)
EndIf

silvay22 发表于 2013-2-17 21:48:44

回复 3# afan
谢谢afan精准而及时的回答!祝工作顺利!

silvay22 发表于 2013-2-17 21:51:05

回复 4# veket_linux

同时也谢谢veket_linux的回答,从中又学到了我想要的知识。祝工作顺利!

veket_linux 发表于 2013-2-17 22:06:55

在来个效果,利用输入法中的制表符


#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Dim $IniName,$cbData
$Form1 = GUICreate("combo test", 300, 200)
$combo = GUICtrlCreateCombo("", 20, 20, 150)
GUISetState(@SW_SHOW)
$IniName = IniReadSectionNames("GR.ini")
If @error Then
        MsgBox(16, "出错!", "配置文件可能有错误!")
Else
        Dim $keys
        For $i = 1 To $IniName
                $cbData &= $IniName[$i] & '|';
                $keys = IniReadSection("GR.ini", $IniName[$i])
                If @error Then
                        ;
                Else
                        For $j = 1 To $keys
                                $cbData &= ' └── ' & $keys[$j] & '|';本行使用了制表符
                        Next
                EndIf
                $cbData &= '|'
        Next
        GUICtrlSetData($combo, $cbData)
EndIf

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

        EndSwitch
WEnd

silvay22 发表于 2013-2-24 11:50:12

veket_linux真是热心谢谢兄弟的再次回复。

satan83 发表于 2013-2-25 16:45:29

实例代码,好啊。
页: [1]
查看完整版本: 【已解决】如何将ini文件中所有字段名及关键字变成组合列表中的子项?