如何在数据窗口中做到这样的内容呢?

paul9137 2010-11-02 11:24:01
看了canyon1982的贴子
http://topic.csdn.net/u/20090727/15/e080be8e-894a-4bf0-8b2c-fc1dcd7095de.html
特喜欢这个界面

可是如何做出的吗?很困惑,界面方面很少资料可以查。有人能指点下我吗?这样的界面是如何设计的呢?
给个思路吧,太想学了
...全文
91 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
184270428 2010-11-03
  • 打赏
  • 举报
回复
这个N-UP格试可以做出来。

paul9137 2010-11-03
  • 打赏
  • 举报
回复
啊呀,老大,不好意思,我是要给你分的,给错了。
汗死,对不起啊
paul9137 2010-11-03
  • 打赏
  • 举报
回复
谢谢,结帖了
gui41021 2010-11-03
  • 打赏
  • 举报
回复
/*-----------------------------------------------------------------------------------
函数功能:指定某行某列的属性值(字体、背景、颜色等)

参数:
dw 数据窗口名
args_properties (text: 改变字体颜色; background: 背景色)
args_type 类型(value:指通过值确定行; row:指通过行号直接确定)
args_col[] 列名或者列号
args_info[] 行号及对应颜色数组



返回值:无

注: 1. 由于二维数组无法动态声明, 因此用一维数组代替, 通过程序处理。
因此要求传入到info数组的数据必须是以下格式:

{'行号1','颜色','行号2','颜色'}
2 实现修改字段中已经设置表达式的情况。

----------------------------------------------------------------------------------*/

//如果未传入值,则返回
IF UpperBound(args_col) <= 0 THEN
RETURN
END IF

Integer i, j
String ls_colname, ls_properties, ls_old_value
String ls_head, ls_mid, ls_tail, ls_condition
String ls_value, ls_color
//----------
String ls_sign
Boolean lb_sign
//------------------------


FOR i = 1 TO UpperBound( args_col )
//取列号
IF IsNumber( args_col[i] ) THEN
ls_colname = "#" + String( args_col[i] )
ELSE
ls_colname = args_col[i]
END IF

//修改的属性(这里大家可以自己扩展属性)
CHOOSE CASE args_properties
CASE "text"
ls_properties = "color"

CASE "background"
dw.modify( ls_colname + ".background.mode = '0' " )
ls_properties = "background.color"

END CHOOSE

//去改列的表达式
ls_old_value = dw.Describe( ls_colname + "." + ls_properties )

//=========================================================2004-05-14修改
//取出的值中若含有("),就说明有表达式,或者初始值,
//而在重建表达式时,有这两个"在是不行的,所以要去除。
IF Pos(ls_old_value, '"') <> 0 THEN
ls_old_value = Right(ls_old_value, Len(ls_old_value) - Pos(ls_old_value, "~t"))
ls_old_value = Left( ls_old_value, Len(ls_old_value) - Pos(ls_old_value, "~t") - 1 ) //去掉最后的引号
END IF
//=====================================================================

//根据什么确定行
CHOOSE CASE args_type
CASE "value"
ls_head = "'0~tcase(" + ls_colname +" "

CASE "row"
ls_head = "'0~tcase(getrow() "
END CHOOSE


FOR j = 1 TO UpperBound( args_info ) STEP 2
ls_value = args_info[j] //行号或者改单元格的值
ls_color = args_info[j+1] //取颜色

ls_mid = ls_mid + " when " + ls_value + " then " + ls_color
NEXT

ls_tail = " else " + ls_old_value + ")'" //结尾

//组合成表达式中的条件
ls_condition = ls_colname + "." + ls_properties + "="
ls_condition = ls_condition + ls_head + ls_mid + ls_tail
//messagebox("abc",ls_condition)
//执行
dw.Modify( ls_condition )

NEXT
newease 2010-11-03
  • 打赏
  • 举报
回复
你可以加一个背景图片的字段,根据不同的值显示不同的图片,然后将字段放在其它字段下面,就可以形成不同的背景图
paul9137 2010-11-03
  • 打赏
  • 举报
回复
关键是背景啊,每病床的背景与DataWindow的背景不同,这个是怎么搞的呢?
3楼说的就是这个,数据是可以多行的,背景我只能做到一个呀
zxssy1 2010-11-03
  • 打赏
  • 举报
回复
厉害,学习了
newease 2010-11-03
  • 打赏
  • 举报
回复


pb 实现仿BS界面 dw菜单 powerbuild

http://download.csdn.net/source/2536979

参考一下应该就可以实现
newease 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zxssy1 的回复:]
厉害,学习了
[/Quote]

看来这样的贴子能得高分,学习了,呵呵
paul9137 2010-11-03
  • 打赏
  • 举报
回复
N-UP可以做出这样的?
我做出的只是一行只有一行数数,做不到同行多组内容。。向老师学习,给点说明吧
zlf19810306 2010-11-02
  • 打赏
  • 举报
回复
自定义一个可视化的用户对象,让后用openuserobject函数做到窗口里去。其他的就是调整位置了,插入图片等等了

609

社区成员

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

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