回 帖 发 新 帖 刷新版面

主题:复制与粘贴

如何在一个表单内自由的实现复制与粘贴呢,代码怎样写?

回复列表 (共9个回复)

沙发

_cliptext = "wq kwg kwd   "

然后你点左键,粘贴,你看看是什么?

板凳

我特别喜欢这个论坛,因为这里有你这样的高手,更是最热心的朋友。我vf起步到现在,一直有她的帮助,感谢向你一样的狐友。
我有一个表单集,里面有数个文本框,请问如何写一个代码使得其可以自由的复制与粘贴,向word软件一样。

3 楼

这里调用了windows的粘贴板,你也直接赋值

m.表单2.text4.valeu = = m.表单1.text1.value 


也可以用全局变量  方法有很多

4 楼

回二楼,
_cliptext = thisform.text1.value 
这样,粘贴板的内容就是表单中文本框的值啦,然后就可以粘贴啦啊?

5 楼

朋友,调用windows的粘贴板,怎样写代码?写在表单的什么地方?我搜了搜,若将代码写在每一个文本框的右銉,工作量会很大。

6 楼

你写到哪里并不重要,你只要知道,用
_cliptext = XXX能把内容放在粘贴板就行了,置于你想放在哪里,都可以,只要你认为合适
比如:你想在表单1.text1文本框失去焦点时粘贴板里有该文体框的内容,你可以
在表单.text1.Valid 里输入:
_cliptext = this.value 


你想在表单二的edit编辑框得到焦点时得到内容,你可在以
edit1.When 里输入
this.value = _cliptext 
也可以在windows的任何地方,用ctrl + v 来粘贴其内容

7 楼

也许我比较麻烦,请谅解!一个表单集有数个文本框,能不能向word那样,我想复制那一个词句,一个mouse右键,就可以自由的复制粘贴,而不用在每个文本框内写代码?
无法加分了,谢谢你的帮助。

8 楼

引用:    文本框,右键功能:怎样能激活文本框的右键的剪切/复制/粘贴功能?
我的表单有几十个文本框,我想让用户编辑时,可以用右键剪切/复制/粘贴,不知是不是通过设文本框的属性实现?

新建PRG文件MyRightClick.PRG:
DEFINE CLASS myhandler AS Session
   PROCEDURE MyRightClick
     Define POPUP EdtShort SHORTCUT RELATIVE FROM MROW(),MCOL()
     Define BAR _med_undo OF EdtShort PROMPT "撤消(\<U)" ;
       MESSAGE "撤消上一次命令或操作"
     Define BAR 3 OF EdtShort PROMPT "\-"
     Define BAR _med_cut OF EdtShort PROMPT "剪切(\<T)" ;
       SKIP FOR _screen.activeform.activecontrol.sellength = 0 or !EMPTY(_screen.activeform.activecontrol.passwordchar) ;
       MESSAGE "移去选定内容并将其放入剪贴板"
     Define BAR _med_copy OF EdtShort PROMPT "复制(\<C)" ;
       SKIP FOR _screen.activeform.activecontrol.sellength = 0 or !EMPTY(_screen.activeform.activecontrol.passwordchar) ;
       MESSAGE "将选定内容复制到剪贴板上"
    Define BAR _med_paste OF EdtShort PROMPT "粘贴(\<P)" ;
       SKIP FOR empty(_cliptext) ;
       MESSAGE "粘贴剪贴板上的内容"
    Define BAR _med_clear OF EdtShort PROMPT "删除(\<D)" ;
       SKIP FOR _screen.activeform.activecontrol.sellength = 0 ;
       MESSAGE "移去选定内容,并且不将其放到剪贴板上"
    Define BAR 8 OF EdtShort PROMPT "\-"
      Define BAR _med_slcta OF EdtShort PROMPT "全选(\<A)" ;
     MESSAGE "选定当前窗口中的所有文本或数据项" 
    
    Activate POPUP EdtShort
ENDDEFINE

在表单的init:
IF Thisform.ControlCount>0
   PUBLIC oHandler
   oHandler=NEWOBJECT("myhandler","prgrightclick.prg")
FOR i=1 TO Thisform.ControlCount
  IF UPPER(Thisform.Controls(i).Class)="TEXTBOX"
    BINDEVENT(Thisform.Controls(i),"RightClick",oHandler,"MyRightClick")  &&动态绑定,用了公用变量传递信息
  ENDIF   
ENDFOR 
ENDIF   

用上述代码后,为什么在我的表单集中不起作用呢?

9 楼

将下列代码放到mycopy.prg中:
PROCEDURE cpc
DEFINE POPUP cd1 FONT '宋体', 12 SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR _med_undo OF cd1 PROMPT "撤销(\<U)" 
DEFINE BAR _med_redo OF cd1 PROMPT "重做(\<D)" 
DEFINE BAR 3 OF cd1 PROMPT "\-"
DEFINE BAR _med_cut OF cd1 PROMPT "剪切(\<T)" 
DEFINE BAR _med_copy OF cd1 PROMPT "复制(\<C)" 
DEFINE BAR _med_paste OF cd1 PROMPT "粘贴(\<P)"  SKIP FOR EMPTY(_cliptext)
DEFINE BAR _med_clear OF cd1 PROMPT "删除(\<A)"
ACTIVATE POPUP cd1
ENDPROC 

在主程序中放入:
SET PROCEDURE TO mycopy

在每个需要右键弹出复制粘贴窗口的文本框、编辑框的RightClick事件中放入:
do cpc

我来回复

您尚未登录,请登录后再回复。点此登录或注册