0

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

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

关于如何做到这一点的任何想法。不过,这在 VCL 中运行良好。

4

2 回答 2

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”。

于 2019-06-04T13:36:32.460 回答
0

请检查您的按钮是否检查了 ShowHint 属性。

  Button1.Hint := 'line 1' + sLineBreak + 'line 2';
于 2018-11-14T12:40:41.937 回答