dearmb 发表于 2011-2-7 14:53:34

两个按钮,同一时刻只显示一个,怎么能做到?(已解决)

本帖最后由 dearmb 于 2011-2-9 22:23 编辑

两个按钮,一个开始,一个结束
我现在的做法是,首先显示“开始”,隐藏“结束”
然后点击“开始”的时候,“开始”会被隐藏,“结束”会被显示
…………

现在是用
#Include <GuiButton.au3>
_GUICtrlButton_Show($hWnd[, $fShow = True])
作的,程序卡的时候会保持在,一个按钮隐藏,而另一个按钮没有显示出来的中间状态,效果不太好
有没有什么更好的办法?

南一 发表于 2011-2-7 15:07:15

只用一个按钮,然后设置按钮文字即可,在去读取按钮文本
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 287, 197, 192, 124)
$Button1 = GUICtrlCreateButton("开始", 40, 56, 201, 81)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
      Case $Button1
                        $T=GUICtrlRead($Button1)
                        If $T="开始" Then
                        GUICtrlSetData($Button1,"结束")
                Else
                        ;GUICtrlSetData($Button1,"开始")
                        MsgBox(0,0,"结束")
                        EndIf
                       
        EndSwitch
WEnd

pusofalse 发表于 2011-2-7 15:32:23

用读取按钮文本的方式 判断显示或隐藏,这种方法很不安全,万一外部程序修改了按钮上的文本,这种方法岂不是会有BUG?~

dearmb 发表于 2011-2-7 15:41:05

但是有问题阿,我用了两个按钮,每个按钮代表一个操作
你给我的代码只有一个按钮,怎么执行两个操作呢?
读取按钮上的文本决定操作吗?

水木子 发表于 2011-2-7 17:07:26

本帖最后由 水木子 于 2011-2-7 18:11 编辑

比如:类似咱们听歌、看电影的播放器,“播放”、“暂停”两个功能,不就是同一个按钮实现的吗!

点击一次就播放,再点一次就暂停,如此循环,是这样的吧!

dearmb 发表于 2011-2-7 18:11:51

恩,对,我现在就是两个按钮互相显示和隐藏做的
不知道有没有更好的办法 ,实在不行就继续这样好了,效果还凑合

xayle 发表于 2011-2-8 20:43:02


#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 287, 197, 192, 124)
$Button1 = GUICtrlCreateButton("开始", 40, 56, 201, 81)
$Button2 = GUICtrlCreateButton("结束", 40, 56, 201, 81)
GUICtrlSetState($Button2, $GUI_HIDE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
;~                         MsgBox(0, 0, "开始")
                        GUICtrlSetState($Button2, $GUI_SHOW)
                        GUICtrlSetState($Button1, $GUI_HIDE)
                Case $Button2
;~                         MsgBox(0, 0, "结束")
                        GUICtrlSetState($Button1, $GUI_SHOW)
                        GUICtrlSetState($Button2, $GUI_HIDE)
        EndSwitch
WEnd
按照你开始说的做不是挺好

likeping 发表于 2011-2-9 22:02:00

回复 7# xayle


这个不错 可以达到要求效果

dearmb 发表于 2011-2-9 22:23:16

和我做的差不多,看来就只有这样的办法吧
页: [1]
查看完整版本: 两个按钮,同一时刻只显示一个,怎么能做到?(已解决)