| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3947 人关注过本帖
标题:关于焦点返回文本框的问题
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册: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
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏(1)
得分: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
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册: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
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册: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
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册: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
快速回复:关于焦点返回文本框的问题
数据加载中...
 
   



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

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