我有大约640个不同长度的文本行,可以在数据网格和单行视图中查看。在单行视图中,我想调整文本行的字体大小,使其
完全适合文字字段
的最大磅值为24,最小点大小为10(我已在文本字段中为其设置了自定义属性)。
我在单行查看卡中使用以下代码:
on resizeText
## Check if the text fits in the field
put the textSize of fld "foneline" into tTextSize
if the formattedHeight of fld "foneline" > the height of fld "foneline" then
## Make the text smaller until it fits
repeat until the formattedHeight of fld "foneline" <= the height of fld "foneline"
subtract 1 from tTextSize
## Check that the text size is not less that the minimum size
if tTextSize >= the cMinimumTextSize of fld "foneline" then
set the textSize of fld "foneline" to tTextSize
else
exit repeat
end if
end repeat
else if the formattedHeight of fld "foneline" < the height of fld "foneline" then
## Make the text as large as possible
repeat until the formattedHeight of fld "foneline" >= the height of fld "foneline"
add 1 to tTextSize
## Check that the text size is not bigger that the maximum size
if tTextSize<= the cMaximumTextSize of fld "foneline" then
set the textSize of fld "foneline" to tTextSize
else
exit repeat
end if
end repeat
end if
end resizeText
和该卡上的上一个和下一个按钮的代码中的resizeText命令。
然而,代码中出现了一些故障或错误,我希望您可以通过以下步骤进行复制:
打开堆栈
点击“全选”按钮
点击“行”按钮
点击“下一步”按钮,直到看到第6行(它的全长可见)。
再次单击“下一步”按钮,您将看到第7行但该行未完全可见(您会看到右边的引号“不存在”
点击“下一步”按钮然后点击“上一步”按钮 - 这将带你回到第7行,现在可以看到它的全长!
现在点击“上一页”按钮,第6行可见,但这次不是全长
点击“上一页”,再点击“下一步”,现在第6行全长
点击“下一步”,第7行再次完全不可见。
如果您无法使用上面提到的行号复制此项,请尝试继续单击“下一步”按钮,直到遇到缺少结尾“引号的行,表示该行已被切断。然后按照上面单击“上一步”和“下一步”按钮的相同步骤。听起来可能很复杂但是一旦打开堆栈就很容易找到错误的行为。类似于行的情况:83-84-85 ; 48-49; 51-52。 我的堆栈链接是DG-only-1.16_cut-off-lines.zip
如何纠正代码,使其始终显示每一行而不切断它的结尾?
答案 0 :(得分:2)
在'resizeText'处理程序中:如果格式化的高度小于字段,则将文本调整为大小,直到它的&gt; = formattedHeight。这意味着当高度大于要求时,循环有时会停止。通过在字体大小增加时添加最终高度检查,我们可以避免这种情况;
on resizeText
## Check if the text fits in the field
put the textSize of fld "foneline" into tTextSize
put the height of fld "foneline" into tHeight
if the formattedHeight of fld "foneline" > tHeight then
## Make the text smaller until it fits
repeat until the formattedHeight of fld "foneline" <= tHeight
subtract 1 from tTextSize
## Check that the text size is not less that the minimum size
if tTextSize >= the cMinimumTextSize of fld "foneline" then
set the textSize of fld "foneline" to tTextSize
else
exit repeat
end if
end repeat
else if the formattedHeight of fld "foneline" < tHeight then
## Make the text as large as possible
repeat until the formattedHeight of fld "foneline" >= tHeight
add 1 to tTextSize
## Check that the text size is not bigger that the maximum size
if tTextSize<= the cMaximumTextSize of fld "foneline" then
set the textSize of fld "foneline" to tTextSize
else
exit repeat
end if
end repeat
# check the final field height
if the formattedHeight of fld "foneline" > tHeight then
subtract 1 from tTextSize
set the textSize of fld "foneline" to tTextSize
end if
end if
end resizeText