【问题标题】:Multiline hints in FiremonkeyFiremonkey 中的多行提示
【发布时间】:2018-11-14 10:11:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: firemonkey delphi-10-seattle c++builder-10.3-rio


    【解决方案1】:

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

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

    【讨论】:

    • 是的。这是检查。但是,我只能在换行之前看到文本。
    【解决方案2】:

    我可以提供一个提示,我刚刚在 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”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-14
      • 2017-05-26
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多