如何将一个ini标准文件,以树形显示出来?
如题,求解 回复 9# netegg就是:
ini 文件可以分为几个 Section,每个 Section 的名称用 [] 括起来,在一个 Section 中,可以有很多的 Key,每一个 Key 可以有一个值并占用一行,格式是 Key=value
如,若一个key占多行等等就不是标准的了……
若要显示值:
#NoTrayIcon
#include <GuiConstants.au3>
Opt("GUIOnEventMode", 1)
Local $INIFile = @ScriptDir & "\zh-CN.ini"
if not FileExists($INIFile) then
msgbox(16, "Error", "Cannot find INI file",5)
Exit
EndIf
$Form1 = GUICreate("Example", 300, 500)
GUISetOnEvent($GUI_EVENT_CLOSE, "Event")
$TreeView = GUICtrlCreateTreeView(10, 10, 200, 450)
GUICtrlSetOnEvent(-1, "Event")
$SectionName = IniReadSectionNames($INIFile)
If IsArray($SectionName) Then
Local $Item[$SectionName + 1]
For $i = 1 To $SectionName
$Item[$i] = GUICtrlCreateTreeViewItem($SectionName[$i], $TreeView)
$IniSection = IniReadSection($INIFile, $SectionName[$i])
if not @error Then
For $j = 1 To $IniSection
GUICtrlCreateTreeViewItem($IniSection[$j], $Item[$i])
GUICtrlCreateTreeViewItem($IniSection[$j], -1)
GUICtrlSetOnEvent(-1, "Event")
Next
EndIf
Next
EndIf
GUISetState()
While True
Sleep(100)
WEnd
Func Event()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case Else
$Val = GUICtrlRead(@GUI_CtrlId,1)
;......
EndSwitch
EndFunc
老板说话,也说得不明不白的:如何个树形法? 回复 2# happytc
呵呵,那是你不理解,,, #include <GuiTreeView.au3>就行 回复happytc
呵呵,那是你不理解,,, #include 就行
kn007 发表于 2011-7-14 20:47 http://www.autoitx.com/images/common/back.gif
这个我知道了
我不理解的是你要怎么个“显示”法? 这个我知道了
我不理解的是你要怎么个“显示”法?
happytc 发表于 2011-7-14 20:59 http://autoitx.com/images/common/back.gif
就是list出来啊。。。。我就问怎么实现啊,还反问,我可不认为难理解。。。 本帖最后由 happytc 于 2011-7-14 22:00 编辑
回复 5# kn007
其实还是不大理解你的需求,如下面的例子,是这样吗?如是这样,也太简单了,不象是老板问的问题呀
#NoTrayIcon
#include <GuiConstants.au3>
Opt("GUIOnEventMode", 1)
Local $INIFile = @ScriptDir & "\zh-CN.ini"
if not FileExists($INIFile) then
msgbox(16, "Error", "Cannot find INI file",5)
Exit
EndIf
$Form1 = GUICreate("Example", 300, 500)
GUISetOnEvent($GUI_EVENT_CLOSE, "Event")
$TreeView = GUICtrlCreateTreeView(10, 10, 200, 450)
GUICtrlSetOnEvent(-1, "Event")
$SectionName = IniReadSectionNames($INIFile)
If IsArray($SectionName) Then
Local $Item[$SectionName + 1]
For $i = 1 To $SectionName
$Item[$i] = GUICtrlCreateTreeViewItem($SectionName[$i], $TreeView)
$IniSection = IniReadSection($INIFile, $SectionName[$i])
if not @error Then
For $j = 1 To $IniSection
GUICtrlCreateTreeViewItem($IniSection[$j], $Item[$i])
GUICtrlSetOnEvent(-1, "Event")
Next
EndIf
Next
EndIf
GUISetState()
While True
Sleep(100)
WEnd
Func Event()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case Else
$Val = GUICtrlRead(@GUI_CtrlId,1)
;......
EndSwitch
EndFunc
其中的zh-CN.ini文件在下面下载(或者你自己随便建个INi)
http://www.autoitx.com/thread-25502-1-2.html
本帖最后由 netegg 于 2011-7-14 22:11 编辑
回复 6# happytc
ini至少是三层树,你这个似乎有些欠妥,大概应该是
|
|
-value
|
|
-data
上面加section的话再多一层 回复 7# netegg
一楼说的是:标准的Ini文件
你的意思是说把设置的值也显示出来?若是这样也容易呀,再加一行就可以了
反正IniReadSection数组里已经存了“关键字”和其对应的数值. 回复 8# happytc
标准的ini文件是什么样?请指教 回复happytc
标准的ini文件是什么样?请指教
netegg 发表于 2011-7-14 22:12 http://autoitx.com/images/common/back.gif
就如你刚才所说的。集合、键名、键值 回复kn007
其实还是不大理解你的需求,如下面的例子,是这样吗?如是这样,也太简单了,不象是 ...
happytc 发表于 2011-7-14 21:37 http://autoitx.com/images/common/back.gif
很感谢你。可能因为你的逻辑性比较好,所以问得比较详细。但我问的一般建立在help的用语基础上。这段代码也可以帮到我,我之前弄了之后,总是因为读取到乱码而失败。从你的代码,我发现了原因了。受教了。 如上面的文件,就是标准的Ini文件
OK=确定
Cancel=取消
..... 很感谢你。可能因为你的逻辑性比较好,所以问得比较详细。但我问的一般建立在help的用语基础上。这段代码也可以帮到我,我之前弄了之后,总是因为读取到乱码而失败。
kn007 发表于 2011-7-14 22:30 http://www.autoitx.com/images/common/back.gif
怎么可能读取出乱码呢?
表示无法理解 回复kn007
其实还是不大理解你的需求,如下面的例子,是这样吗?如是这样,也太简单了,不象是 ...
happytc 发表于 2011-7-14 21:37 http://autoitx.com/images/common/back.gif
怎么读取选定的项目?
利用Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$hWndTreeView = GUICtrlGetHandle($TreeView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndTreeView
Switch $iCode
Case -451
$item = _GUICtrlTreeView_GetSelection($hWndTreeView)
$root = $item
If _GUICtrlTreeView_GetChildCount($hWndTreeView,$item) <= 0 Then
$txt = _GUICtrlTreeView_GetText($hWndTreeView,$item)
ConsoleWrite($txt&@CRLF)
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc总是得到乱码,选了3样,得到如下
山楂汁冰淇淋
陘???謨?坚果冰淇淋
??兰香子冰淇淋
页:
[1]
2