qq4045728 发表于 2012-9-16 19:22:47

点击循环创建的控件,触发不同指令

本帖最后由 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大牛给的代码。 顺便分享一下给大家

netegg 发表于 2012-9-16 19:34:04

case后面要跟指定的控件,这样做,必须指定索引的具体值

qq4045728 发表于 2012-9-16 19:50:13

回复 2# netegg

不知道索引的具体值有几个。 case这里要怎么写?或者有其他办法吗?比如fun

qq4045728 发表于 2012-9-16 19:51:16

回复 2# netegg

不知道索引的具体值有几个。 case这里要怎么写?或者有其他办法吗?比如fun

liongodmien 发表于 2012-9-16 19:58:07

一看代码就知道楼主你刚开始学习,你得先从帮助那理解下那些简单的例子,才可以再尝试搞些自己的东西的啊!

控件变量想只用一个代表一堆,这实在是太没经过学习理解了!

liongodmien 发表于 2012-9-16 20:03:02

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:13:35

本帖最后由 qq4045728 于 2012-9-16 20:16 编辑

回复 6# liongodmien

呵呵。你压根不知道我的思路。这还是只是一个样本。因为思路还没搞通。那么认真去写太浪费精力了。
帮忙下吧。我那个问题怎么解决

netegg 发表于 2012-9-16 20:35:11

本帖最后由 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

liongodmien 发表于 2012-9-16 20:49:16

#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
太久没写东西了,都不大会写了

liongodmien 发表于 2012-9-16 20:50:29

回复 7# qq4045728


    就算只是个思路,也不能太乱啊,这会更加影响深入思考

netegg 发表于 2012-9-16 20:52:37

回复 9# liongodmien

case ... to 好像不行,lz不是说要不同按钮执行不同命令吗

liongodmien 发表于 2012-9-16 20:55:07

回复liongodmien

case ... to 好像不行,lz不是说要不同按钮执行不同命令吗
netegg 发表于 2012-9-16 20:52 http://www.autoitx.com/images/common/back.gif


    我只是按楼主的代码改写的,既然他说我不明白他的思路(其实我也不想明白,因为我不搞这个东东{:face (197):}),所以就按他原来的改成可用就算了,如果要细分,在下一级再CASE

netegg 发表于 2012-9-16 21:06:51

回复 12# liongodmien
{:face (280):} 其实我怀疑lz自己都不清楚到底要做什么

qq4045728 发表于 2012-9-17 10:54:00

回复 13# netegg


    我的问题是:$systemtxt[$l] = GUICtrlCreateLabel    这个文本控件数量不确定有多少个。然后点击$systemtxt[$l] = GUICtrlCreateLabel 控件触发不同指令

netegg 发表于 2012-9-17 11:10:36

本帖最后由 netegg 于 2012-9-17 11:19 编辑

回复 14# qq4045728
控件数量不确定,那请问控件是怎么创建的
Dim $sq = 5 ;软件列表数量
....
For $l = 1 To $sq Step 1
...
按你的代码,请问这个怎么不确定了?
页: [1] 2
查看完整版本: 点击循环创建的控件,触发不同指令