找回密码
 加入
搜索
查看: 1604|回复: 7

列表框添加和修改删除问题,恳请高手们帮忙

[复制链接]
发表于 2009-7-1 00:40:53 | 显示全部楼层 |阅读模式
本帖最后由 116154801 于 2009-7-1 00:46 编辑

小弟已经无能为力了,恳请各位大哥大姐帮帮小弟,小弟无尽感激
小弟是想把列表框的内容添加和读取、删除123.ini里面的内容

[进程]
1=病毒.exe
1=1121
1=1122
1=1123
1=1124
1=1125
1=1126
1=1127
1=1128

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-7-1 01:00:48 | 显示全部楼层
你把源码发上来我给你改,实在没有时间帮你写个完整的,要不谁有时间谁帮他吧
发表于 2009-7-12 15:22:44 | 显示全部楼层
我也正在学习这个问题,希望有高手能解答下。
帮你顶起。。。
发表于 2009-7-12 21:06:32 | 显示全部楼层
顶起,希望有朋友能解答下。
发表于 2009-7-12 21:55:23 | 显示全部楼层
想把列表框的内容添加和读取、删除123.ini

IniDelete 删除
IniRead 读取
IniWrite 添加
自己看看帮助文件的示例再尝试独立写写吧,不难的
再不行再说吧
发表于 2009-7-12 22:18:32 | 显示全部楼层
本帖最后由 水木子 于 2009-7-12 22:19 编辑

Lynfr8 前辈还在吗?
我现在正在研究你之前的一段帮助父子框的问题代码,其中有些部分我为了方便记忆改的
不知道你还有影响不? 我想问下,你在这段代码中多次用到"_GuiMsg"这个函数,我一直搞不明白这是什么意思?有什么用?
如果你方便的话,请解释下啊?谢谢。
还有就是这段代码,关闭子窗口,虽然不会跟着关闭,但是它就自动最小化了,是怎么的?
不知道借别人的帖子问问题,合不合适,请见谅啊!
$Main_GUI = GUICreate("父窗口", 200, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "_GuiMsg")
GUISetBkColor(0x008040, $Main_GUI)
$Btn_Show = GUICtrlCreateButton("子窗口", 50, 70, 100, 30)
GUISetState(@SW_SHOW, $Main_GUI)
$Child1_GUI = GUICreate("子窗口", 200, 100, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "_GuiMsg")
$Btn_Test1 = GUICtrlCreateButton("显示", 50, 20, 100, 30)
GUICtrlSetOnEvent($Btn_Show, "_GuiMsg")
GUICtrlSetOnEvent($Btn_Test1, "_GuiMsg")

While 1
Sleep(250)
WEnd

Func _GuiMsg()
Switch @GUI_CTRLID 
Case $GUI_EVENT_CLOSE
Switch @GUI_WinHandle
Case $Main_GUI
Exit
Case $Child1_GUI 
GUISetState(@SW_HIDE,$Child1_GUI )
GUISetState(@SW_ENABLE ,$Main_GUI ) 
EndSwitch 
Case $Btn_Show 
GUISetState(@SW_SHOW,$Child1_GUI ) 
GUISetState(@SW_DISABLE ,$Main_GUI ) 
Case $Btn_Test1
MsgBox(64,"测试","我是子窗口")
EndSwitch
EndFunc
发表于 2009-7-12 23:25:43 | 显示全部楼层
_GuiMsg是自定义的
具体应用不是三言两语能说清的
还靠自己多多琢磨
详细请看OnEvent模式进阶教程
http://www.autoitx.com/forum.php?mod=viewthread&tid=476
帮助文件关于OnEvent 模式也写得非常清楚:
GUI 相关 - OnEvent 模式
在 OnEvent(事件驱动)模式下,脚本并不需要频繁地要求GUI检查是否有任何事件发生(并根据返回信息处理事件),而是仅当某个事件发生时GUI才临时性暂停脚本并调用一个用户预定义的函数来处理该事件。例如,假定用户点击了按钮1则GUI将暂停主脚本并调用某个预定义的用户函数来处理按钮1事件。当该函数完成处理操作后才回到主脚本继续执行。这个模式比较类似 Visual Basic 的窗体方法。

当GUI被执行时,主脚本还可以做其它一般性工作,但为了演示方便我们只是让主脚本在一个无限While循环里“睡眠”一下。

因为消息循环是默认的模式,所以在应用 OnEvent 模式之前我们应该先使用 Opt("GUIOnEventMode", 1) 语句。



基本的 OnEvent 结构
下面是 OnEvent 的基本结构:

While 1
  Sleep(1000)   ; 闲置工作,不做任何事
WEnd
  
Func Event1()
  ; 处理事件的代码放在这里
EndFunc

Func Event2()
  ; 处理事件的代码放在这里
EndFunc



GUI 事件
在 OnEvent 模式下会产生两种“事件”:


控件事件
系统事件


这两种事件类型发生时都将调用用户预先定义的函数,这些函数可以是为GUI(窗口)设置的(GUISetOnEvent)或者为控件设置的(GUICtrlSetOnEvent)。如果某事件并没有预先定义相应的处理函数则该事件将被忽略。在这些被调用的函数内部可使用各种 宏 以助处理事件:

宏 说明
@GUI_CTRLID 发送消息的控件ID 或者 系统事件ID  
@GUI_WINHANDLE 发送消息的GUI(窗口)句柄
@GUI_CTRLHANDLE 发送消息的控件句柄(如果适用)

注意:使用同一个函数来响应多种事件是完全合法的,记住要灵活使用 @GUI_CTRLID 这个宏。比如说,您可以注册所有系统事件到同一个函数。



