那片叶子 发表于 2012-1-16 22:45:46

列表框读取ini问题[解决]

本帖最后由 那片叶子 于 2012-1-22 14:16 编辑



如图: 红色区域,蓝色区域,都是,读取INI的不同位置,然后显示在listview上!
点击程序上的列表,显示在下面的输入框内!

各位帮帮忙!

afan 发表于 2012-1-16 23:06:04

唉,LZ你也努点力呀,老会员了,这么简单的东西还…

那片叶子 发表于 2012-1-16 23:19:13

{:face (229):} 在部队2年,忘的差不多了!!

happytc 发表于 2012-1-17 09:58:56

如图: 红色区域,蓝色区域,都是,读取INI的不同位置,然后显示在listview上!
点击程序上的列表,显 ...
那片叶子 发表于 2012-1-16 22:45 http://www.autoitx.com/images/common/back.gif


    你发这个帖子和整上面那个图片的时间,估计都边看帮助边都把这个代码写出来了

Really, So easy to do it!

user3000 发表于 2012-1-17 10:52:02

老实说, 这东西我也不会! 呵呵!

xiehuahere 发表于 2012-1-17 12:20:51

回复 1# 那片叶子


    给个思路吧,回去对照着看帮助即可。
   下面是可能用到的函数:

1. 红色读取:
   IniReadSectionNames - 返回一个包含所有Section名称的数组,假设为 $sectionArray
2. 蓝色读取:
   IniReadSection - 返回指定Section下所有的关键字和值。
   用 For $section In $sectionArray 循环 分别读取每个Section中的值
3. 加入listview:
   _GUICtrlListView_AddItem        ; 1st column
    _GUICtrlListView_AddSubItem   ; 2nd column
4. 点击列表item,显示到输入框:
   捕获WM_NOTIFY系统消息,在 $NM_CLICK 单击事件中,通过 _GUICtrlListView_HitTest 或 _GUICtrlListView_SubItemHitTest 判断是哪个Item被点击选中,然后用_GUICtrlListView_GetItemText获取选中项的文本。

那片叶子 发表于 2012-1-17 15:58:17

{:face (301):} 理解!!!

afan 发表于 2012-1-17 21:29:39

在部队2年,忘的差不多了!!
那片叶子 发表于 2012-1-16 23:19 http://www.autoitx.com/images/common/back.gif


    可以理解,帮你写了个,自己改一下Ini读取方式~#include <GUIListView.au3>

Opt('GUIOnEventMode', 1)

Local $sIni = RegRead('HKLM\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir') & '\AU3TOOL.exe.ini'
Local $aKV = IniReadSection($sIni, 'traymenu')
If @error Then Local $aKV = [,,]

Local $hGui = GUICreate('')
GUISetOnEvent(-3, '_Exit')

Local $ListView1 = GUICtrlCreateListView('key|value', 5, 5, 390, 340)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 300)
For $i = 1 To $aKV
        GUICtrlCreateListViewItem($aKV[$i] & '|' & $aKV[$i], $ListView1)
Next

Local $iInput1 = GUICtrlCreateInput('', 5, 350, 100, 20)
Local $iInput2 = GUICtrlCreateInput('', 110, 350, 200, 20)
GUICtrlCreateButton('退出', 315, 349, 80, 22)
GUICtrlSetOnEvent(-1, '_Exit')

GUISetState()
GUIRegisterMsg(0x004E, '_WM_NOTIFY')        ;$WM_NOTIFY = 0x004E

While 1
        Sleep(500)
WEnd

Func _Exit()
        Exit
EndFunc   ;==>_Exit

Func _WM_NOTIFY($hWndGUI, $MsgID, $WParam, $LParam)
        Local $tagNMHDR, $Event, $hWndFrom, $IDFrom
        Local $tagNMHDR = DllStructCreate('int;int;int', $LParam)
        If @error Then Return $GUI_RUNDEFMSG
        $IDFrom = DllStructGetData($tagNMHDR, 2)
        $Event = DllStructGetData($tagNMHDR, 3)
        $tagNMHDR = 0
        If ($IDFrom = $ListView1) And ($Event = 0xFFFFFFFE) Then _ItemRead()        ;$NM_CLICK = 0xFFFFFFFE
EndFunc   ;==>_WM_NOTIFY

Func _ItemRead()
        Local $Index = _GUICtrlListView_GetSelectedIndices($ListView1)
        If $Index = '' Then Return
        $Index = Number($Index)
        GUICtrlSetData($iInput1, _GUICtrlListView_GetItemText($ListView1, $Index))
        GUICtrlSetData($iInput2, _GUICtrlListView_GetItemText($ListView1, $Index, 1))
EndFunc   ;==>_ItemRead

hzxymkb 发表于 2012-1-18 08:07:27

技术比我还好,还在部队待了两年!看来我没法混了!{:face (319):}

asdasdasd 发表于 2012-1-19 11:36:16

呵呵,分别读取对应位置的数据就行啊,去看帮助吧,iniread

jingygr 发表于 2012-1-20 09:06:55

这个我也不懂,看了,大家的回复后,懂了,谢谢了
页: [1]
查看完整版本: 列表框读取ini问题[解决]