DEFINE POPUP 快捷菜单 SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR _med_undo OF 快捷菜单 PROMPT "撤消(\<U)" ;
KEY CTRL+Z, "Ctrl+Z"
DEFINE BAR _med_redo OF 快捷菜单 PROMPT "重做(\<D)" ;
KEY CTRL+R, "Ctrl+R"
DEFINE BAR 3 OF 快捷菜单 PROMPT "\-"
DEFINE BAR _med_cut OF 快捷菜单 PROMPT "剪切(\<T)" ;
KEY CTRL+X, "Ctrl+X"
DEFINE BAR _med_copy OF 快捷菜单 PROMPT "复制(\<C)" ;
KEY CTRL+C, "Ctrl+C"
DEFINE BAR _med_paste OF 快捷菜单 PROMPT "粘贴(\<P)" ;
KEY CTRL+V, "Ctrl+V" ;
SKIP FOR Len(_ClipText) = 0
DEFINE BAR _med_clear OF 快捷菜单 PROMPT "清除(\<A)"
DEFINE BAR 8 OF 快捷菜单 PROMPT "\-"
DEFINE BAR _med_slcta OF 快捷菜单 PROMPT "全选(\<L)" ;
KEY CTRL+A, "Ctrl+A"ACTIVATE POPUP 快捷菜单如果这些代码看不懂,留下你的邮箱,我可以发一个示例给你!

解决方案 »

  1.   

    你刚才给的代码只是一个菜单但还不能实现我所说的那些功能,
    如何才能实现呢?是不是要用到api剪贴板函数?如果要用到,怎么用?
      

  2.   


    系统变量_CLIPTEXT 就是剪贴板,不过只支持文本类型的_ClipText = "12345",Windows剪贴板中就是文本"12345"
    TextBox1.Value = _ClipText,就是把Windows剪贴板中内容粘贴到文本框中
      

  3.   

    我自己做的工具条只有这三个cut,copy,paste。剪切代码if type("_screen.activeform.activecontrol.seltext")<>"C"
    return
    endif
    if allt(_screen.activeform.activecontrol.seltext)==""
    return
    endif
    _cliptext=_screen.activeform.activecontrol.seltext 
    _screen.activeform.activecontrol.seltext =""复制代码
    if type("_screen.activeform.activecontrol.seltext")<>"C"
    return
    endif
    if allt(_screen.activeform.activecontrol.seltext)==""
    return
    endif
    _cliptext=_screen.activeform.activecontrol.seltext 粘贴代码
    if type("_screen.activeform.activecontrol.seltext")<>"C"
    return
    endif
    _screen.activeform.activecontrol.seltext=_cliptext
    _screen.activeform.activecontrol.setfocus()至于取消和重做,可以设一个数组做缓冲区,暂存更改,数组越大,可回退的就越多。就象数据库的事务处理一样。
      

  4.   

    上面的方法还是有些问题bug,请考虑一下。
      

  5.   

    应该检验当前焦点的父类(类)是否是textbox或其它可剪切的控件,
    当前焦点控件的parent可能是form,formset.容器等。
    我只考虑了这么多。请楼上指教。
      

  6.   

    To coolyylu(将来是我) :把你的那段代码拿出来看看吧,既然你在,你的东西,我就不好意思拿来抢分啦:)