控件

当某个控件被点击或该控件有其它变化时将发送控件事件。该事件将被传递到由 GUICtrlSetOnEvent 定义的函数中。在这个函数里,@GUI_CTRLID 的值是发送消息的 控件ID(也即使用 GUICtrlCreate... 函数创建该控件时的返回值)。



系统事件

系统事件包括GUI(窗口)被关闭等在内,它们以类似于控件事件的方式被发送出去,而事件类型(ID)则由 @GUI_CTRLID 指示。系统事件将被传递到由 GUISetOnEvent 定义的函数中。可能的系统事件包括:

$GUI_EVENT_CLOSE
$GUI_EVENT_MINIMIZE
$GUI_EVENT_RESTORE
$GUI_EVENT_MAXIMIZE
$GUI_EVENT_PRIMARYDOWN
$GUI_EVENT_PRIMARYUP
$GUI_EVENT_SECONDARYDOWN
$GUI_EVENT_SECONDARYUP
$GUI_EVENT_MOUSEMOVE



GUI 示例
在 GUI 相关 的页面上我们曾编写过一个简单的窗口:

#include <GUIConstants.au3>

GUICreate("您好", 200, 100)
GUICtrlCreateLabel("最近过得怎样?", 30, 10)
GUICtrlCreateButton("还OK吧", 70, 50, 60)
GUISetState(@SW_SHOW)
Sleep(2000)



现在我们来尝试使用 OnEvent 以及上面描述的事件消息来完成全部代码:



#include <GUIConstants.au3>

Opt("GUIOnEventMode", 1)  ; 切换为 OnEvent 模式
$mainwindow = GUICreate("您好", 200, 100) ; 创建窗口并返回窗口句柄
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; 设置窗口关闭事件
GUICtrlCreateLabel("最近过得怎样?", 30, 10)
$okbutton = GUICtrlCreateButton("还OK吧", 70, 50, 60)
GUICtrlSetOnEvent($okbutton, "OKButton")
GUISetState(@SW_SHOW)

While 1
  Sleep(1000)  ; 不做任何事
WEnd

Func OKButton()
  ;注意:此时 @GUI_CTRLID 的值将等价于 $okbutton,
  ;而 @GUI_WINHANDLE 则等价于 $mainwindow
  MsgBox(0, "GUI 事件", "您按下了“还OK吧”按钮!")
EndFunc

Func CLOSEClicked()
  ;注意:此时 @GUI_CTRLID 的值将等价于 $GUI_EVENT_CLOSE,
  ;而 @GUI_WINHANDLE 则等价于 $mainwindow
  MsgBox(0, "GUI 事件", "您选择了关闭!正在退出...")
  Exit
EndFunc

很简单,对吧?很明显创建的窗口及控件越多则脚本越复杂,但基本结构都是类似上面的这个示例。



高级操作及多窗口
即使有很多窗口存在,控件 ID 也是唯一的,但是我们如何处理多窗口呢?

下面这个示例脚本和上面的很像,但多出了一个“dummy(虚设的)”窗口。

#include <GUIConstants.au3>

Opt("GUIOnEventMode", 1)  ; 切换为 OnEvent 模式
$mainwindow = GUICreate("您好", 200, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlCreateLabel("最近过得怎样?", 30, 10)
$okbutton = GUICtrlCreateButton("还OK吧", 70, 50, 60)
GUICtrlSetOnEvent($okbutton, "OKButton")

$dummywindow = GUICreate(" 这只是测试用的虚设窗口,并不会被显示 ", 200, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

GUISwitch($mainwindow)
GUISetState(@SW_SHOW)

While 1
  Sleep(1000)  ; 不做任何事
WEnd

Func OKButton()
  ;注意:此时 @GUI_CTRLID 的值将等价于 $okbutton
  MsgBox(0, "GUI 事件", "您按下了“还OK吧”按钮!")
EndFunc

Func CLOSEClicked()
  ;注意:此时 @GUI_CTRLID 的值将等价于 $GUI_EVENT_CLOSE,
  ;而 @GUI_WINHANDLE 则等价于 $mainwindow 或 $dummywindow
  If @GUI_WINHANDLE = $mainwindow Then
    MsgBox(0, "GUI 事件", "您选择了关闭主窗口!正在退出...")
    Exit
  EndIf
EndFunc



第一个需要注意的变动是上面的脚本增加了一个 GUISwitch 函数的调用,当新的窗口被创建之后该窗口即变成后面所有GUI操作(包括创建控件在内)的“默认”窗口,也就是说这些GUI操作的对象都会是这个默认窗口。但我们希望显示的是主窗口(首先被创建的窗口)而不是那个测试窗口,这时就要使用 GUISwitch 函数来切换操作对象。某些GUI函数允许您在调用它们时使用窗口句柄(参数)来指定操作目标,同时也将自动切换该目标窗口为“默认窗口”。所以在这个示例中,我们还可以改用这样的语句:

GUISetState(@SW_SHOW, $mainwindow)



另外要注意的就是我们使用了同一个 OnEvent 函数来处理两个窗口的“关闭”事件,为了识别被关闭的窗口究竟是哪一个我们还使用了 @GUI_WINHANDLE 来检查发送消息的窗口句柄。这样处理之后我们就可以确保在窗口的关闭按钮被点击 而且 消息是从主窗口发送的时候才退出GUI了。当然了,您也可以为每个窗口指定不同的事件处理函数。
发表于 2009-7-13 09:09:19 | 显示全部楼层
哇!很详细,很强大,值得收藏,够我好好学习一阵的。
谢谢你如此细心的解答,非常感谢啊!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-23 01:30 , Processed in 0.078134 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表