找回密码
 加入
搜索
查看: 1686|回复: 11

一次生成多个控件

 火.. [复制链接]
发表于 2010-1-30 12:52:30 | 显示全部楼层 |阅读模式
本帖最后由 xg911335 于 2010-2-2 13:35 编辑


如上图。有什么办法一次就可以添加多个Checkbox控件并排列,每个Checkbox控件的名字都不一样。手动添加好累。有什么办法吗?

另外,几个TabSheet标签内有什么方法可以设置一个相同变量?每个变量只在自己的TabSheet内有效?
如TabSheet1内
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
Local $Checkbox[31]   这个变量只在TabSheet1下有效
如TabSheet2内
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
Local $Checkbox[20]   这个变量只在TabSheet2下有效

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-1-30 12:58:23 | 显示全部楼层
我也想知道哟。。
发表于 2010-1-30 13:50:24 | 显示全部楼层
本帖最后由 131738 于 2010-1-30 13:54 编辑

大概用三段循环吧,设置第一复选框的左端、顶部两个坐标变量

第一个循环时,Y 坐标累加,第二循环时,X 坐标加一个固定值 ,Y 坐标同第一循环累加,

第三循环同第二循环同样处理,只是加值不同。。。。

也可一次循环中加 IF 判断。。。。。

至于第二个问题暂时不知,无非也就是加 IF 加 AND 判断吧。。。。。。。。
 楼主| 发表于 2010-1-30 14:05:18 | 显示全部楼层
有列子吗?给个列子研究一下。谢谢楼上的回复。
发表于 2010-1-30 14:45:55 | 显示全部楼层
如3楼所示,动态生成控件并排列,无非就是FOR字段内循环就可以了,只是排列位置多加几个判断就行了,理解了怎么做,要什么例子啊。。

不知道楼主为何有变量属于TAB的想法,你想规范语法的话,就用二维数组好了,如$Checkbox[0][36] 为第一个TAB的控件集合,$Checkbox[1][36]为第二TAB的控件集合。。。。。。
发表于 2010-1-30 14:50:16 | 显示全部楼层
本帖最后由 jybb001 于 2010-1-30 17:36 编辑

我写过,关键函数是这样的,好久了,当时也没写注释,发上来给你看看
程序可以自动根据配置文件生成不同个数的单选框,论坛好像不能上传图片了,发不了图片,
http://www.autoitx.com/forum.php ... d=7641265#pid113801
Func cjgui()
$yz=88
$js=1
Dim $rishouru3,$rishouru4
For $i=1 To 9
        
        $xz=40
        For $i2=1 To 4 
        
        
                $Checkbox[$js]=GUICtrlCreateRadio($rishouru3[0]&" "&$rishouru4[0]&"元",$xz, $yz, 150, 17)
                $mm="Radio"&$js&"Click"
                GUICtrlSetOnEvent(-1, $mm)

        $js=$js+1
        $xz=$xz+160
                EndIf
    Next
        $yz=$yz+32
Next
_SQLite_Close()
EndFunc
发表于 2010-1-30 16:17:35 | 显示全部楼层
几个TabSheet标签内有什么方法可以设置一个相同变量
xg911335 发表于 2010-1-30 12:52


这个想法无非就是使批量创建的控件能够单独控制,给每个控件分配独立的变量不就行了~
 楼主| 发表于 2010-1-30 17:15:05 | 显示全部楼层
$s = 1
$x = 10
$y = 16
For $i = 1 to 8
        $Checkbox[$s] = GUICtrlCreateCheckbox("Checkbox" & $i & "", $x, $y, 97, 17)
        $y = $y + 32
        For $i1 = 1 to 8
                $Checkbox[$s] = GUICtrlCreateCheckbox("Checkbox" & $i & "", $x+120, $y-32, 97, 17)
                For $i2 = 1 to 8
                        $Checkbox[$s] = GUICtrlCreateCheckbox("Checkbox" & $i & "", $x+250, $y-32, 97, 17)
                        Next
        Next
        $x = 10
        $s = $s + 1
Next
去掉$s变量可以正常运行。但怎么加了$s就无法运行了。提示$Checkbox possibly not declared/created yet。
生成出来都是Checkbox1……8这个名称,怎么改?如:Checkbox1“改成”123,Checkbox2“改成”签名,Checkbox3“改成”sd123
发表于 2010-1-30 17:41:09 | 显示全部楼层
本帖最后由 jybb001 于 2010-1-30 17:42 编辑

回复 8# xg911335

要先把$Checkbox声明成数组
DIM $Checkbox[36] 你要生成几个$Checkbox,你就要声明比你要生成生的个数多一个的数组
$s = 1
$x = 10
$y = 16
Dim $Checkbox[100]成  ;如果不想计算,数组就声明大一点就行了,没看懂你的循环,呵呵
For $i = 1 to 8
        $Checkbox[$s] = GUICtrlCreateCheckbox("Checkbox" & $i & "", $x, $y, 97, 17)
        $y = $y + 32
        For $i1 = 1 to 8
                $Checkbox[$s] = GUICtrlCreateCheckbox("Checkbox" & $i & "", $x+120, $y-32, 97, 17)
                For $i2 = 1 to 8
                        $Checkbox[$s] = GUICtrlCreateCheckbox("Checkbox" & $i & "", $x+250, $y-32, 97, 17)
                        Next
        Next
        $x = 10
        $s = $s + 1
Next
发表于 2010-1-30 18:31:05 | 显示全部楼层
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 447, 192, 124)
Local $p, $k = 40, $h = 0

For $a = 1 To 3
        $p = 20
        If $a > 1 Then $k += 120
        For $b = 1 To 10
                $p += 25
                $h += 1
                Assign("Checkbox" & $h, GUICtrlCreateCheckbox("Checkbox" & $h, $k, $p, 100, 17))
        Next
Next


GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd
发表于 2010-1-30 23:06:58 | 显示全部楼层
生成出来都是Checkbox1……8这个名称,怎么改?如:Checkbox1“改成”123,Checkbox2“改成”签名,Checkbox3“改成”sd123   

这个看来要读配置了。。。。
发表于 2010-1-31 02:22:17 | 显示全部楼层
批量生成控件但需指定(没规律、非随机)名称的话肯定需要先定义这些控件(显示名称)的变量(多的话最好用数组),变量的值可用读取ini文件或搜索指定目录等方式获取,然后再在循环中调用。
批量生成的控件还要在消息模式、事件模式中能响应,不然就只能光看看了(Pic、Icon 之类的倒无所谓)

p.s,我以前做了个udf,现在修改完善下~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-7-1 10:46 , Processed in 0.085640 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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