一个grid数据窗口可以显示多少条数据?

liweiguocl2008 2008-11-23 08:29:44
窗口上有个数据窗口控件dw_1,关联的数据窗口对象d_1是grid类型的。

比如现在dw_1中可以显示5条数据,
我把dw_1的height调大,可以显示7条数据了。

那我如何在代码中求出dw_1可以显示多少条数据(也就是5条或7条)?
...全文
187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubocy 2008-11-24
  • 打赏
  • 举报
回复
测试后发现个有趣的事情,dw中数据大于显示行数时,dw每增加一条数据,垂直滚动条滚动框的高度也会增加,而且这个增加数与grid数据窗口对象的detail区高度相同。

那么用滚动框的高度除以detail区高度就是未显示数据的条数了,再用rowcount()减这个数就是dw的显示行数了。

代码:


string ls_max, ls_detail
long ll_count, ll_row, i, ll_tmp

dw_1.setredraw( false )
//确保出现滚动框
do while dw_1.object.datawindow.VerticalScrollMaximum = '0'
dw_1.insertrow(0)
i ++
loop
ll_count = dw_1.rowcount()
ls_max = dw_1.object.datawindow.VerticalScrollMaximum
ls_detail = dw_1.object.datawindow.detail.height
ll_tmp = long(ls_max)/long(ls_detail)
ll_row = ll_count - ll_tmp
if i > 0 then dw_1.rowsmove( ll_count - i + 1, ll_count, primary!, dw_1, 1, delete! )
dw_1.setredraw( true )

messagebox( '', '可显示行:' + string(ll_row) )
pcwe2002 2008-11-23
  • 打赏
  • 举报
回复
你自己通过dw.height和行高应该可以计算出来吧。(dw.height - 标题高)/数据行高
pcwe2002 2008-11-23
  • 打赏
  • 举报
回复
你自己通过dw.height和行高应该可以计算出来吧。(dw.height - 标题高)/数据行高
dawugui 2008-11-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liweiguocl2008 的回复:]
谢谢,调了分辨率,发现dw_1可显示的行数没变化。
[/Quote]
意思就是说,你的高度值是PB的单位,你转换成纵向的分辨率,然后计算一页面可以显示多少行?

比如:800*600的分辨率,你把行的高度值按上面的函数转化,然后看看转换你的DW的高度是多少个纵向的分辨率.这样就可以得出你一页可以显示多少行.

假设:
行高度值转换后为 5
dw高度值转换后为 100
去掉你dw中的抬头,结尾后为80
那么代表一页可以显示 80 / 5 = 16 行.

liweiguocl2008 2008-11-23
  • 打赏
  • 举报
回复
谢谢,调了分辨率,发现dw_1可显示的行数没变化。
dawugui 2008-11-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 liweiguocl2008 的帖子:]
窗口上有个数据窗口控件dw_1,关联的数据窗口对象d_1是grid类型的。

比如现在dw_1中可以显示5条数据,
我把dw_1的height调大,可以显示7条数据了。

那我如何在代码中求出dw_1可以显示多少条数据(也就是5条或7条)?
[/Quote]
你是指一个显示页面吗?这个显示器的分辨率有关.
PB的计算单位需要转换才能得到显示器的分辨率.
参考这个函数.

PixelsToUnits()
功 能:将像素值转换为PowerBuilder单位PBU。
语 法:PixelsToUnits ( pixels, type )
参 数:pixels:integer类型,指定要转换为PowerBuilder单位的像素数;
type:ConvertType枚举类型,指定按哪个方向进行转换。有效取值为:
XPixelsToUnits! -- 按水平方向转换像素;
YPixelsToUnits! -- 按垂直方向转换像素。
返回值:Integer。函数执行成功时返回pixels参数指定像素数按指定方向转换成的PowerBuilder单位数,发生错误时返回-1。如果任何参数的值为NULL,PixelsToUnits()函数返回NULL。
用 法:窗口中水平方向和垂直方向相同的像素数表示的距离并不相同。如果你使用水平方向和垂直方向相同的像素数绘制一个方框,那么你会看到,该方框不是正方形而是个矩形,而使用PBU计量的相同单位数将绘出正方形。因此,在进行单位转换时,需要指明按那么方向进行转换。
示 例:These statements convert 35 horizontal pixels to PowerBuilder units and set the variable Value equal to the converted value:
integer Value
Value = PixelsToUnits(35, XPixelsToUnits!)
liweiguocl2008 2008-11-23
  • 打赏
  • 举报
回复
测试了下,如果数据少与可显示的条数或者dw翻页后,得出的结果有问题。
javaxi 2008-11-23
  • 打赏
  • 举报
回复
<DW Control Name>.Describe("DataWindow.LastRowOnPage")

609

社区成员

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

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