回复 5# mshuking
帮一下新朋友. 多多努力;多查看某函数的帮助,多实践,运行实例;坚持个把星期就会有一定水准啦.
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $LastItem = -1 ; 记录最后创建的列表项目ID, 删除时用得上.
$Form1 = GUICreate("测试", 460, 244)
$ListView1 = GUICtrlCreateListView("账号|密码|状态", 0, 0, 458, 214)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 180);调整宽度
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150);调整宽度
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 110);调整宽度
GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES);设置表格边框
GUICtrlSetCursor(-1, 0);鼠标指针
$Context = GUICtrlCreateContextMenu($ListView1)
$LoadData = GUICtrlCreateMenuItem("导入数据", $Context)
GUICtrlCreateMenuItem("", $Context)
$ClearData = GUICtrlCreateMenuItem("清空数据", $Context)
GUICtrlCreateMenuItem("", $Context)
$Quit = GUICtrlCreateMenuItem("退出", $Context)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Quit
Exit
Case $LoadData
_add_lv_item()
Case $ClearData
_clear_lv_item()
EndSwitch
WEnd
Func _add_lv_item()
Local $file = FileOpenDialog('选择你的数据文件', @ScriptDir, '文本文件(*.txt)')
If @error Then Return SetError(1); 没选定文件,直接跳出函数
Local $sTXT = FileRead($file)
$sTXT = ClipGet() ;此句调试用,直接从剪贴板读数据
Local $aText = StringRegExp($sTXT, '.+-{3}.+', 3) ;正则获取数据
If @error Then Return SetError(2) ; 获取帐户密码数据出错,数据格式不符?
If $LastItem <> -1 Then
If MsgBox(1 + 32, '清除数据', '是否清空旧数据?', 5, $Form1) = 1 Then _clear_lv_item()
EndIf
For $i = 0 To UBound($aText) - 1
$LastItem = GUICtrlCreateListViewItem(StringReplace($aText[$i], '---', '|'), $ListView1) ;创建列表项目
Next
EndFunc
Func _clear_lv_item()
If $LastItem Then
For $i = $Quit + 1 To $LastItem
GUICtrlDelete($i) ; 删除所有项目的控件id
Next
GUICtrlSendMsg($ListView1, $LVM_DELETEALLITEMS, 0, 0) ; 删除所有列表项目
$LastItem = -1 ;重置此ID纪录
EndIf
EndFunc
|