回 帖 发 新 帖 刷新版面

主题:请教 gird 中 右键怎么用

各位老师好,

    比如我做了一个表单,主要是用来查询用,里面有一个gird用来显示查询的结果,
如果我选中某条结果,想通过点击鼠标右键直接打开一个新的表单,这个表单可以看清这条结果的详细信息。
   我现在是暂时选中结果后,再点击另一个按钮,感觉比较麻烦。

按钮的代码大概如下:

SELECT lsjfcx          $$ lsjfcx是grid的数据源,也是一个临时表。
jfdh=ALLTRIM(单号)     $$ 单号是其中一个字段


SELECT XXX 
LOCATE for 单号=jfdh

jjghjfd=RECNO()
DO form xxxxx.scx

请问如果想通过直接点击右键,难后选择打开xxxxx.scx.可否实现。谢谢。

回复列表 (共14个回复)

11 楼

[quote]在表格控件的 init 事件写入:
FOR each o1 in   this.Objects
    BINDEVENT(o1.text1,"RightClick",this, "RightClick")
ENDFOR[/quote]
cbl518老师您好,执行表单到时候提示找不到text1,还有BINDEVENT(o1.text1,"RightClick",this, "RightClick")这个命令我不懂,能不能帮忙解释下什么意思。谢谢。

12 楼

BINDEVENT(oEventSource, cEvent, oEventHandler, cDelegate [, nFlags])
参数
oEventSource 
指定事件源, 它必须是一个有效的 Visual FoxPro 对象。 
cEvent 
指定你想绑定的事件, 方法或属性的名字。 
oEventHandler 
指定对象, 必须是一个有效的 Visual FoxPro 对象, 处理事件。 
cDelegate 
指定方法, 或 "代理", 为 oEventHandler 处理事件。 
nFlags 
指定一个你可以为事件绑定操作设置的额外的位标记。 nFlags 位 描述 
0 00 执行事件代码前执行代理代码。(默认) 
1 01 执行代理代码前执行事件代码。  
2 10 当一个简单的方法调用发生时触发事件 (执行代理代码)。 
31 11 在代理前执行事件代码。当简单的方法调用发生时触发事件。 

1如果你用值为 3 的 nFlags, 由方法调用返回到事件的值不是那个事件, 而是调用最后的代理。事件在任何代理前被调用, 因此代理的返回值是堆栈上的保持值。因此, 建议代理方法包含与事件自己相同的返回值。在 Visual FoxPro 中, 一个没有明确 RETURN 语句的过程返回一个隐含的值真 (.T.)。这仅在假如事件被方法调用触发而不是通过一般的交互式模式或 RAISEEVENT() 调用时才是一个问题。

13 楼

我看了帮助,结合你的回复还是没看明白,你的ol是代表什么?this呢?
麻烦你在抽空回复下。谢谢。

14 楼

public o1
o1=newobject("oform1")
o1.show
return
define class oform1 as form
height = 278
width = 515
caption = "右击菜单"
add object grid1 as grid with ;
height = 253,left = 12,top = 12,width = 493,name = "grid1"
procedure load
create cursor tabl0 (l1 l,c2 c(82))
for i=1 to 48
  insert into tabl0 valu(.t.,chr(i%26+64)-"1234")
endfor
1

procedure grid1.rightclick
local otxt
otxt=sys(1270)
if atc("text",otxt.name)=0
    otxt=.f.
    return
endif
local nsellength
nsellength= otxt.sellength<=0
define popup shortcut shortcut relative from mrow(),mcol()
define bar _med_undo of shortcut prompt "撒消(\<u)" ;
key ctrl+z, "" skip for empty(_cliptext)
define bar 2 of shortcut prompt "\-"
define bar _med_cut of shortcut prompt "剪切(\<t)" ;
key ctrl+x, "" skip for nsellength
define bar _med_copy of shortcut prompt "复制(\<c)" ;
key ctrl+c, "" skip for nsellength
define bar _med_paste of shortcut prompt "粘贴(\<p)" ;
key ctrl+v, "" skip for empty(_cliptext)
define bar _med_clear of shortcut prompt "删除(\<d)" ;
key del, "" skip for nsellength
activate popup shortcut
deactivate popup shortcut
release popup shortcut
otxt=.f.
endproc
procedure grid1.init
for each o1 in   this.objects
    bindevent(o1.text1,"rightclick",this, "rightclick")
endfor
endproc
enddefine

我来回复

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