标题:关于焦点返回文本框的问题
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
在lostfocus里处理完事务后发个异步消息,在消息处理过程执行text1.setfocus应该可以
2020-07-25 09:05
yuantao100
Rank: 2
等 级:论坛游民
帖 子:61
专家分:16
注 册:2012-7-5
得分:0 
以下是引用吹水佬在2020-7-25 09:05:14的发言:

在lostfocus里处理完事务后发个异步消息,在消息处理过程执行text1.setfocus应该可以

好的,那我试试。。
2020-07-25 10:52
瓜瓜1990
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:125
专家分:699
注 册:2020-2-25
得分:0 
回复 6楼 mywisdom88
valid事件里根据鼠标点击的位置判断
IF MROW(thisform.Name,3)#-1 and Mcol(thisform.Name,3)#-1
    RETURN 0
endif
但是表单重新激活时,如果直接点其他可以获得焦点的控件,text就可能失去焦点.

piu~piu~
2020-07-25 15:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
DECLARE LONG PostMessage IN User32 LONG, LONG, LONG, LONG
#DEFINE MY_MSG  0x401
of = CREATEOBJECT("form1")
of.show(1)
RETURN

DEFINE CLASS form1 as Form
    ADD OBJECT text1 as textbox WITH left=10,top=10,SelectOnEntry=1
    ADD OBJECT text2 as textbox WITH left=10,top=40
    PROCEDURE init
        BINDEVENT(this.hWnd, MY_MSG, this, "myMsg")
    ENDPROC
    PROCEDURE myMsg(hWnd, uMsg, wParam, lParam)
        this.text1.setfocus
    ENDPROC
    PROCEDURE text1.lostfocus
        thisform.text2.value = thisform.text1.value
        PostMessage(thisform.hWnd, MY_MSG, 0, 0)
    ENDPROC
ENDDEFINE
2020-07-25 16:14
yuantao100
Rank: 2
等 级:论坛游民
帖 子:61
专家分:16
注 册:2012-7-5
得分:0 
以下是引用吹水佬在2020-7-25 16:14:05的发言:

DECLARE LONG PostMessage IN User32 LONG, LONG, LONG, LONG
#DEFINE MY_MSG  0x401
of = CREATEOBJECT("form1")
of.show(1)
RETURN

DEFINE CLASS form1 as Form
    ADD OBJECT text1 as textbox WITH left=10,top=10,SelectOnEntry=1
    ADD OBJECT text2 as textbox WITH left=10,top=40
    PROCEDURE init
        BINDEVENT(this.hWnd, MY_MSG, this, "myMsg")
    ENDPROC
    PROCEDURE myMsg(hWnd, uMsg, wParam, lParam)
        this.text1.setfocus
    ENDPROC
    PROCEDURE text1.lostfocus
        thisform.text2.value = thisform.text1.value
        PostMessage(thisform.hWnd, MY_MSG, 0, 0)
    ENDPROC
ENDDEFINE



呃,大佬,我再问个题外的问题,我用modi form做的表单,有没有办法把它变成像您这样的PRG程序?
2020-07-25 18:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
类浏览器中转换

[此贴子已经被作者于2020-7-25 18:32编辑过]


坚守VFP最后的阵地
2020-07-25 18:30
yuantao100
Rank: 2
等 级:论坛游民
帖 子:61
专家分:16
注 册:2012-7-5
得分:0 
我去试试
2020-07-25 18:57
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 15楼 yuantao100
静态设计form一样
在表单设计器自定义方法myMsg(菜单--表单--新建方法程序)
2020-07-25 19:52
yuantao100
Rank: 2
等 级:论坛游民
帖 子:61
专家分:16
注 册:2012-7-5
得分:0 
以下是引用吹水佬在2020-7-25 19:52:29的发言:

静态设计form一样
在表单设计器自定义方法myMsg(菜单--表单--新建方法程序)


OK! 谢过大侠!!
2020-07-25 20:03
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
回复 14楼 吹水佬
* 改为下面,将有其他问题
* 测试时,先不要在Text1输入数据,在Text2或者Text3中输入数据,然后再回来Text1输入数据
* 我的测试结果,Text2,Text3会看不见了.
DECLARE LONG PostMessage IN User32 LONG, LONG, LONG, LONG
#DEFINE MY_MSG  0x401
of = CREATEOBJECT("form1")
of.show(1)
RETURN

DEFINE CLASS form1 as Form
    ADD OBJECT text1 as textbox WITH left=10,top=10,SelectOnEntry=1
    ADD OBJECT text2 as textbox WITH left=10,top=40
    ADD OBJECT text2 as textbox WITH left=10,top=70 &&增加1个
    PROCEDURE init
        BINDEVENT(this.hWnd, MY_MSG, this, "myMsg")
    ENDPROC
    PROCEDURE myMsg(hWnd, uMsg, wParam, lParam)
        this.text1.setfocus
    ENDPROC
    PROCEDURE text1.lostfocus
*       thisform.text2.value = thisform.text1.value
        PostMessage(thisform.hWnd, MY_MSG, 0, 0)
    ENDPROC
ENDDEFINE
2020-07-25 23:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502619-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.222271 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved