您所在的位置: 首页 > 开发 > 语言&工具 >

大文本报表显示自动折行问题

http://developer.51cto.com  2005-09-21 10:42  51cto.com整理  51cto.com  我要评论(0)
  • 摘要:由于只有MultiLineEidt能使大文本自动折行,所以需要将每行的数据都加到各自的mle中,这里假设浏览的行数是固定的,因此只需要知道显示的顶行行号
  • 标签:显示

由于只有MultiLineEidt能使大文本自动折行,所以需要将每行的数据都加到各自的mle中,这里假设浏览的行数是固定的,因此只需要知道显示的顶行行号即可实现:

dw_1.Object.DataWindow.FirstRowOnPage 属性正好可以解决这一问题.

实现方法:
在浏览窗口添加一个实例变量: string is_FirstRowOnPage = "" .用于记录顶行行号在浏览窗口加一个新的函数 integer wf_refreshtext() :

//假设dw_1为浏览数据窗口,mle_1, mle_2, mle_3为显示大文本的多行编辑框

string ls_row
long i, ll_FirstRowOnPagels_Row = dw_1.Object.DataWindow.FirstRowOnPage
If ls_Row = is_FirstRowOnPage then
return 0 //如果顶行行号未变,不用刷新
Else
is_FirstRowOnPage = ls_Row
ll_FirstRowOnPage = Long( ls_Row )
mle_1.text = dw_1.object.Intro_Pic[ll_FirstRowOnPage ]
mle_2.text = dw_1.object.Intro_Pic[ll_FirstRowOnPage + 1]
mle_3.text = dw_1.object.Intro_Pic[ll_FirstRowOnPage + 2]
return 1
End If

函数作好后,需要在可能改变数据窗口显示的地方调用,主要有两个地方:数据窗口的rowfocuschanged事件和scrollvertical事件

上面说的方法其折行以单词为单位,因此在显示中文时如果不含空格就不能折行如果只是作为显示的话,有一个变通的方法:

在需要显示大文本的地方放一个多行编辑框(MultiLineEdit):mle_1在含有大文本数据列的数据窗口控件的rowfocuschanged事件中加入如下脚本:

mle_1.text = this.object.Intro_Pic[currentrow]


Scala编程语言
大型网站架构技术专家谈
ASP.NET视频教程
SaaS时代的软件开发
ASP.NET MVC框架视频教程
 
 验证码: (点击刷新验证码)   匿名发表
  • 亮剑.NET. 图解C#开发实战

  • 作者:李新峰 付志涛 缪勇
  • 本书采用全新的图解思路,分3篇介绍使用微软C#语言开发实际应用程序的基本知识。第1篇包括10章,介绍了C#语言的基础知识,主要..
Copyright©2005-2009 51CTO.COM 版权所有