两个INPUT框如何同步?
本帖最后由 lrbin50 于 2009-9-15 10:54 编辑如题,有两个INPUT框,INPUT1,INPUT2。我想在INPUT1框输入内容的同时,INPUT2框也同步显示输入的内容!请问如何做到?(同理,我想在INPUT1输入新内容时,更改COMBO中的内容如何做到。注意,当INPUT1获得焦点是不改变COMBO的值,当输入了任意字符时就改变COMBO的值) 本帖最后由 水木子 于 2009-9-14 19:12 编辑
呵呵!是这样吗?(超级傻瓜式):face (33):#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 300, 300, -1, -1)
$Input1 = GUICtrlCreateInput("", 80, 50, 150, 21)
$Input2 = GUICtrlCreateInput("", 80, 100, 150, 21)
GUISetState(@SW_SHOW)
AdlibEnable("yun", 100)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func yun()
$a = GUICtrlRead($Input1)
GUICtrlSetData($Input2,$a)
EndFunc 呵呵!前辈不要逗我啦!我那太土了。
抛砖引玉,还望前辈指教啊! 本帖最后由 lrbin50 于 2009-9-14 20:10 编辑
2楼的不错,可以解决问题,但这样的话,会不会程序占用太大,每隔100毫秒就要运行一次yun()函数。能不能有在Input1产生事件后才运行这个yun()函数,事件结束后(input1失去焦点后)就不运行了。希望高手来改进一下写法。 哪有土不土啊,达到目的、代码简单不就最好了,呵呵~ 我能想到的和你一样,要不就加在循环里,也差不多 我也是这样想的... 写成事件模式 不知道行不行
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=Form1.kxf
$Form1 = GUICreate("Form1", 374, 263, 192, 124)
$Input1 = GUICtrlCreateInput("Input1", 96, 32, 161, 21)
$Input2 = GUICtrlCreateInput("Input2", 96, 80, 161, 21)
$Button1 = GUICtrlCreateButton("close", 128, 152, 57, 25)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
$a = GUICtrlRead($Input1)
GUICtrlSetData($Input2,$a)
WEnd
Func Button1Click()
Exit
EndFunc 7# yejier
一样的可以~ 本帖最后由 水木子 于 2009-9-14 20:59 编辑
7# yejier
是啊!始终还是一开始就循环,4楼的意思好像是通过输入焦点来判断是否循环。 这个sleep没什么cpu占用,改成1毫秒cpu占用都几乎没啥区别 这个sleep没什么cpu占用,改成1毫秒cpu占用都几乎没啥区别
afan 发表于 2009-9-14 21:02 http://www.autoitx.com/images/common/back.gif
嗯!就是。:face (31): 最高效并且占用资源最少的写法应该还是注册WM_COMMAND消息,但代码会难懂了。 哦,楼上的大侠能不能弄一个代码来看看,尽量学吧,实在学不懂就用笨办法。唉。 不知道pusofalse 大虾是不是这个意思:#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 300, 300)
$Input1 = GUICtrlCreateInput("", 80, 50, 150, 21)
$Input2 = GUICtrlCreateInput("", 80, 100, 150, 21)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case - 3
Exit
EndSwitch
WEnd
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Switch $ilParam
Case GUICtrlGetHandle($Input1)
GUICtrlSetData($Input2, GUICtrlRead($Input1))
Case GUICtrlGetHandle($Input2)
GUICtrlSetData($Input1, GUICtrlRead($Input2))
EndSwitch
EndFunc ;==>WM_COMMAND 应该是,类似hover状态的处理
页:
[1]
2