主题:grid表格有行双击事件吗?
baotong88
[专家分:0] 发布于 2010-03-31 18:33:00
各位老师:
请问grid表格中显示的是临时表数据,grid有行双击事件吗?谢!!
回复列表 (共13个回复)
沙发
jianzho [专家分:7560] 发布于 2010-03-31 20:35:00
我也想知道答案
板凳
moz [专家分:37620] 发布于 2010-03-31 21:43:00
哦,不能把GRID固定下来吗?
把它的数据源改成生成的临时表名不就解决了吗?
这样子就可以写双击事件了。
之前好像听说过绑定事件,但我没尝试过,没有发言权。
3 楼
baotong88 [专家分:0] 发布于 2010-04-01 10:10:00
感谢moz教师!我的目的是在一对多表单中,双击grid的一行即可调用相关表单对该子记录进行修改和新增新记录(grid中显示的是临时表数据),这样操作好像比较方便,谢!
4 楼
wzxc [专家分:9440] 发布于 2010-04-01 11:59:00
主表跟子表建立关联后,子表会随主表记录指针的移动而移动。
5 楼
baotong88 [专家分:0] 发布于 2010-04-02 09:05:00
谢wzxc老师,不知grid有没有行双击事件?我想通过双击某行后调表一表单进行编缉操作能否达到?谢!
6 楼
wzxc [专家分:9440] 发布于 2010-04-02 11:05:00
1、在一表格中,在有记录处的双击事件是执行该单元格控件的双击事件。在没有记录处的是执行表格的双击事件。如果要达到在某一行的任何地方双击效果,可在每列的单元格控件写代码,如果代码很长,可另建一自定义方法与之绑定。与之这样还不如建一个命令按钮来得简单。
2、其实要达到你的要求,也可以在表单上建两个表格,分别与主表和子表绑定数据源。
7 楼
北京惬意 [专家分:1330] 发布于 2010-04-02 14:43:00
[quote]1、在一表格中,在有记录处的双击事件是执行该单元格控件的双击事件。在没有记录处的是执行表格的双击事件。......[/quote]
哈哈!又学一着,说不定什么时候就能用到。谢谢!
8 楼
baotong88 [专家分:0] 发布于 2010-04-04 12:25:00
谢wzxc老师,我现在就是用一命令实现的.只是感觉不很方便,我用别人的软件可实现可实现我说的郊果,可是VFP我没办法做到,谢谢回复!!!
9 楼
zxl931 [专家分:3420] 发布于 2010-04-04 20:50:00
1、如果Grid的AllowCellSelection设置为.T.,VFP8.0或9.0版本可以用BINDEVENT()将表格中的Text1的dblclick事件绑定到表单的一个自定义方法(假设abc),比如,表单中有一个Grid1,在表单的init中加入以下代码:
FOR i=1 TO thisform.Grid1.ColumnCount
BINDEVENT(thisform.Grid1.columns(i).text1,"dblclick",thisform,"abc")
ENDFOR
这样不论在哪一个Textbox中双击,均执行表单的“abc”方法,当然“abc”必须提前创建并加入你自己相应的代码。
如果不是VFP8.0或9.0版本,可以在每列的Text1对象的dblclick事件中直接写入代码,只不过麻烦一些。
2、如果Grid的AllowCellSelection设置为.F.,直接在Grid的dblclick中添加代码即可。
事例代码如下(将代码复制到命令窗口,选中这些代码回车可以执行看效果):
**************************
PUBLIC oform1
oform1=NEWOBJECT("form1")
oform1.Show
RETURN
DEFINE CLASS form1 AS form
Height = 324
Width = 397
DoCreate = .T.
AutoCenter = .T.
Caption = "Grid事件绑定-ZXL 2010.4.4"
Name = "Form1"
ADD OBJECT grid1 AS grid WITH ;
Anchor = 15, ;
DeleteMark = .F., ;
Height = 324, ;
Left = 0, ;
Top = 0, ;
Width = 396, ;
Name = "Grid1"
PROCEDURE abc
MESSAGEBOX("您双节了文本框!")
ENDPROC
PROCEDURE Init
CREATE CURSOR kkk(fld1 c(10), fld2 c(10) ,fld3 c(10))
INSERT INTO kkk VALUES ("sdfg","dfg","adfg")
INSERT INTO kkk VALUES ("sdfg","dfg","adfg")
INSERT INTO kkk VALUES ("sdfg","dfg","adfg")
GO TOP IN "kkk"
thisform.grid1.ColumnCount = 3
thisform.grid1.RecordSourceType = 1
thisform.grid1.RecordSource = "kkk"
FOR i=1 TO thisform.grid1.ColumnCount
BINDEVENT(thisform.grid1.columns(i).text1,"dblclick",thisform,"abc")
ENDFOR
ENDPROC
ENDDEFINE
*
*-- EndDefine: form1
**************************************************
10 楼
cbl518 [专家分:57140] 发布于 2010-04-05 11:06:00
你的需要的功能,能用单击事件完成吗?
我来回复