调整动态文本大小以使整个文本行适合文本字段

时间:2014-07-17 04:10:44

标签: textfield livecode text-formatting

我有大约640个不同长度的文本行,可以在数据网格和单行视图中查看。在单行视图中,我想调整文本行的字体大小,使其

  1. 完全适合文字字段

  2. 的最大磅值为24,最小点大小为10(我已在文本字段中为其设置了自定义属性)。

  3. 我在单行查看卡中使用以下代码:

    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命令。

    然而,代码中出现了一些故障或错误,我希望您可以通过以下步骤进行复制:

    1. 打开堆栈

    2. 点击“全选”按钮

    3. 点击“行”按钮

    4. 点击“下一步”按钮,直到看到第6行(它的全长可见)。

    5. 再次单击“下一步”按钮,您将看到第7行但该行未完全可见(您会看到右边的引号“不存在”

    6. 点击“下一步”按钮然后点击“上一步”按钮 - 这将带你回到第7行,现在可以看到它的全长!

    7. 现在点击“上一页”按钮,第6行可见,但这次不是全长

    8. 点击“上一页”,再点击“下一步”,现在第6行全长

    9. 点击“下一步”,第7行再次完全不可见。

    10. 如果您无法使用上面提到的行号复制此项,请尝试继续单击“下一步”按钮,直到遇到缺少结尾“引号的行,表示该行已被切断。然后按照上面单击“上一步”和“下一步”按钮的相同步骤。听起来可能很复杂但是一旦打开堆栈就很容易找到错误的行为。类似于行的情况:83-84-85 ; 48-49; 51-52。 我的堆栈链接是DG-only-1.16_cut-off-lines.zip

      如何纠正代码,使其始终显示每一行而不切断它的结尾?

1 个答案:

答案 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