关于数据窗口背景色的问题

handi 2002-11-20 05:51:10
以前问过一次,可是没人理解我的意思,是这样的,
我希望把第n行第m列的那个单元格的背景颜色变成红色,
同时把第a行b列的那个格变成绿色。 应该怎么办呢?
不是变一行或者一列。
是script动态变的 。
谢谢大家。
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
888888888888 2002-11-20
  • 打赏
  • 举报
回复
去看看把
balloonman2002 2002-11-20
  • 打赏
  • 举报
回复
不好意思,是见:
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=3884
balloonman2002 2002-11-20
  • 打赏
  • 举报
回复
这个问题我答过的,见:

http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=3877

我想判断当前光标所在列号,由此使光标所在“单元格”背景色变化一下。
(注意:在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为红色,其他均为绿色。
a2000 2002-11-20
  • 打赏
  • 举报
回复

可以用函数
1、定义全局函数如f_is_colorrow(as_col long ,as_row long)
(1)、功能:返回行、列所对应行的颜色值
(2)、输入入参数为当前行,列
(3)、函数返回值。0:不变色,其余: 颜色值
(4)、函数实现:变色情况较少:定义一变色行、列的全局数组,将变色行、列引入到数组中,判断输入参数行列是否在其中。变色情况较多:可定义一全局DATASTORE,将变色行、列引入到数组中,判断输入参数行列是否在其中。在其中则返回应修改的颜色值。
2、在数据窗品的字段的背景色表大式中输入如下脚本
if (f_is_colorrow(字段的列数(每列不同) ,getrow())=0,原颜色值,f_is_colorrow(字段的列数(每列不同) ,getrow()))
3、在程序中动态修改全局数组或全局datastore
79cy 2002-11-20
  • 打赏
  • 举报
回复
在数据窗口的每一列中加上判断语句应该可以吧,比如IF。。。。 ,**,**

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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