【套打】套打进阶:数据行行高自适应(数据表格、简单数据表格)原创
金蝶云社区-_Tmp
_Tmp
184人赞赏了该文章 7660次浏览 未经作者许可,禁止转载编辑于2020年08月08日 14:18:24
封面

套打行高自适应包括数据表格行高自适应、布局表格行高自适应、简单数据表格行高自适应、布局表格嵌套的文本控件行高自适应


<0>前置名词定义

设计时高度:套打模板上对应控件的固定高度

image.png


运行时高度/输出高度:套打模板上对应控件的输出高度

剩余输出高度:当前控件位置距离可输出页面最下方边界的高度

image.png


<1>数据表格行高自适应

数据表格的行高自适应逻辑:当输出行时,强制要求剩余输出高度大于设计时高度,否则该行无法输出,以下图为例解析,"最终剩余高度"小于"设计时高度显示控件"(等价于小于数据行的设计时高度),所以该行不输出

image.png

结论

A、当剩余高度小于设计时高度,无法输出

B、当剩余高度大于设计时高度,可以输出该行,该行换不换页有内容是否能够放的下判断,如果放得下,那么不需要换页,如果放不下,那么需要该行需要申请换页,最终剩余高度仅用作输出每页出现尾行(当每页出现尾行高度为0时,数据行贴下边界,如下图)

image.png

image.png


推论

A:当一个数据表格数据行需要输出,他的输出高度≥数据行设计时高度



<2>嵌套控件

知识补充:行高自适应控件和纵向充满控件的区别

行高自适应控件就是(在父容器支持调整行高的情况下)行高能够根据自己的内容调整的控件;

而纵向充满的控件是根据其父容器控件扩充高度的控件。


A、文本控件:

我们将文本放入数据表格数据行,放入同样的内容,文本是否会扩充数据行行高

image.png

image.png

在当前输出行没有其他单元格内容输出不完的情况下,其高度等于设计时高度,对应嵌套的文本控件即使内容输出不完也无法扩充数据行行高,调整其输出高度,所以我们称嵌套在数据表格下的文本控件仅为普通的纵向充满控件(依赖父容器调整高度,自身无法调整)


B、图片控件:

image.png

image.png

在当前输出行没有其他单元格内容输出不完的情况下,其高度等于设计时高度,但是由于图片过大,将当前行高度扩充为图片大小,也就是说图片(在父容器行高自适应下)能够针对自身的输出内容进行调整,同时调整父容器高度,图片是强制的行高自适应控件

知识补充2

那么当图片比当前页面还要大,而且数据行设置了行高自适应后,会有什么效果呢?

对应会输出500页,当前图片在每一页都进行输出,同时由于剩余高度小于图片高度,导致其申请换页,换页后图片又重新输出(与文本不一样,文本是剩余内容继续输出,而图片是整个重新输出)

针对嵌套图片控件输出500页如何解决?

PT136657 7.3.1310.2

image.png


数据表格数据行增加属性图片不参与行高自适应计算,具体运行逻辑如下:

1)原有逻辑,图片为行高自适应控件,(纵向充满下,拖入控件后默认设置)在数据行行高自适应下数据行行高受图片高度影响

2)图片输出仅为图片控件本身大小,则只需要设置取消纵向充满

image.png

3)图片需要受数据行行高控制(对应数据行其他控件行高自适应),但是本身不干预数据行高度,则需要设置图片纵向充满,对应数据行设置图片不参与行高自适应计算

image.png


C、简单数据表格

经常有客户会有只设置简单数据表格行高自适应,不设置数据表格数据行的设置,下面以简单数据表格讲解下为什么。

如果不设置行高自适应,套打会认为这个控件的运行时高度和设计时高度是一致的,也就是不会内容扩充,即使其子控件放置什么内容(生活示例:我们有一个足够结实的瓶子,里面有细菌,细菌每天增大一倍,假设现在细菌占了瓶子的一半,那么多久后占满整个瓶子?瓶子两天后会撑大吗?)

所以如果遇到以下情况,为什么会输出这样子?瓶子盖子封紧了。怎么解决?打开瓶盖就好了。

image.png

如果需要简单数据表格行高能完全输出完整,则同时需要设置数据表格行高自适应(等价于放权给子控件调整行高度)

image.png



D、布局表格

不建议在数据表格中嵌套布局表格而且启用行高自适应,有实现缺陷,下个文章说明原因。


以上就是【套打】套打进阶:数据行行高自适应(数据表格、简单数据表格)的所有内容,如果觉得这篇文章很有意思,麻烦赞和收藏,你的支持和认可是我前进的动力。

赞 184