getcolumnname得不到列名

kevn 2009-12-01 05:11:03
w_main上的freedom数据窗口dw_1,dw_1上有很多列,w_main有按钮b_1,我想点击b_1得到当前列的名称,以便于用setitem()赋值,b_1下我这样写
aa = dw_2.getcolumnname()
messagebox("",aa)
dw_2.setitem(1,aa,this.text)
目前我用的是getcolumn()方法,可是我又想要dw_1上的列不可录入,我设置了taborder = 0 ,但这样用getcolumn就得不到列名了

控制列不能录入无非就是protected=1,或者taborder=0 这两个都不行,displayonly虽然可以得到,但是他仍有可录入
的样子似的,难看,请问该怎么解决,给点思路
...全文
352 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun1976 2009-12-02
  • 打赏
  • 举报
回复
最后三行删掉
sun1976 2009-12-02
  • 打赏
  • 举报
回复
long ll_col_cnt
long ll_col
string ls_col
string aa,ls_num,ls_mod
int m
ll_col_cnt=long(dw_2.Object.DataWindow.Column.Count)
ll_col=long(dw_2.tag)
if ll_col<=0 or ll_col>ll_col_cnt then
ll_col=1
end if
st_7.text = this.text
aa = Dw_2.Describe("#" + String(ll_col) + ".name")
dw_2.setitem(1,aa,this.text)
dw_2.tag=string(ll_col+1)
dw_2.setcolumn(ll_col+1)




If li_Col > 0 Then
ls_ColName =
End If
kevn 2009-12-02
  • 打赏
  • 举报
回复
在各列taborder不为0的情况下,b_1我是这样写的,好用,但是数据窗口可以录入,这个解决不了。
列名都是q_1,q_2,这样依次排的
string aa,ls_num,ls_mod
int m
st_7.text = this.text

aa = dw_2.getcolumnname()
dw_2.setitem(1,aa,this.text)

ls_num = replace(aa,1,2,'')
dw_2.setcolumn(integer(ls_num)+1)
kevn 2009-12-02
  • 打赏
  • 举报
回复
楼上几位的方法不行,我是想在点击b_1时候就对数据窗口中的列赋值,
赋值完后用setcolumn自动跳到下一列的,而不是先点击数据窗口
sun1976 2009-12-01
  • 打赏
  • 举报
回复
看错了
b_1我以为你放到dw里列上的呢

窗口按钮你只好做实例变量记录当前列,或者直接利用dw.tag,可放个静态文本显示当前列名
在dw的clicked里写
if lower(this.describe(dwo.name+".type"))='column' then
this.tag=dwo.name
st_msg.text=this.describe(dwo.name"_t.text")
end if

按钮

dw_2.setitem(1,dw_2.tag,this.text)
sun1976 2009-12-01
  • 打赏
  • 举报
回复
你直接获得按钮的名称,每个列的按钮不同就是了
button clicked事件
choose case dwo.name
case 'b_1'
ls_col='column_1'
case 'b_2'
ls_col='column_2'
case ……
end choose

dw_2.setitem(1,ls_col,this.text)

yingmu 2009-12-01
  • 打赏
  • 举报
回复
同上
birdw111 2009-12-01
  • 打赏
  • 举报
回复
没有焦点
eviler 2009-12-01
  • 打赏
  • 举报
回复
哦,是的

定义实例变量试试 ,在click事件中可以获得
wag_enu 2009-12-01
  • 打赏
  • 举报
回复
protected=1,或者taborder=0 后列是无法获得 focus 的,因此恐怕 getcolumn 也得不到列。
kevn 2009-12-01
  • 打赏
  • 举报
回复
楼上的,当该列taborder=0的时候,用getcolumn获取列也是获取不到的
eviler 2009-12-01
  • 打赏
  • 举报
回复
得到了列号 ,获取列名也是可以的
Integer li_Col
String ls_ColName,
li_Col = dw_1.GetColumn()
If li_Col > 0 Then
ls_ColName = Dw_1.Describe("#" + String(li_Col) + ".name")
End If

这样就获取列的名称了
kevn 2009-12-01
  • 打赏
  • 举报
回复
谁来给点思路

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