找回密码
 加入
搜索
查看: 1243|回复: 5

怎么删除用循环语句创建的控件呢?

[复制链接]
发表于 2009-5-12 09:14:31 | 显示全部楼层 |阅读模式
本帖最后由 ziyaxian 于 2009-5-31 16:27 编辑

在一个窗口里我用循环语句创建了许多控件,再调用此循环时新创建的控件会覆盖原来的控件但没有清除原来的控件,用什么方法清除原来的控件呢?请高手指点
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <date.au3>

Local $var,$a,$s
$var = IniReadSection("config.ini", "名称")
        If @error = 1 Then
                MsgBox(0,"错误","config.ini文件不存在"&@CRLF&"请重新配置config.ini文件")
        EndIf
               
Dim $i
$Form1 = GUICreate("网络监控", 530, 394, -1, -1)
GUICtrlCreateGroup("", 6, 0, 260, 355)
GUICtrlCreateGroup("", 264, 0, 262, 355)
$Button1 = GUICtrlCreateButton("开始", 240, 363, 50, 21, 0)
$Button2 = GUICtrlCreateButton("停止", 320, 363, 50, 21, 0)
$Label_time= GUICtrlCreateLabel("Label2", 21, 367, 212, 21)
GUICtrlSetData($Label_time,'日期/时间: '& _now() )

        GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                    Exit
                Case $Button1
                    AdlibEnable('_ping', 20000)
                Case $Button2
                    AdlibDisable()
                        
        EndSwitch
WEnd

func _ping()
$var = IniReadSection("config.ini", "名称")
        If @error <> 1 Then
                               
                        $b=8
                        $var = IniReadSection("config.ini", "名称")
                For $i = 1 to $var[0][0]
                        $a = ping ( $var[$i][0],1000 )
                If $a Then
                                    $s =$var[$i][1]                               
                                    $Input1 = GUICtrlCreateInput($s, 8, $b, 105, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY,$WS_BORDER))
                    $Input2 = GUICtrlCreateInput("正常", 123, $b, 61, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY,$WS_BORDER))
                    $Input3 = GUICtrlCreateInput("延时:"&$a, 191, $b, 65, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY,$WS_BORDER))
                                 
                            Else
                                    $s =$var[$i][1]                               
                                    $Input1 = GUICtrlCreateInput($s, 8, $b, 105, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY,$WS_BORDER))
                    $Input2 = GUICtrlCreateInput("网络中断", 123, $b, 61, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY,$WS_BORDER))
                                              GUICtrlSetColor(-1, 0xff0000)
                    $Input3 = GUICtrlCreateInput("请速处理", 191, $b, 65, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY,$WS_BORDER))
                                              GUICtrlSetColor(-1, 0xff0000)
                                    SoundPlay(@WindowsDir & "\media\tada.wav",1)
                                $PingList=@YEAR&@MON&@MDAY&".txt"
                    $info=FileOpen($PingList,1)
                    FileWrite($info, _now() &"   "& $s&"   网络不通" )
                    FileWrite($info, @CRLF)                       
                    fileclose($info)
                                EndIf  
                                $b=$b+25
                Next
$Label_time= GUICtrlCreateLabel("Label2", 21, 367, 212, 21)
GUICtrlSetData($Label_time,'日期/时间: '& _now() )       
GUISetState(@SW_SHOW)
GUISetState(@SW_UNLOCK)


Sleep(5000)

EndIf
EndFunc
 楼主| 发表于 2009-5-13 08:21:19 | 显示全部楼层
有人知道吗?或别的方法实现也行
发表于 2009-5-13 08:27:05 | 显示全部楼层
用 GUICtrlDelete ( 控件ID )
 楼主| 发表于 2009-5-15 11:12:26 | 显示全部楼层
用GUICTRLDelete删除的只是最后一个循环生成的控件,别的删不了啊
发表于 2009-5-15 11:45:33 | 显示全部楼层
那不就得了,创建的同时保存ID,在删除的地方使用就可以了。
 楼主| 发表于 2009-5-31 16:27:13 | 显示全部楼层
谢谢,终于解决了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-29 02:50 , Processed in 0.070723 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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