主题:请教 gird 中 右键怎么用
xm7050432
[专家分:180] 发布于 2009-01-05 17:34:00
各位老师好,
比如我做了一个表单,主要是用来查询用,里面有一个gird用来显示查询的结果,
如果我选中某条结果,想通过点击鼠标右键直接打开一个新的表单,这个表单可以看清这条结果的详细信息。
我现在是暂时选中结果后,再点击另一个按钮,感觉比较麻烦。
按钮的代码大概如下:
SELECT lsjfcx $$ lsjfcx是grid的数据源,也是一个临时表。
jfdh=ALLTRIM(单号) $$ 单号是其中一个字段
SELECT XXX
LOCATE for 单号=jfdh
jjghjfd=RECNO()
DO form xxxxx.scx
请问如果想通过直接点击右键,难后选择打开xxxxx.scx.可否实现。谢谢。
回复列表 (共14个回复)
11 楼
xm7050432 [专家分:180] 发布于 2009-01-13 10:04:00
[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 楼
xm7050432 [专家分:180] 发布于 2009-01-13 10:11:00
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 楼
xm7050432 [专家分:180] 发布于 2009-01-13 10:12:00
我看了帮助,结合你的回复还是没看明白,你的ol是代表什么?this呢?
麻烦你在抽空回复下。谢谢。
14 楼
cbl518 [专家分:57140] 发布于 2009-01-13 11:53:00
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
我来回复