| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2881 人关注过本帖
标题:如何在VFP表中启用MOUSE的右键功能如复制粘贴等
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:2 
简单示例,参考修改一下应该能用。
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
** test.prg
CREATE CURSOR tt (f1 C(10), f2 C(10), f3 I, f4 I)
INSERT INTO tt VALUES ("ABC", "123456", 101, 111)
INSERT INTO tt VALUES ("DEF", "654321", 202, 222)
INSERT INTO tt VALUES ("GHI", "456123", 303, 333)
INSERT INTO tt VALUES ("JKL", "789456", 404, 444)
INSERT INTO tt VALUES ("NMO", "123789", 505, 555)
GO TOP 
of = CREATEOBJECT("form1")
of.show(1)
RETURN

DEFINE CLASS form1 AS Form
    AutoCenter = .T.
    TextValue = ""
        
    ADD OBJECT Grid1 AS Grid WITH width=this.Width 
        
    PROCEDURE Grid1.Init
        FOR EACH oColumn IN this.Columns
            BINDEVENT(oColumn.Text1, "RightClick",  thisform, "myRightClick")
        ENDFOR
    ENDPROC 
    
    PROCEDURE myRightClick
        IF (AEVENTS(aObj, 0) > 0)
            IF (PROPER(aObj[1].BaseClass) == "Textbox")
                myPop(thisform, aObj[1])
            ENDIF
        ENDIF
    ENDPROC
ENDDEFINE

FUNCTION myPop(oForm1, oText)
    DEFINE POPUP pop FROM MROW(),MCOL()
    DEFINE BAR 1 OF pop PROMPT '复制'
    DEFINE BAR 2 OF pop PROMPT '粘贴'
    ON SELECTION POPUP pop mySelpop(POPUP(), PROMPT(), oForm1, oText)
    ACTIVATE POPUP pop
    DEACTIVATE POPUP pop
    RELEASE POPUP pop
ENDFUNC

FUNCTION mySelpop(cPopup, cPrompt, oForm1, oText)
    DO CASE
        CASE cPrompt == "复制"
            oForm1.TextValue = oText.Value
        CASE cPrompt == "粘贴"
            IF !EMPTY(oForm1.TextValue)
                IF VARTYPE(oForm1.TextValue) == VARTYPE(oText.Value)
                    oText.Value = oForm1.TextValue
                ELSE
                    IF (VARTYPE(oText.Value) == "N")
                        oText.Value = VAL(oForm1.TextValue)
                    ELSE
                        oText.Value = TRANSFORM(oForm1.TextValue)
                    ENDIF
                ENDIF
            ENDIF
        OTHERWISE
    ENDCASE
    DEACTIVATE POPUP (cPopup)
    RELEASE POPUP (cPopup)
ENDFUNC
2016-05-04 21:02
hepingfly
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:195
专家分:657
注 册:2015-5-21
收藏
得分:2 
想简单一点的话,哪里需要右键鼠标复制黏贴等,你就把下列代码,复制到对应的那个控件的 rightclick 中。

 DEFINE POPUP popRight SHORTCUT RELATIVE FROM MROW(),MCOL()
 DEFINE BAR _med_cut OF popRight PROMPT "剪切(\<T)"
 DEFINE BAR _med_copy OF popRight PROMPT "复制(\<C)"
 DEFINE BAR _med_paste OF popRight PROMPT "粘贴(\<P)"
 DEFINE BAR _med_clear OF popRight PROMPT "删除(\<D)"
 ACTIVATE POPUP popRight

星际花草
2016-05-05 00:15
rxdlwr
Rank: 1
等 级:新手上路
帖 子:86
专家分:3
注 册:2016-3-17
收藏
得分:0 
在GIRD里无法实现,右键鼠标复制,
2016-05-05 10:56
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:10 
以下是引用rxdlwr在2016-5-5 10:56:37的发言:

在GIRD里无法实现,右键鼠标复制,


*1、在表单新建立1个事件,名称为 MyRightClick,内容如下
*thisform.MyRightClick
DEFINE POPUP popRight SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR _med_cut OF popRight PROMPT "剪切(\<T)"
DEFINE BAR _med_copy OF popRight PROMPT "复制(\<C)"
DEFINE BAR _med_paste OF popRight PROMPT "粘贴(\<P)"
DEFINE BAR _med_clear OF popRight PROMPT "删除(\<D)"
ACTIVATE POPUP popRight

*2、在表单拉出1个表格,名称为 Grid1,在 Grid1.init中
*thisform.grid1.init
CREATE CURSOR t1(姓名 c(10),地址 C(20),年龄 n(3))
INSERT INTO t1(姓名,地址,年龄) VALUES('张三','北京市XX路XX号',99)
INSERT INTO t1(姓名,地址,年龄) VALUES('李四','南京市XX路XX号',60)
this.RecordSourceType = 1
this.RecordSource =ALIAS()
*这段的作用是,绑定自己定义的事件 MyRightClick 到 Grid1的所有 Text1.RightClick中去。
FOR EACH oColumn IN this.Columns
    BINDEVENT(oColumn.Text1, "RightClick", thisform, "myRightClick")
ENDFOR

图片附件: 游客没有浏览图片的权限,请 登录注册
2016-05-05 11:23
rxdlwr
Rank: 1
等 级:新手上路
帖 子:86
专家分:3
注 册:2016-3-17
收藏
得分:0 
谢各位大神热心相助,
采用mywisdom88搞好了,虽然不能在表中操作,但也是一个变通可行的方案,解决了问题。
再谢mywisdom88一次!!!!!!!!
2016-05-05 11:45
rxdlwr
Rank: 1
等 级:新手上路
帖 子:86
专家分:3
注 册:2016-3-17
收藏
得分:0 
大神吹水佬的应该也可以,只是自已太浅了,要慢慢研究才行了,谢了!!!
2016-05-05 12:02
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用rxdlwr在2016-5-5 11:45:27的发言:

谢各位大神热心相助,
采用mywisdom88搞好了,虽然不能在表中操作,但也是一个变通可行的方案,解决了问题。
再谢mywisdom88一次!!!!!!!!

不要谢我,要谢吹斑竹的,我是根据他的代码,整理出来给你看的。。
2016-05-05 12:25
rxdlwr
Rank: 1
等 级:新手上路
帖 子:86
专家分:3
注 册:2016-3-17
收藏
得分:0 
果真如此,吹斑竹这一句:
PROCEDURE Grid1.Init
         FOR EACH oColumn IN this.Columns
             BINDEVENT(oColumn.Text1, "RightClick",  thisform, "myRightClick")
         ENDFOR
     ENDPROC
是关键
2016-05-05 12:36
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
在表单中是无法自定义事件的,但可以自定义属性及方法。

坚守VFP最后的阵地
2016-05-05 13:00
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用sdta在2016-5-5 13:00:31的发言:

在表单中是无法自定义事件的,但可以自定义属性及方法。

多谢矫正。是自定义方法 thisform.MyRightClick
2016-05-05 13:32
快速回复:如何在VFP表中启用MOUSE的右键功能如复制粘贴等
数据加载中...
 
   



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

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