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

[AU3基础] 请教个关于控件操作的奇怪问题[已解决]

  [复制链接]
发表于 2011-5-15 10:59:47 | 显示全部楼层 |阅读模式
本帖最后由 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)
控件就无法响应操作,请问是什么原因呢??

评分

参与人数 1金钱 +10 收起 理由
3mile + 10 这问题好玩

查看全部评分

发表于 2011-5-15 11:44:01 | 显示全部楼层
本帖最后由 netegg 于 2011-5-15 11:45 编辑

GUICtrlCreateButton这么创建出来返回的是控件索引,相当于不停给一个变量改变具体值,应该是只会删除最后一个
pic要置地,否则会覆盖操作区
 楼主| 发表于 2011-5-15 12:50:28 | 显示全部楼层
回复 2# netegg

我想也是,不过不知道怎么解决这个问题,PIC置底的话,怎么置呢?

我在KODA里面已经将它置底了,但是放到SCITE里面运行没有效果,然后查看帮助,将它禁用后再创建其它控件可以解决了这个问题~~

另外,谢谢你的解答~~
发表于 2011-5-15 14:33:47 | 显示全部楼层
回复 3# annybaby
置底好像和写代码的顺序有关,忘记了
发表于 2011-5-15 18:08:07 | 显示全部楼层
LZ这种类型的控件创建最好用数组来做变量,比如$Button[],如果按你那样来,$Button2指向的是最新创建的那个按钮,之前的按钮就没有对应的变量了,用数组的话,每次创建控件都被对应到数组变量中的不同元素上,删除控件也要对应相应的元素
 楼主| 发表于 2011-5-15 21:46:16 | 显示全部楼层
回复 5# 飘云

谢谢指教~~

但是,在用KODA设计一些简单的界面时,里面它一般都已经是这样设好变量的,如果再手动改,是不是有点麻烦??呵呵~
发表于 2011-5-15 22:19:28 | 显示全部楼层
这个很好玩哈,关键是新增加的按钮如何响应事件.
;GUItest
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $Button[100]
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
 楼主| 发表于 2011-5-15 22:31:42 | 显示全部楼层
这个很好玩哈,关键是新增加的按钮如何响应事件.
3mile 发表于 2011-5-15 22:19



    原来还可以这样用,呵呵,谢谢指教~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 03:25 , Processed in 0.222654 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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