高手救我啊,grid表格中多行显示及打印的问题,非常典型!!!

longqiang 2002-03-14 09:09:38
在grid型表格中,有个别子段可能需要多行显示,比如:

序号 客户需求类型 客户需求内容描述 计划工作日 备注


在上表中,客户需求内容描述和备注两个字段就可能有多行的情况,
要求是我在编辑录入的时候要象word中那样,随着内容的增加,单元格高度自动调整
也就是,在编辑录入状态就能很清晰的看到输入的内容,
并能够将该grid嵌入到报表中,打印出来。
帮我看看吧,找一种最好的解决方案,Thanks in advanced!
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
longqiang 2002-03-14
  • 打赏
  • 举报
回复
我要去看!
killerdanny 2002-03-14
  • 打赏
  • 举报
回复
http://person.zj.cninfo.net/~yhaiyan/technology/pb/pb167.htm

看看,会有启发的
zqllyh 2002-03-14
  • 打赏
  • 举报
回复
抄个函数给你
//函数名:f_wordwrap
//参数1:as_text 要被处理的正文
//参数2:ai_charincol 一行放多少个字符(不包括回车)
//返回:as_tex 处理过的行

int i,li_len,j,k,l,li_totalrow
char lch_char,lch_next
string ls_wrappedtext,ls_next,ls_prev,ls_string

li_len = len(as_text)
j=0 //记ASCII大于127的字符个数
k=0 //记每一行的字符数
l =1 //每一行起始字符在正文中的位置
li_totalrow = 0
ls_wrappedtext = ""

for i=1 to li_len
lch_char = mid(as_text,i,1)
if asc(lch_char) > 127 then
j++
k++
else
if lch_char = '~r' then
li_totalrow++
k++
ls_wrappedtext += mid(as_text,l,k)
j = 0
l += k
k =0
elseif lch_char = '~n' then //新行
k++
ls_wrappedtext += mid(as_text,l,k)
l +=k
k --
else
k++
end if
end if

if k >= ai_charincol then//如一行已超过最大长度,则自动折行
lch_next = mid(as_text,i+1,1)
ls_next = mid(as_text,i+1,2)
ls_prev = mid(as_text,i,2)

if lch_next = '~r' or lch_next = '~n' then
continue
elseif lch_next = '.' or lch_next =',' or lch_next ='?' or lch_next ='!' &
or lch_next =')' or lch_next =']' or lch_next ='}' or lch_next =';' &
or lch_next =':' or lch_next ='~'' or lch_next ='~"' then

if i <> li_len -1 then
continue
else
exit
end if

elseif ls_prev = ',' or ls_prev ='。' or ls_prev = '?' &
or ls_prev = '!' or ls_prev = '”' or ls_prev ='’' or &
ls_prev =')' or ls_prev = ';' or ls_prev = ':' or ls_prev = '、' then

if i <> li_len -1 then
continue
else
exit
end if
elseif ls_next = ',' or ls_next ='。' or ls_next = '?' &
or ls_next = '!' or ls_next = '”' or ls_next ='’' or &
ls_next =')' or ls_next = ';' or ls_next = ':' or ls_next = '、' then

if i <> li_len -2 then
j++
i++
k++
continue
else
exit
end if
else

if mod(j,2) = 0 then
ls_wrappedtext = ls_wrappedtext + mid(as_text,l,k) + '~r~n'
else
ls_string = mid(as_text,l,k -1)
ls_wrappedtext = ls_wrappedtext + mid(as_text,l,k -1) + '~r~n'
i --
k --
end if

j = 0
l += k
k = 0
li_totalrow ++
end if
end if
next

ls_wrappedtext = ls_wrappedtext + mid(as_text,l)
as_text = ls_wrappedtext
li_totalrow ++
return ls_wrappedtext
xjbs 2002-03-14
  • 打赏
  • 举报
回复
关注,,
学习学习,,
longqiang 2002-03-14
  • 打赏
  • 举报
回复
大多数情况下"客户需求内容描述"这一列的行数是不固定的,上面的办法能够让每一行都根据实际情况确定高度,还是会因为有一条记录内容多,迫使每一行的高度都变得很大呢?我先试试!
zzhhgn 2002-03-14
  • 打赏
  • 举报
回复
把那两个字段的DETAIL的EDIT属性中的Auto_vert_scroll和vert_scroll_bar属性打上构即可!

401

社区成员

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

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