标签的最佳填充

时间:2017-03-11 21:42:16

标签: pascal lazarus

我的应用程序中有两个表单,form1将一个长字符串(超过300个字符)或短字符串(少于50个字符)发送到form2上的标签,只需单击一个按钮,我使用的是标签,因为我找不到具有透明背景的备忘录组件,而Canvas的东西需要与标签属性相比较长的代码。

  GridView g3 = (GridView) findViewById(R.id.grid_content);

   String[] content = {"cont","cont" ,"cont","cont", "cont", "1"
           , "cont","cont","cont","cont","cont", "2"
           , "cont","cont","cont","cont","cont", "3"
           , "cont","cont","cont","cont","cont", "4"
           , "cont","cont","cont","cont","cont", "5"
    };

    ArrayAdapter<String> adp_content = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, content);
    g3.setAdapter(adp_content);

我的想法是使用OptimalFill调整文本的高度,但是当我向标签发送一个长字符串时,字体大小完全错误,有时标签填充正确(当我在短片后重复一个长字符串时)例如字符串)。

使用:

Some label properties
Align == alClient
Alignment = taCenter
Layout = tlCenter
WordWrap = True
AutoSize = True
OptimalFill = True

我对字体大小进行了一些奇怪的更改,如果我第一次发送带有100个字符的字符串,我会得到一个像18这样的字体,如果我发送一个字符串为20,我会得到一个像30这样的字体如果我发送带有100个字符的相同字符串,我得到一个22(数字只是一个例子,而不是真实/正确的),甚至不是它们应该是什么btw

如果我更改了标题,文本高度会变坏(仍然是我使用的第一个字符串的字体大小),它只会在我发送一个小字符串时发生变化,事情就会变得很奇怪。

以下示例将类似于:

showMessage(IntToStr(label.Font.Size));

已经尝试过:

string with 100 chars returns a font size of 20
string with 70  chars returns a font size of 20 //should be arround 25 or so
string with 10  chars returns a font size of 40
string with 100 chars returns a font size of 22

我在点击发送字符串之前和之前尝试过&#39;

// to 'reset' the font size then put the string on the caption and later the real string
Caption: = '';
Caption: = # 0;
Caption: = ' ';
Caption: = '-'; 

Label.Update; // to update the 'math'    
Label.Refresh; // to update the 'math'    
Label.Repaint; //one by one and all togheter

Label.AdjustSize

Application.ProcessMessages

Form2.Update

Label.UpdateBaseBound

Labe.AdjustFontForOptimalFill;

还尝试启用和禁用标签以重置&#39;一切。

没有什么工作正常,事物有一个奇怪的值(字体大小),字体大小取决于序列的长度。

如何使其正常工作并在每次图例更改时创建正确的源计算?

使用最新的Lazarus(QT)使用Gnome 3.22.3构建Linux X64(不确定这是否相关)

0 个答案:

没有答案