回 帖 发 新 帖 刷新版面

主题:双击Header时如何判断为哪一列?

[size=6][size=5][size=4][size=3]在GRID中焦点位于某一单元格时可通过ActiveColum判断当前的活动列数,但如果焦点在其它控件上直接双击栏标题Header时如何判断双击的是哪一列?
望各位不吝赐教][/size][/size][/size][/size]

回复列表 (共14个回复)

沙发

this.parent.name

板凳

OK!
非常感谢lbscyb!

3 楼

直接用THIS
关键是要做什么,能说详细一点吗?
编写一个方法,可以绑定到表格的每一列
在每一列的双击事件中可以用THIS.NAME返回双击的列的名称

4 楼

this.parent.name在固定的GRID中可以所在列数,但本人是在表单的INIT中建立的GRID,列数及每列对应的数据字段不固定,该如何实现?

5 楼

能否用笨办法:
既然已经知道列,再求该列绑定的数据源就可以知道字段。类似地,可以求出其它参数。

6 楼

感谢5楼的答复,可能是我没把问题讲清楚:
因作为数据源的表的字段数不固定,我是在表单的INIT中用ColumnCount=Fcount()确定GRID列数,各列数据源自动对应。现在想用BINDEVENT()为Grid各列的表头Header指定Dbclick执行代码----按所在列对应的字段排序,在双击Header后如何取得所在列的列号?

7 楼

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 楼

c_列名=this.parent.name
c_列号=VAL(CHRTRAN(c_列名,CHRTRAN(c_列名,"0123456789",""),""))

9 楼

用以上的《c_列号》对象序号可以获得:
?"当前表",JUSTSTEM(thisform.grid1.Columns[c_列号].ControlSource)
?"当前字段",FIELD(c_列号,当前表)
?"当前列的顺序号",thisform.grid1.Columns[c_列号].ColumnOrder

10 楼

谢谢cbl518!
但现在问题的关键是this.parent.name只能在具体对象中使用,而在表单的INIT中使用BINDEVENT()时如何能判断发生事件的GRID所在列或其对应的数据字段?

我来回复

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