【已解决】事件模式遇到的奇怪现象, 求解
本帖最后由 chiron_shen 于 2013-7-5 10:57 编辑如下程序, 使用了事件模式
希望的运行结果:
1. 点 start 按钮
2.在出来的input name 输入框中输入字符
3.隐藏 input name 输入框 , 显示 input Number 输入框
可实际运行的结果是 input name 输入后 马上又回到 input name ,而没有出现预期的input Number 输入框 ,好像是再次调用了start函数
经过分析, 2个方法可以避免错误的结果,
1.将 $start 变量 下面的 GUICtrlSetBkColor(-1,0x00ff00) 屏蔽
2. 将$xing_ming_tilte 和 $xing_ming_input 放到 $input_number_title 和 $input_number前面 也就是 GUICtrlSetFont(-1,24) 下面
求大侠指点 问题出在哪里?#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#Include <GuiButton.au3>
Global $start,$input_number_title,$input_number,$xing_ming_tilte,$xing_ming_input
Opt("GUIOnEventMode", 1)
$main=GUICreate("GUESS",750,600)
$start=GUICtrlCreateButton("START",280,280,200,100)
GUICtrlSetBkColor(-1,0x00ff00)
GUICtrlSetFont(-1,24)
$input_number_title=GUICtrlCreateLabel("INPUT Number",100,80)
$input_number=GUICtrlCreateInput("",100,100,200,30)
$xing_ming_tilte=GUICtrlCreateLabel("INPUT NAME",100,80)
$xing_ming_input=GUICtrlCreateInput("",100,100,200,30)
GUISetState()
GUICTRLSetState($xing_ming_tilte,$GUI_HIDE)
GUICTRLSetState($xing_ming_input,$GUI_HIDE)
GUICTRLSetState($input_number_title,$GUI_HIDE)
GUICTRLSetState($input_number,$GUI_HIDE)
GUISetOnEvent($GUI_EVENT_CLOSE,'CLOSE')
GUIctrlSetOnEvent($start,'START')
GUIctrlSetOnEvent($xing_ming_input,'CHECK_NAME')
while 1
sleep(100)
WEnd
Func close()
Exit
EndFunc
Func START()
GUICTRLSetState($start,$GUI_NOFOCUS)
GUICTRLSetState($start,$GUI_HIDE)
GUICTRLSetState($xing_ming_tilte,$GUI_SHOW)
GUICTRLSetState($xing_ming_input,$GUI_SHOW)
GUICTRLSetState($xing_ming_input,$GUI_FOCUS)
GUICtrlSetData($xing_ming_input,"")
EndFunc
Func CHECK_NAME()
$xing_ming=GUICtrlRead($xing_ming_input)
WinSetTitle("GUESS","","GUESS---"&$xing_ming)
GUICTRLSetState($xing_ming_tilte,$GUI_HIDE)
GUICTRLSetState($xing_ming_input,$GUI_HIDE)
GUICTRLSetState($input_number_title,$GUI_SHOW)
GUICTRLSetState($input_number,$GUI_SHOW)
GUICTRLSetState($input_number,$GUI_FOCUS)
GUICtrlSetData($input_number,"")
EndFunc 貌似按钮被GUICtrlSetBkColor()后,不仅样式发生了改变,还会响应回车,所以确实是再次调用了start函数 貌似按钮被GUICtrlSetBkColor()后,不仅样式发生了改变,还会响应回车,所以确实是再次调用了start函数
afan 发表于 2013-6-24 22:23 http://www.autoitx.com/images/common/back.gif
果然是如此, 去掉设置背景色就正常了! 这应该算是一个BUG吧?
话说回来,楼主的代码太繁琐了,要实现这样输入功能其实只需要建立一个INPUT, 修改合适样式即可.
当然lable的文本也要对应的设置一下.
页:
[1]