找回密码
 加入
搜索
查看: 4151|回复: 13

[GUI管理] 关于$buuton变量的问题

 火.. [复制链接]
发表于 2012-8-24 16:36:11 | 显示全部楼层 |阅读模式
&buuton1  
&buuton2
后面的数字咋样可以用变量代替
$buutton&$ip 用&连接测试失败.
各位大佬有知道的不..麻烦说下 谢谢哈
发表于 2012-8-24 16:50:11 | 显示全部楼层
eval('button' & $i)
发表于 2012-8-24 17:40:50 | 显示全部楼层
为什么不把整个$ButtonX做变量???
发表于 2012-8-24 17:49:45 | 显示全部楼层
to 蛋蛋:没看明白蛋蛋你是啥意思,eval 函数似乎是返回变量的值的说,似乎不能用来创建变量的说。

to 楼主:我能想到的办法是,首先预计你的最大可能变量个数,比如100个,然后Dim $button[100],然后
$button[0] = GUICtrlCreateButton(...)
$button[1] = GUICtrlCreateButton(...)
...
$button[2] = GUICtrlCreateButton(...)
...
当然循环创建的话就是
For $i = 0 To 99
$button[$i] = GUICtrlCreateButton(...)
Next
发表于 2012-8-24 18:02:34 | 显示全部楼层
本帖最后由 netegg 于 2012-8-24 18:05 编辑

to: 楼上
eval的参数是字符串代表的变量,返回的是变量值,guictrlcreate*返回的不是变量值(多数情况是控件索引)吗?
发表于 2012-8-24 18:05:57 | 显示全部楼层
本帖最后由 ajian55 于 2012-8-24 18:14 编辑

回复 5# netegg


    好吧,我直接贴帮助中的例子:
Dim $a_b = 12
$s = Eval("a" & "_" & "b")  ; $s 设置为  12

$s =Eval("c")  ; $s = "" 与 @error = 1
我确实不太懂 $s = Eval("a" & "_" & "b") 是不是等同于 $s = $a_b
但是用eval,变量首先必须存在吧,当我需要创建不确定个button时,难不成能 Eval("button"&$i ) = GuiCtrlCreateButton(...) 这么用?

也可能是我误解楼主为什么需要这么用变量了~
发表于 2012-8-24 18:10:46 | 显示全部楼层
本帖最后由 netegg 于 2012-8-24 18:18 编辑

回复 6# ajian55

对呀,"a"&"_"&"b"l把$a_b变成了纯字符串了,但是为什么第二句里的$s会是12
guictrlcreate*只是操作,并把返回值(也就是控件的索引)赋值给前面的变量

最好办的,你按eval做个界面出来,用info看看控件信息就知道了

看lz的意思,是想用循环来操作button后面的数字,创建不同的button
发表于 2012-8-24 18:24:32 | 显示全部楼层
回复 7# netegg


    话说还是没看懂,难道真能
Eval("button"&$i ) = GuiCtrlCreateButton(...)
   这么用?

  我试了下,在我这里这么用会出错的说,如果不能,如何解决定义不确定个 全局相似变量呢?
发表于 2012-8-24 18:45:15 | 显示全部楼层
不好意思,记反了,assign
[au3]#include <GUIConstantsEx.au3>

Example()

Func Example()
        Local $msg, $button1, $button2
        GUICreate("My GUI Button") ; 创建一个对话框,并居中显示

        Opt("GUICoordMode", 2)
        For $i = 1 To 3
                Assign('button' & $i, GUICtrlCreateButton($i, 100, 10 + $i * 16, 10, 10))
        Next
        GUISetState() ; 显示有两个按钮的对话框

        ; 运行界面,直到窗口被关闭
        While 1
                $msg = GUIGetMsg()
                Select
                        Case $msg = $GUI_EVENT_CLOSE
                                ExitLoop
                        Case $msg = $button1
                                Run('Notepad.exe') ; 点击按钮 1 打开记事本
                        Case $msg = $button2
                                MsgBox(4096, '测试', '你点击了测试按钮') ; 点击按钮 2 显示一个简单的对话框
                EndSelect
        WEnd
EndFunc   ;==>Example
[/au3]
发表于 2012-8-24 18:56:43 | 显示全部楼层
回复 9# netegg


    学习了,以前只会用数组,原来还可以这么做。
发表于 2012-8-24 22:40:05 | 显示全部楼层
这好像是例子吗
发表于 2012-8-24 23:59:35 | 显示全部楼层
回复 9# netegg

蛋蛋兄的代码总能让人眼前一亮,赏心悦目~~
学习了~
 楼主| 发表于 2012-8-25 18:28:08 | 显示全部楼层
回复 4# ajian55


谢谢  谢谢
 楼主| 发表于 2012-8-25 18:28:32 | 显示全部楼层
回复 9# netegg

谢谢 谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 18:17 , Processed in 0.084556 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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