Firemonkey中的多行提示

时间:2018-11-14 10:11:04

标签: firemonkey delphi-10-seattle

我正在尝试在使用delphi 10 seattle(FMX)制作的应用程序中创建多行提示。设置提示时似乎换行不起作用。

Button1.Hint := 'Line 1' + #13#10 + 'Line2';

有关如何完成此操作的任何想法。不过,这在VCL中工作正常。

2 个答案:

答案 0 :(得分:0)

请检查您的按钮是否已选中ShowHint属性。

  Button1.Hint := 'line 1' + sLineBreak + 'line 2';

答案 1 :(得分:0)

我可以提供一个提示,表明我刚刚解决了C ++ Builder Rio中的相同类型的问题。我没有Delphi,只有C ++ Builder,但是这两个产品是如此相互关联,我一直使用Delphi的提示(或代码)来解决我的问题。

在C / C ++中,通常可以使用“ \ r”或等效的“ \ n \ l”来显示回车符(我试图在TMemo中显示它)。 TMemo看起来像是在剥离代码(除了认为换行符“ \ l”是无效的转义代码,因此它只显示“ l”)并且在一行上显示所有内容。我确实注意到选项卡(“ \ t”)的快捷方式正在工作。

同样,在C / C ++中,还有其他关于如何创建字符的选项。等同于您正在做的事情,“ char(13)+ char(10)”仅显示字符“ 23”,并将所有内容显示在同一行(如您所描述的)。这就是使用十进制(以10为底)时如何添加字符的方式。如果我想使用十六进制,我会写“ \ 0xd \ 0xa”(它会从文本中剥离并显示在一行上,就像上面第二段中的内容一样。)

我发现在C ++ Builder中可用的解决方案是对字符编码使用八进制表示法(“ \ 015 \ 012”)。就个人而言,在大约50年的编程时间中,我以前从未见过十六进制失败但八进制有效的情况,但我非常渴望尝试。

对于所有这些测试和调试,我创建了一个新项目,在表单中添加了一个TMemo和一个按钮(并为按钮设置ShowHint = true),并在其中添加了以下代码:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    UnicodeString CR = "\015\012";
    Memo1->Text = "a" + CR + "b";
    Button1->Hint = Memo1->Text + " (hint)";
}

因此,我对您的问题的解决方案是弄清楚如何在字符中放入八进制代码并在Delphi中显示相应的文本,然后对八进制字符“ 015”和“ 012”使用该编码。