点击循环创建的控件,触发不同指令
本帖最后由 qq4045728 于 2012-9-17 18:20 编辑#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
Dim $sq = 5 ;软件列表数量
$Form1 = GUICreate("列表", 481, 85 * $sq + 60, -1, -1)
$www = GUICtrlCreateLabel("点击查看更多软件", 170, 86 * $sq, 200, 17)
GUICtrlSetFont($www, 9.5, -1, 4)
GUICtrlSetColor($www, 0x0000FF)
GUICtrlSetCursor($www, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateLabel("上面仅列出本工具支持的软件.", 5, 86 * $sq, 165, 17)
GUICtrlSetColor(-1, 0xFF0000)
Local $systemtxt
dim $cc=0
For $l = 1 To $sq Step 1
If $l > 1 Then
$s = $l - 1
Dim $g = 85 * $s
Else
Dim $g = 0
EndIf
$txt = GUICtrlCreateLabel("xxxxxxxxxxx软件", 8, $g + 5, 303, 20)
GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
$txt = GUICtrlCreateLabel("大小:10MB", 16, 56 + $g, 77, 17)
$txt = GUICtrlCreateLabel("制作时间:2012.08.09", 104, 56 + $g, 126, 17)
$txt = GUICtrlCreateLabel("MD5:70728C6D7FE68CDD71322825DA1B641C", 16, 35 + $g, 281, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
ReDim $systemtxt[$cc + 1]
;~ ;载入控件ID到数组第一列
$systemtxt[$cc] = GUICtrlCreateLabel(">>点击查看说明", 240, 56 + $g, 88, 17)
;载入网址到数组第二列
$systemtxt[$cc] = IniRead("urllist.ini","url",$cc+1,"1")
GUICtrlSetFont($systemtxt[$cc], 9.5, -1, 4)
GUICtrlSetColor($systemtxt[$cc], 0x0000FF)
GUICtrlSetCursor($systemtxt[$cc], 0)
$txt = GUICtrlCreateButton("HTTP下载", 392, 32 + $g, 75, 17)
$txt = GUICtrlCreateButton("迅雷下载", 392, 56 + $g, 75, 17)
GUICtrlCreateLabel("", 0, 80 + $g, 485, 5, $SS_ETCHEDHORZ) ;;分割线
$cc=$cc+1
Next
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $www
ShellExecute("www.baidu.com")
;判断用户点击控件ID
Case$systemtxt To $systemtxt[$cc-1]
For $i=0 To $cc-1
;捕获被点击控件ID
If $systemtxt[$i]=$nMsg Then
;控件ID标示对应网址列表序号,实现对应点击
ShellExecute($systemtxt[$i])
;~ MsgBox(0,0,$i)
EndIf
Next
;~ ShellExecute("www.baidu.com/xxxxxx")
EndSwitch
WEnd问题:点击控件$systemtxt[$l] 弹出对应的网址。
hnjn大牛给的代码。 顺便分享一下给大家 case后面要跟指定的控件,这样做,必须指定索引的具体值 回复 2# netegg
不知道索引的具体值有几个。 case这里要怎么写?或者有其他办法吗?比如fun 回复 2# netegg
不知道索引的具体值有几个。 case这里要怎么写?或者有其他办法吗?比如fun 一看代码就知道楼主你刚开始学习,你得先从帮助那理解下那些简单的例子,才可以再尝试搞些自己的东西的啊!
控件变量想只用一个代表一堆,这实在是太没经过学习理解了! For $l = 1 To $sq Step 1
;这下面的数量循环,有什么意义?
;最后还不是只得到一个结果,之前的运算全被后面的冲没了!
If $l > 1 then
$s = $l - 1
Dim $g = 85 * $s
else
Dim $g = 0
endif
;这下面的控件变量$txt,你到底想给那个控件用?
$txt = GUICtrlCreateLabel("xxxxxxxxxxx软件", 8,$g +5, 303, 20)
GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
$txt = GUICtrlCreateLabel("大小:10MB", 16, 56 + $g, 77, 17)
$txt = GUICtrlCreateLabel("制作时间:2012.08.09", 104, 56 + $g, 126, 17)
$txt = GUICtrlCreateLabel("MD5:70728C6D7FE68CDD71322825DA1B641C", 16, 35 + $g, 281, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
;这个本来要动态赋值的控件数组,在这完全没动!
$systemtxt[$l] = GUICtrlCreateLabel(">>点击查看说明", 240, 56 + $g, 88, 17)
GUICtrlSetFont($systemtxt[$l],9.5, -1 ,4)
GUICtrlSetColor($systemtxt[$l], 0x0000FF)
GUICtrlSetCursor($systemtxt[$l],0)
;又是两个$txt!!!
$txt = GUICtrlCreateButton("HTTP下载", 392, 32 + $g, 75, 17)
$txt = GUICtrlCreateButton("迅雷下载", 392, 56 + $g, 75, 17) 本帖最后由 qq4045728 于 2012-9-16 20:16 编辑
回复 6# liongodmien
呵呵。你压根不知道我的思路。这还是只是一个样本。因为思路还没搞通。那么认真去写太浪费精力了。
帮忙下吧。我那个问题怎么解决 本帖最后由 netegg 于 2012-9-16 20:39 编辑
#include <GUIConstantsEx.au3>
Example()
Func Example()
Local $msg, $button
GUICreate("My GUI Button") ; 创建一个对话框,并居中显示
For $i = 1 To 3
$button[$i]= GUICtrlCreateButton($i, 100, 10 + $i * 20, 50, 16)
Next
GUISetState() ; 显示有两个按钮的对话框
; 运行界面,直到窗口被关闭
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $button
MsgBox(0,0,'button') ; 点击按钮 1
Case $msg = $button
MsgBox(0,0,'button') ; 点击按钮 2
Case $msg = $button
MsgBox(0,0,'button') ; 点击按钮 3
EndSelect
#cs
Switch $msg
Case$GUI_EVENT_CLOSE
ExitLoop
Case $button
MsgBox(0,0,'button') ; 点击按钮 1
Case $button
MsgBox(0,0,'button') ; 点击按钮 2
Case $button
MsgBox(0,0,'button') ; 点击按钮 3
#ce EndSelect
WEnd
EndFunc ;==>Example
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
Dim $sq = 5, $systemtxt[$sq], $g ;软件列表数量
$Form1 = GUICreate("列表", 481, 85 * $sq + 60, -1, -1)
$www = GUICtrlCreateLabel("点击查看更多软件", 170, 86 * $sq, 200, 17)
GUICtrlSetFont($www, 9.5, -1, 4)
GUICtrlSetColor($www, 0x0000FF)
GUICtrlSetCursor($www, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateLabel("上面仅列出本工具支持的软件.", 5, 86 * $sq, 165, 17)
GUICtrlSetColor(-1, 0xFF0000)
For $l = 1 To $sq
$s = $l - 1
$g = 85 * $s
GUICtrlCreateLabel("xxxxxxxxxxx软件", 8, $g + 5, 303, 20)
GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
GUICtrlCreateLabel("大小:10MB", 16, 56 + $g, 77, 17)
GUICtrlCreateLabel("制作时间:2012.08.09", 104, 56 + $g, 126, 17)
GUICtrlCreateLabel("MD5:70728C6D7FE68CDD71322825DA1B641C", 16, 35 + $g, 281, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$systemtxt[$s] = GUICtrlCreateLabel(">>点击查看说明", 240, 56 + $g, 88, 17)
GUICtrlSetFont(-1, 9.5, -1, 4)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetCursor(-1, 0)
$txt = GUICtrlCreateButton("HTTP下载", 392, 32 + $g, 75, 17)
$txt = GUICtrlCreateButton("迅雷下载", 392, 56 + $g, 75, 17)
GUICtrlCreateLabel("", 0, 80 + $g, 485, 5, $SS_ETCHEDHORZ) ;;分割线
Next
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $www
ShellExecute("www.baidu.com")
Case $systemtxt To $systemtxt[$sq - 1]
ShellExecute("www.baidu.com/xxxxxx")
EndSwitch
WEnd
太久没写东西了,都不大会写了 回复 7# qq4045728
就算只是个思路,也不能太乱啊,这会更加影响深入思考 回复 9# liongodmien
case ... to 好像不行,lz不是说要不同按钮执行不同命令吗 回复liongodmien
case ... to 好像不行,lz不是说要不同按钮执行不同命令吗
netegg 发表于 2012-9-16 20:52 http://www.autoitx.com/images/common/back.gif
我只是按楼主的代码改写的,既然他说我不明白他的思路(其实我也不想明白,因为我不搞这个东东{:face (197):}),所以就按他原来的改成可用就算了,如果要细分,在下一级再CASE 回复 12# liongodmien
{:face (280):} 其实我怀疑lz自己都不清楚到底要做什么 回复 13# netegg
我的问题是:$systemtxt[$l] = GUICtrlCreateLabel 这个文本控件数量不确定有多少个。然后点击$systemtxt[$l] = GUICtrlCreateLabel 控件触发不同指令 本帖最后由 netegg 于 2012-9-17 11:19 编辑
回复 14# qq4045728
控件数量不确定,那请问控件是怎么创建的
Dim $sq = 5 ;软件列表数量
....
For $l = 1 To $sq Step 1
...
按你的代码,请问这个怎么不确定了?
页:
[1]
2