列表框读取ini问题[解决]
本帖最后由 那片叶子 于 2012-1-22 14:16 编辑如图: 红色区域,蓝色区域,都是,读取INI的不同位置,然后显示在listview上!
点击程序上的列表,显示在下面的输入框内!
各位帮帮忙! 唉,LZ你也努点力呀,老会员了,这么简单的东西还… {:face (229):} 在部队2年,忘的差不多了!! 如图: 红色区域,蓝色区域,都是,读取INI的不同位置,然后显示在listview上!
点击程序上的列表,显 ...
那片叶子 发表于 2012-1-16 22:45 http://www.autoitx.com/images/common/back.gif
你发这个帖子和整上面那个图片的时间,估计都边看帮助边都把这个代码写出来了
Really, So easy to do it! 老实说, 这东西我也不会! 呵呵! 回复 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获取选中项的文本。 {:face (301):} 理解!!! 在部队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
技术比我还好,还在部队待了两年!看来我没法混了!{:face (319):} 呵呵,分别读取对应位置的数据就行啊,去看帮助吧,iniread 这个我也不懂,看了,大家的回复后,懂了,谢谢了
页:
[1]