一次生成多个控件
本帖最后由 xg911335 于 2010-2-2 13:35 编辑如上图。有什么办法一次就可以添加多个Checkbox控件并排列,每个Checkbox控件的名字都不一样。手动添加好累。有什么办法吗?
另外,几个TabSheet标签内有什么方法可以设置一个相同变量?每个变量只在自己的TabSheet内有效?
如TabSheet1内
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
Local $Checkbox 这个变量只在TabSheet1下有效
如TabSheet2内
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
Local $Checkbox 这个变量只在TabSheet2下有效 我也想知道哟。。 本帖最后由 131738 于 2010-1-30 13:54 编辑
大概用三段循环吧,设置第一复选框的左端、顶部两个坐标变量
第一个循环时,Y 坐标累加,第二循环时,X 坐标加一个固定值 ,Y 坐标同第一循环累加,
第三循环同第二循环同样处理,只是加值不同。。。。
也可一次循环中加 IF 判断。。。。。
至于第二个问题暂时不知,无非也就是加 IF 加 AND 判断吧。。。。。。。。 有列子吗?给个列子研究一下。谢谢楼上的回复。 如3楼所示,动态生成控件并排列,无非就是FOR字段内循环就可以了,只是排列位置多加几个判断就行了,理解了怎么做,要什么例子啊。。
不知道楼主为何有变量属于TAB的想法,你想规范语法的话,就用二维数组好了,如$Checkbox 为第一个TAB的控件集合,$Checkbox为第二TAB的控件集合。。。。。。 本帖最后由 jybb001 于 2010-1-30 17:36 编辑
我写过,关键函数是这样的,好久了,当时也没写注释,发上来给你看看
程序可以自动根据配置文件生成不同个数的单选框,论坛好像不能上传图片了,发不了图片,
http://www.autoitx.com/forum.php?mod=viewthread&tid=11198&page=1&fromuid=7641265#pid113801Func cjgui()
$yz=88
$js=1
Dim $rishouru3,$rishouru4
For $i=1 To 9
$xz=40
For $i2=1 To 4
$Checkbox[$js]=GUICtrlCreateRadio($rishouru3&" "&$rishouru4&"元",$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 几个TabSheet标签内有什么方法可以设置一个相同变量
xg911335 发表于 2010-1-30 12:52 http://www.autoitx.com/images/common/back.gif
这个想法无非就是使批量创建的控件能够单独控制,给每个控件分配独立的变量不就行了~
$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 本帖最后由 jybb001 于 2010-1-30 17:42 编辑
回复 8# xg911335
要先把$Checkbox声明成数组
DIM $Checkbox 你要生成几个$Checkbox,你就要声明比你要生成生的个数多一个的数组$s = 1
$x = 10
$y = 16
Dim $Checkbox成;如果不想计算,数组就声明大一点就行了,没看懂你的循环,呵呵
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 #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 生成出来都是Checkbox1……8这个名称,怎么改?如:Checkbox1“改成”123,Checkbox2“改成”签名,Checkbox3“改成”sd123
这个看来要读配置了。。。。 批量生成控件但需指定(没规律、非随机)名称的话肯定需要先定义这些控件(显示名称)的变量(多的话最好用数组),变量的值可用读取ini文件或搜索指定目录等方式获取,然后再在循环中调用。
批量生成的控件还要在消息模式、事件模式中能响应,不然就只能光看看了(Pic、Icon 之类的倒无所谓)
p.s,我以前做了个udf,现在修改完善下~
页:
[1]