ziyaxian 发表于 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
                        $a = ping ( $var[$i],1000 )
                If $a Then
                                  $s =$var[$i]                               
                                  $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]                               
                                  $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

ziyaxian 发表于 2009-5-13 08:21:19

有人知道吗?或别的方法实现也行

rchockxm 发表于 2009-5-13 08:27:05

用 GUICtrlDelete ( 控件ID )

ziyaxian 发表于 2009-5-15 11:12:26

用GUICTRLDelete删除的只是最后一个循环生成的控件,别的删不了啊

NotBad 发表于 2009-5-15 11:45:33

那不就得了,创建的同时保存ID,在删除的地方使用就可以了。

ziyaxian 发表于 2009-5-31 16:27:13

谢谢,终于解决了
页: [1]
查看完整版本: 怎么删除用循环语句创建的控件呢?