7tenlboy 发表于 2023-3-18 17:46:04

【已解决】请问批量创建的case如何给每个case创建新的变量。

本帖最后由 7tenlboy 于 2023-3-20 16:22 编辑

GUICreate('', 220)
Local $Button, $i = 1
Local $mmm
Do
      $Button[$i] = GUICtrlCreateButton('Button ' & $i, 50, 5 + 40 * $i, 120, 25)
      $i += 1
Until $i = 9
GUISetState(@SW_SHOW)

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case -3
                        Exit
                Case $Button To $Button
                        MsgBox(0, '', GUICtrlRead($nMsg))

$mmm =$mmm+1

   MsgBox(0, '', $mmm)

      EndSwitch
WEnd



需求点击不同按钮实现不同变量,

3131210 发表于 2023-3-22 03:28:55

Global $msgMap[]
GUICreate('', 220)
Local $Button, $i = 1
Local $mmm
Do
        $Button[$i] = GUICtrlCreateButton('Button ' & $i, 50, 5 + 40 * $i, 120, 25)
        $msgMap[$Button[$i]] = '我是第' & $i & '个按钮'
        $i += 1
Until $i = 9
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                Case $Button To $Button
                        MsgBox(0, '', $msgMap[$nMsg])
        EndSwitch
WEnd

afan 发表于 2023-3-18 18:05:57

GUICreate('', 220)
Local $Button
Local $mmm
For $i = 1 To 8
        $Button[$i] = GUICtrlCreateButton('Button ' & $i, 50, 5 + 40 * $i, 120, 25)
Next
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                Case $Button To $Button
                        $mmm = $nMsg - 2
                        MsgBox(0, 'wh2' & $mmm, GUICtrlRead($nMsg))
        EndSwitch
WEnd

7tenlboy 发表于 2023-3-18 17:46:16

本帖最后由 7tenlboy 于 2023-3-18 17:48 编辑

这个是一种方法。但是不是理想的,手动打代码比较麻烦

GUICreate('', 220)
Local $Button, $i = 1
Local $mmm
Do
      $Button[$i] = GUICtrlCreateButton('Button ' & $i, 50, 5 + 40 * $i, 120, 25)
      $i += 1
Until $i = 9
GUISetState(@SW_SHOW)

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case -3
                        Exit
                Case $Button
                        MsgBox(0, '', GUICtrlRead($nMsg))

$mmm =1

   MsgBox(0, '', $mmm)


                   Case $Button
                        MsgBox(0, '', GUICtrlRead($nMsg))

$mmm =2

   MsgBox(0, '', $mmm)

      EndSwitch
WEnd

7tenlboy 发表于 2023-3-18 17:51:18

本帖最后由 7tenlboy 于 2023-3-18 17:55 编辑

这个也是一种方法。$nMsg不是可控的变量,结果也不是理想,






GUICreate('', 220)
Local $Button, $i = 1
Local $mmm
Do
      $Button[$i] = GUICtrlCreateButton('Button ' & $i, 50, 5 + 40 * $i, 120, 25)
      $i += 1
Until $i = 9
GUISetState(@SW_SHOW)

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case -3
                        Exit
                Case $Button To $Button
                        MsgBox(0, '', GUICtrlRead($nMsg))

      EndSwitch
WEnd



7tenlboy 发表于 2023-3-18 18:00:41

请问 如何根据按钮数量变量以实现点击$Button1 弹窗wh21 $Button2 弹窗 wh22,$Button3弹窗 wh23,$Button4弹窗 wh24,以此类推

7tenlboy 发表于 2023-3-18 18:15:28

afan 发表于 2023-3-18 18:05


很辛苦你来解答。请问还有没有不通过 GUIGetMsg() 的方法来增加变量呀。

zghwelcome 发表于 2023-3-18 18:24:33

句柄、坐标、控件内容 都可以

afan 发表于 2023-3-18 18:37:38

7tenlboy 发表于 2023-3-18 18:15
很辛苦你来解答。请问还有没有不通过 GUIGetMsg() 的方法来增加变量呀。

消息模式用 GUIGetMsg() 是最简单的,如果是事件模式则使用 @GUI_CtrlId
还有诸如查表的方法,字典、Map 之类,方法很多,看用途选用最简单合适的~
页: [1]
查看完整版本: 【已解决】请问批量创建的case如何给每个case创建新的变量。