请教个关于控件操作的奇怪问题[已解决]
本帖最后由 annybaby 于 2012-11-25 20:23 编辑;GUItest
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("华仔最帅!!", 1, 1, 193, 125, $WS_CLIPCHILDREN)
;~ $Pic1 = GUICtrlCreatePic("D:\桌面\1920DOG_1009.jpg", -1, -1, 581, 443)
GUISetState(@SW_SHOW)
For $i = 1 To 581 Step 1
WinMove('华仔最帅!!', '', 100, 100, $i, $i - 138)
Next
#EndRegion ### END Koda GUI section ###
$Button1 = GUICtrlCreateButton("动态添加一个按钮", 8, 40, 120, 25)
$Button3 = GUICtrlCreateButton("删除新建", 20, 100, 89, 25)
ControlHide('', '', $Button3)
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg = $GUI_EVENT_CLOSE
Exit
Case $nMsg = $Button1
$Button2 = GUICtrlCreateButton("我是新按钮", 150, 40, 89, 25)
ControlShow('', '', $Button3)
Case $nMsg = $Button3
GUICtrlDelete($Button2)
;~ ControlHide('', '', $Button3)
EndSelect
WEnd
上面的代码运行没有问题,但是,如果点击几次"动态添加一个按钮"后再点"删除新建"的话,就无法再删除"我是新按钮"了,为什么呢??
另外,如果添加一个图片背景,
$Pic1 = GUICtrlCreatePic("D:\桌面\1920DOG_1009.jpg", -1, -1, 581, 443)
控件就无法响应操作,请问是什么原因呢?? 本帖最后由 netegg 于 2011-5-15 11:45 编辑
GUICtrlCreateButton这么创建出来返回的是控件索引,相当于不停给一个变量改变具体值,应该是只会删除最后一个
pic要置地,否则会覆盖操作区 回复 2# netegg
我想也是,不过不知道怎么解决这个问题,PIC置底的话,怎么置呢?
我在KODA里面已经将它置底了,但是放到SCITE里面运行没有效果,然后查看帮助,将它禁用后再创建其它控件可以解决了这个问题~~
另外,谢谢你的解答~~{:face (396):} 回复 3# annybaby
置底好像和写代码的顺序有关,忘记了 LZ这种类型的控件创建最好用数组来做变量,比如$Button[],如果按你那样来,$Button2指向的是最新创建的那个按钮,之前的按钮就没有对应的变量了,用数组的话,每次创建控件都被对应到数组变量中的不同元素上,删除控件也要对应相应的元素 回复 5# 飘云
谢谢指教~~
但是,在用KODA设计一些简单的界面时,里面它一般都已经是这样设好变量的,如果再手动改,是不是有点麻烦??呵呵~ 这个很好玩哈,关键是新增加的按钮如何响应事件.
;GUItest
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $Button
Global $N=0
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("华仔最帅!!", 1, 1, 193, 125, $WS_CLIPCHILDREN)
;~ $Pic1 = GUICtrlCreatePic("D:\桌面\1920DOG_1009.jpg", -1, -1, 581, 443)
GUISetState(@SW_SHOW)
For $i = 1 To 581 Step 1
WinMove('华仔最帅!!', '', 100, 100, $i, $i - 138)
Next
#EndRegion ### END Koda GUI section ###
$Button1 = GUICtrlCreateButton("动态添加一个按钮", 8, 40, 120, 25)
$Button3 = GUICtrlCreateButton("删除新建", 20, 100, 89, 25)
ControlHide('', '', $Button3)
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg=$GUI_EVENT_CLOSE
Exit
Case $nMsg=$Button1
$Button[$N] = GUICtrlCreateButton("我是新按钮"&$N+1, 150, $N*40+40, 89, 25)
$N+=1
ControlShow('', '', $Button3)
Case $nMsg=$Button3
if $N-1>0 Then
GUICtrlDelete($Button[$N-1])
$Button[$N-1]=""
$N-=1
Else
$N-=1
GUICtrlDelete($Button[$N])
$Button[$N]=""
ControlHide('', '', $Button3)
EndIf
Case $nMsg>$Button3
msgbox(0,0,"新按钮"&$nMsg-$Button3)
EndSelect
WEnd 这个很好玩哈,关键是新增加的按钮如何响应事件.
3mile 发表于 2011-5-15 22:19 http://www.autoitx.com/images/common/back.gif
原来还可以这样用,呵呵,谢谢指教~~
页:
[1]