lin0308 发表于 2009-12-26 14:35:10

右键删除INI数据

本帖最后由 lin0308 于 2009-12-26 20:20 编辑

[code#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>

$dir = @ScriptDir&"\config.ini"
$Form1 = GUICreate("列表框操作", 280, 250)
$ListView = GUICtrlCreateListView("程序             |备注         |", 10, 10, 260, 150)
$lhz = GUICtrlCreateContextMenu($ListView)
$su = GUICtrlCreateMenuItem("删除数据", $lhz)
GUICtrlCreateMenuItem("", $lhz)   
$exit = GUICtrlCreateMenuItem("关闭程序", $lhz)
$Button1 = GUICtrlCreateButton("添加", 185, 178, 75, 65, $WS_GROUP)
$Input1 = GUICtrlCreateInput("", 60, 180, 120, 21)
$Input2 = GUICtrlCreateInput("", 60, 220, 120, 21)
$Label1 = GUICtrlCreateLabel("程序:", 20, 183, 36, 17)
$Label2 = GUICtrlCreateLabel("备注:", 20, 223, 36, 17)
GUISetState(@SW_SHOW)
Read()

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        tian()
                                Case $exit
                                                Exit
      EndSwitch
WEnd

Func Read()
      $z = 0
      _GUICtrlListView_DeleteAllItems($ListView)
      $read = IniReadSection($dir,"chengxu")
      If Not @error Then
                For $i = 1 To $read
                        GUICtrlCreateListViewItem($read[$i], $ListView)
                        _GUICtrlListView_AddSubItem($ListView, $z, $read[$i], 1, $z+1)
                        $z += 1               
                Next
      EndIf
EndFunc

Func tian()
      $a = GUICtrlRead($Input1)
      $b = GUICtrlRead($Input2)
      
      If $a <> "" And $b <> "" Then
                IniWrite($dir,"chengxu",$a,$b)
                MsgBox(0,"提示"," 程序: "&$a&" 备注: "&$b&" 保存成功 ")
                Read()
                GUICtrlSetData($Input1,"")
                GUICtrlSetData($Input2,"")
      EndIf      
EndFunc      ]


比如INI文件内容是


PPStream.exe=pps
KwMusic.exe=酷我
KuGoo.exe=酷狗
QvodPlayer.exe=快播


如何右键删除其中一个数据呢?

水木子的例子是不错,可是看不大懂,寻求比较简单的的例子,后用上面代码修改,谢谢

水木子 发表于 2009-12-26 14:55:19

本帖最后由 水木子 于 2009-12-26 14:57 编辑

LZ的代码好眼熟!
看看这贴6楼的代码吧!我记得好像有。
http://www.autoitx.com/forum.php?mod=viewthread&tid=10838&rpid=108344&page=1#pid108344

水木子 发表于 2009-12-26 20:26:43

本帖最后由 水木子 于 2009-12-26 20:30 编辑

那段代码太长?不方便阅读?
我整理了下,看看吧!#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
Opt("TrayMenuMode", 1)
$dir = @ScriptDir&"\config.ini"

GUICreate("列表框操作", 280, 270)
$ListView1 = GUICtrlCreateListView("账号         |密码         |", 10, 10, 260, 150)
$But1 = GUICtrlCreateButton("添加", 185, 178, 75, 25, $WS_GROUP)
$Input1 = GUICtrlCreateInput("", 60, 180, 120, 21)
$Input2 = GUICtrlCreateInput("", 60, 220, 120, 21)
GUICtrlCreateLabel("账号:", 20, 183, 36, 17)
GUICtrlCreateLabel("密码:", 20, 223, 36, 17)
GUICtrlCreateLabel("数据", 200, 223, 36, 17)
$Label1 = GUICtrlCreateLabel("0", 230, 223, 36, 17)

;右键菜单
$zhucaidan = GUICtrlCreateContextMenu($ListView1)
$add = GUICtrlCreateMenuItem("添加数据", $zhucaidan)
GUICtrlCreateMenuItem("", $zhucaidan)
$del = GUICtrlCreateMenuItem("删除数据", $zhucaidan)
GUICtrlCreateMenuItem("", $zhucaidan)
$break = GUICtrlCreateMenuItem("刷新数据", $zhucaidan)
GUISetState(@SW_SHOW)
Read()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                Case $But1,$add
                        Add()
                Case $del
                        Del()
                Case $break
                        Read()
        EndSwitch
WEnd

Func Read()
        $z = 0
        _GUICtrlListView_DeleteAllItems($ListView1)
        $read = IniReadSection($dir,"config")
        If Not @error Then
                For $i = 1 To $read
                        GUICtrlCreateListViewItem($read[$i], $ListView1)
                        _GUICtrlListView_AddSubItem($ListView1, $z, $read[$i], 1, $z+1)
                        GUICtrlSetData($Label1,$z+1)
                        $z += 1               
                Next
        EndIf
EndFunc

Func Add()
        $a = GUICtrlRead($Input1)
        $b = GUICtrlRead($Input2)               
        $z = GUICtrlRead($Label1)
        If $a <> "" And $b <> "" Then
                IniWrite($dir,"config",$a,$b)
                GUICtrlCreateListViewItem($a, $ListView1)               
                _GUICtrlListView_AddSubItem($ListView1, $z, $b, 1, $z+1)
                MsgBox(0,"提示"," 账号: "&$a&" 密码: "&$b&" 保存成功 ")               
                GUICtrlSetData($Input1,"")
                GUICtrlSetData($Input2,"")               
                GUICtrlSetData($Label1,$z+1)
                GUICtrlSetState($Input1, $GUI_FOCUS)
        EndIf       
EndFunc       

Func Del()
        $a = _GUICtrlListView_GetSelectedIndices($ListView1)
        $b = _GUICtrlListView_GetItemTextString($ListView1, Number($a))
        $chaifen = StringSplit($b,"|")
        $a = MsgBox(32+1,"提示","请确认是否删除以下数据"&@CRLF&@CRLF&"账号:"&$chaifen&@CRLF&@CRLF&"密码:"&$chaifen)
        If $a = 1 Then
                _GUICtrlListView_DeleteItemsSelected($ListView1) ;删除选定项目
                IniDelete ($dir,'config', $chaifen)
                $z = _GUICtrlListView_GetItemCount($ListView1)
                GUICtrlSetData($Label1, $z)               
                ;MsgBox(48, "提示", "数据删除成功")
        EndIf       
EndFunc       

woyun 发表于 2012-2-5 17:31:13

有时间研究一下。。
页: [1]
查看完整版本: 右键删除INI数据