数据窗口列属性的问题

sy_qwp 2002-12-13 02:02:03
我想让每一行的同一列的具有不同的属性,比如第一行的这一列是edit,第二行的这一列是radiobuttons,不知能否实现?
...全文
17 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sy_qwp 2002-12-17
  • 打赏
  • 举报
回复
to realfool(风雪夜归人) :
真的不能实现吗?
to 上面的所有人
似乎大家没有明白我的意思。
我可以动态地改变某一列的编辑风格,但所有行的这一列就会都变成这个风格的了,而我想要的是不同行的同一列保持不同的编辑风格。如:第一行的这一列是edit,第二行的这一列是radiobuttons。
realfool 2002-12-16
  • 打赏
  • 举报
回复
背景色是没问题的,编辑风格好像不能变
泼盆凉水,不好意思;-)
ropriest 2002-12-16
  • 打赏
  • 举报
回复
学习!
dotnba 2002-12-14
  • 打赏
  • 举报
回复
同龙少爷
txchen 2002-12-14
  • 打赏
  • 举报
回复
gz
xwmhn 2002-12-14
  • 打赏
  • 举报
回复
学习,学习!
balloonman2002 2002-12-13
  • 打赏
  • 举报
回复
参考以下两篇文章:
一、
我想判断当前光标所在列号,由此使光标所在“单元格”背景色变化一下。
(注意:在datawindow的itemfocuschanged事件中可以用
dw_1.modify(dwo.background.color= "颜色值 ")改变。但是它改变
的是整个列的颜色。现在我要的是使光标所在的单元格改变颜色。)
我所要的是:
1, 光标在某行某列的单元格上时是一种颜色,光标离开此单元格,比如光标移动到左边或右边一列时,原来的单元格恢复本来颜色,而被移动到的一列单元格颜色又改变(注意:此时光标在同一行)
2, 当光标移动到下一行时,同一列之间只能是光表所在单元格变色,其他上下单元格保持原样
---------------------------------------------------------------

喔写了一段代码,经过测试应该没有问题:
在DW的ITEMFOCUSCHANGED事件,注意是ITEMFOCUSCHANGED事件:

//此处声明所用到的相关变量;
long ll_col,ll_pos,ll_cols
string modstring,ls_colnam,ls_color_1,ls_color_2
//此处给两个颜色变量赋值;
ls_color_1=string(RGB(0, 255, 0))
ls_color_2=string(rgb(255,0,0))
//此处获取当前列号和总列数;
ll_col=dw_1.getcolumn()
ll_cols=long(dw_1.Object.DataWindow.Column.Count)
//此处将所有列的BACKGROUND的MODE属性设为不透明;(注:下面两句其实可以放到FORM的OPEN事件或DW的CONSTRUCTOR里面执行,可以提高效率;)
for ll_pos=1 to ll_cols
ls_colnam=dw_1.Describe( "# "+string(ll_pos)+ ".Name ")
dw_1.Modify(ls_colnam+ ".Background.Mode='0' ")
next
//此处将所操作列的Background.Color属性设为带IF判断的表达式,而除此之外的各列的背景表达式均设为恒值;
for ll_pos=1 to ll_cols
ls_colnam=dw_1.Describe( "# "+string(ll_pos)+ ".Name ")
if ll_pos < > ll_col then
modstring=ls_colnam+ ".Background.Color=' "+ls_color_1+ "' "
else
modstring=ls_colnam+ ".Background.Color=' "+ls_color_1+ " ~t if (getrow()=currentrow(), "+ls_color_2+ ", "+ls_color_1+ ")' "
end if
//此处执行背景颜色修改;
dw_1.Modify(modstring)
//刷新显示新的背景颜色;
dw_1.setredraw(true)
next

最后的运行效果是当前ITEM为红色,其他均为绿色。

二、
如何将COLUMN的显示风格在EDIT、DDDW、DDLB之间相互切换:
(1)切换成DDDW:
dw_1.Modify("#1.dddw.Name='dddw_jg'")
dw_1.Modify("#1.dddw.DisplayColumn='name_jg'")
dw_1.Modify("#1.dddw.DataColumn='id_jg'")
(2)切换成DDLB:
dw_1.Modify("#1.ddlb.case='any'")
dw_1.Object.#1.Values ="red~t1/white~t2"
(3)切换成EDIT:
dw_1.Modify("#1.edit.case='any'")
dw_1.Modify("#1.edit.AutoSelect='Yes'")
(4)获取当前风格:
dw_1.Describe("#1.Edit.Style")
(5)如果还不行,可能得要如下操作:
dw_1.Modify("#1.dddw.Name=''")一下;
888888888888 2002-12-13
  • 打赏
  • 举报
回复
关注
llitcwl 2002-12-13
  • 打赏
  • 举报
回复
不知道
占个位听课。。。。
dongquestion 2002-12-13
  • 打赏
  • 举报
回复
能实现
ice2water 2002-12-13
  • 打赏
  • 举报
回复
在定义DW时在列上选属性,然后修改Edit即可。

609

社区成员

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

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