Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650078
  • 博文数量: 137
  • 博客积分: 6189
  • 博客等级: 准将
  • 技术积分: 1559
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-15 16:39
文章分类

全部博文(137)

文章存档

2010年(3)

2009年(1)

2008年(49)

2007年(56)

2006年(28)

分类: WINDOWS

2007-09-13 08:22:09

在 Datawindow 中,

  • 若只选中列的 Auto Horz Scroll,键入的字符可以加到文本串中并始终维持一行,直到达到上限;
  • 若只选中列的 Auto Vert Scroll,键入的字符可以加到文本串中并会换行,直到达到上限;
  • 若都不选中,且高度不足以让文本多行显示的话,键入的字符只可达到控件的显示范围内的长度。

所以为实现多行显示要求:

必须不选中 Auto Horz Scroll,并且在 EditChanged 事件中自动调整列高。建议不选中 Auto Vert Scroll,以避免打印与显示不一致的问题。

注:只有 string 型的文本才可以换行。

最终方案:

Object.DataWindow.Detail.Height.AutoSize = 'yes'

Object..Height.AutoSize = 'yes'

Object..Edit.AutoVScroll = 'yes' //用于可编辑列

即可实现自动换行功能。

对于要实现实时的自动换行则需如下脚本:

event editChanged;
/***************************************************************************
解决自动换行时,新行不能实时显示的问题。
通过加上多个条件限制,使得 acceptText() 对有效性验证的影响最小
***************************************************************************/
try
    if Object.DataWindow.Detail.Height.AutoSize = "yes" &
    and dwo.type = "column" &
    and dwo.Edit.AutoVScroll = "yes" &
    and left(dwo.coltype, 4) = "char" then
        acceptText()
    end if
catch (runtimeError err)
end try

阅读(2578) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~