找回密码
 加入
搜索
查看: 2226|回复: 8

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

  [复制链接]
发表于 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
发表于 2011-2-7 15:32:23 | 显示全部楼层
用读取按钮文本的方式 判断显示或隐藏,这种方法很不安全,万一外部程序修改了按钮上的文本,这种方法岂不是会有BUG?~
 楼主| 发表于 2011-2-7 15:41:05 | 显示全部楼层
但是有问题阿,我用了两个按钮,每个按钮代表一个操作
你给我的代码只有一个按钮,怎么执行两个操作呢?
读取按钮上的文本决定操作吗?
发表于 2011-2-7 17:07:26 | 显示全部楼层
本帖最后由 水木子 于 2011-2-7 18:11 编辑

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

点击一次就播放,再点一次就暂停,如此循环,是这样的吧!
 楼主| 发表于 2011-2-7 18:11:51 | 显示全部楼层
恩,对,我现在就是两个按钮互相显示和隐藏做的
不知道有没有更好的办法 ,实在不行就继续这样好了,效果还凑合
发表于 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
按照你开始说的做不是挺好
发表于 2011-2-9 22:02:00 | 显示全部楼层
回复 7# xayle


  这个不错 可以达到要求效果
 楼主| 发表于 2011-2-9 22:23:16 | 显示全部楼层
和我做的差不多,看来就只有这样的办法吧
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-2 14:31 , Processed in 0.090586 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表