找回密码
 加入
搜索
查看: 4064|回复: 8

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

  [复制链接]
发表于 2013-2-17 20:43:53 | 显示全部楼层 |阅读模式
本帖最后由 silvay22 于 2013-2-17 22:07 编辑

脚本目录下有 GR.ini 文件,内容如下:
[A]
SID=1
CID=69
[B]
SID=2
CID=55
[C]
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)
 楼主| 发表于 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[0]
   $cbData &= $IniName[$i]  & '|'
  Next
GUICtrlSetData($combo, $cbData)

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

        EndSwitch
WEnd
发表于 2013-2-17 21:24:46 | 显示全部楼层
循环里面再循环一下就行了
For $i = 1 To $IniName[0]
        $cbData &= $IniName[$i] & '|'
        $aKey = IniReadSection("GR.ini", $IniName[$i])
        If @Error Then ContinueLoop
        For $j = 1 To $aKey[0][0]
                $cbData &= $aKey[$j][0] & '|'
        Next
Next
发表于 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[0]
                $cbData &= $IniName[$i]
                $keys = IniReadSection("GR.ini", $IniName[$i])
                If @error Then
                        ;
                Else
                        $cbData &= ' --- '
                        For $j = 1 To $keys[0][0]
                                $cbData &= $keys[$j][0]
                                If $j=$keys[0][0] Then ContinueLoop
                                $cbData &= ', '
                        Next
                EndIf
                $cbData &= '|'
        Next
        GUICtrlSetData($combo, $cbData)
EndIf

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2013-2-17 21:48:44 | 显示全部楼层
回复 3# afan
谢谢afan精准而及时的回答!祝工作顺利!
 楼主| 发表于 2013-2-17 21:51:05 | 显示全部楼层
回复 4# 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[0]
                $cbData &= $IniName[$i] & '|';
                $keys = IniReadSection("GR.ini", $IniName[$i])
                If @error Then
                        ;
                Else
                        For $j = 1 To $keys[0][0]
                                $cbData &= ' └── ' & $keys[$j][0] & '|';本行使用了制表符
                        Next
                EndIf
                $cbData &= '|'
        Next
        GUICtrlSetData($combo, $cbData)
EndIf

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

        EndSwitch
WEnd

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 收起 理由
nmgwddj + 10 这个比较霸气。

查看全部评分

 楼主| 发表于 2013-2-24 11:50:12 | 显示全部楼层
veket_linux真是热心谢谢兄弟的再次回复。
发表于 2013-2-25 16:45:29 | 显示全部楼层
实例代码,好啊。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 03:27 , Processed in 0.083167 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表