主题:双击Header时如何判断为哪一列?
fyyylyl
[专家分:8550] 发布于 2009-01-22 15:34:00
[size=6][size=5][size=4][size=3]在GRID中焦点位于某一单元格时可通过ActiveColum判断当前的活动列数,但如果焦点在其它控件上直接双击栏标题Header时如何判断双击的是哪一列?
望各位不吝赐教][/size][/size][/size][/size]
回复列表 (共14个回复)
沙发
lbscyb [专家分:4780] 发布于 2009-01-24 00:53:00
this.parent.name
板凳
fyyylyl [专家分:8550] 发布于 2009-01-24 11:40:00
OK!
非常感谢lbscyb!
3 楼
540072618 [专家分:50] 发布于 2009-01-27 14:47:00
直接用THIS
关键是要做什么,能说详细一点吗?
编写一个方法,可以绑定到表格的每一列
在每一列的双击事件中可以用THIS.NAME返回双击的列的名称
4 楼
fyyylyl [专家分:8550] 发布于 2009-01-29 18:13:00
this.parent.name在固定的GRID中可以所在列数,但本人是在表单的INIT中建立的GRID,列数及每列对应的数据字段不固定,该如何实现?
5 楼
0901chang [专家分:10660] 发布于 2009-02-01 23:41:00
能否用笨办法:
既然已经知道列,再求该列绑定的数据源就可以知道字段。类似地,可以求出其它参数。
6 楼
fyyylyl [专家分:8550] 发布于 2009-02-02 08:51:00
感谢5楼的答复,可能是我没把问题讲清楚:
因作为数据源的表的字段数不固定,我是在表单的INIT中用ColumnCount=Fcount()确定GRID列数,各列数据源自动对应。现在想用BINDEVENT()为Grid各列的表头Header指定Dbclick执行代码----按所在列对应的字段排序,在双击Header后如何取得所在列的列号?
7 楼
0901chang [专家分:10660] 发布于 2009-02-03 02:39:00
1楼的方法已经的到列名,问题已经解决
在Header的双击事件中
c_列名=this.parent.name
c_列号=c_列名
do whil val(c_列号)<=0.and.len(c_列号)>0
c_列号=subs(c_列号,2)
endd
n_列号=val(c_列号)
当前列数据源=thisform.grig?.&c_列名..ControlSource
tmp=at('.',当前列数据源)
当前表=left(当前列数据源,tmp-1)
当前字段=subs(当前列数据源,tmp+1)
8 楼
cbl518 [专家分:57140] 发布于 2009-02-03 07:43:00
c_列名=this.parent.name
c_列号=VAL(CHRTRAN(c_列名,CHRTRAN(c_列名,"0123456789",""),""))
9 楼
cbl518 [专家分:57140] 发布于 2009-02-03 07:59:00
用以上的《c_列号》对象序号可以获得:
?"当前表",JUSTSTEM(thisform.grid1.Columns[c_列号].ControlSource)
?"当前字段",FIELD(c_列号,当前表)
?"当前列的顺序号",thisform.grid1.Columns[c_列号].ColumnOrder
10 楼
fyyylyl [专家分:8550] 发布于 2009-02-03 10:58:00
谢谢cbl518!
但现在问题的关键是this.parent.name只能在具体对象中使用,而在表单的INIT中使用BINDEVENT()时如何能判断发生事件的GRID所在列或其对应的数据字段?
我来回复