【问题标题】:How do I include a newline character in a string in Delphi?如何在 Delphi 中的字符串中包含换行符?
【发布时间】:2010-09-20 05:51:24
【问题描述】:

我想创建一个跨越多行的字符串以分配给标签标题属性。这在 Delphi 中是如何完成的?

【问题讨论】:

    标签: delphi newline


    【解决方案1】:

    const sLineBreak 中有 System.pas unit 中的 const sLineBreak,它已经根据您正在使用的操作系统进行处理。

    使用示例:

    TForm1.btnInfoClick(Sender: TObject);
    begin
       ShowMessage ('My name is Jhon' + sLineBreak
          'Profession: Hollywood actor');
    end;
    

    【讨论】:

      【解决方案2】:
       private
         { Private declarations }
         {declare a variable like this}
         NewLine : string; // ok
        // in next event handler assign a value to that variable (NewLine)
        // like the code down
      procedure TMainForm.FormCreate(Sender: TObject);
      begin`enter code here`
        NewLine := #10;
       {Next Code To show NewLine In action}
        //ShowMessage('Hello to programming with Delphi' + NewLine + 'Print New Lin now !!!!');
      end;
      

      【讨论】:

      • 请格式化您的代码并添加一些关于如何解决问题的说明。
      【解决方案3】:

      有时我不想弄乱我的代码空间,尤其是对于静态标签。要在表单中定义它,请在表单上输入标签文本,然后右键单击同一表单上的任意位置。选择“以文本形式查看”。您现在将看到所有设计的对象,但仅作为文本。向下滚动或搜索您的文本。找到它后,编辑标题,使其看起来像:

      Caption = '第 1 行'#13'第 2 行'#13'第 3 行'

      #13 表示序数 13,或用于回车的 ascii。 Chr(13) 是同样的想法,CHR() 将数字更改为序数类型。

      请注意,在 Delphi 的这个特定方面没有分号,并且使用“=”而不是“:=”。每行的文本都用单引号括起来。

      完成后,再次右键单击并选择“以表单形式查看”。您现在可以进行任何格式设置,例如粗体、右对齐等。您不能重新编辑表单上的文本,否则您将丢失换行符。

      我还使用“以文本形式查看”进行多项更改,我只想滚动浏览并进行替换等。快速。

      戴夫

      【讨论】:

      • 接受的答案直截了当,就像问题一样。相反,这个答案比被问到的要多。更糟糕的是:以一种不那么清晰的方式。
      【解决方案4】:

      与平台无关的方式是“sLineBreak”: http://www.freepascal.org/docs-html/rtl/system/slinebreak.html

      Write('Hello' + sLineBreak + 'World!');

      【讨论】:

        【解决方案5】:
        var
          stlst: TStringList;
        begin
          Label1.Caption := 'Hello,'+sLineBreak+'world!';
        
          Label2.Caption := 'Hello,'#13#10'world!';
        
          Label3.Caption := 'Hello,' + chr(13) + chr(10) + 'world!';
        
          stlst := TStringList.Create;
          stlst.Add('Hello,');
          stlst.Add('world!');
          Label4.Caption := stlst.Text;
        
          Label5.WordWrap := True; //Multi-line Caption
          Label5.Caption := 'Hello,'^M^J'world!';
        
          Label6.Caption := AdjustLineBreaks('Hello,'#10'world!');
          {http://delphi.about.com/library/rtl/blrtlAdjustLineBreaks.htm}
        end;
        

        【讨论】:

          【解决方案6】:

          我手头没有 Delphi 的副本,但我相当肯定,如果您将 wordwrap 属性设置为 true 并将 autosize 属性设置为 false,它应该以您制作标签的大小包装任何文本。如果您想在某个地方换行,那么如果您设置上述设置并从文本编辑器粘贴,它可能会起作用

          希望这会有所帮助。

          【讨论】:

            【解决方案7】:
            ShowMessage('Hello'+Chr(10)+'World');
            

            【讨论】:

              【解决方案8】:

              这里有一个更短的方法:

              my_string := 'Hello,'#13#10' world!';
              

              【讨论】:

              • 更短,但不便携!
              【解决方案9】:

              在 System.pas(自动使用)中定义了以下内容:

              const
                sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} 
                             {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
              

              这是来自 Delphi 2009(注意 AnsiChar 和 AnsiString 的使用)。 (我添加的换行。)

              所以如果你想让你的 TLabel 换行,请确保 AutoSize 设置为 true,然后使用以下代码:

              label1.Caption := 'Line one'+sLineBreak+'Line two';
              

              自引入 sLineBreak 以来,它适用于所有版本的 Delphi,我相信这是 Delphi 6。

              【讨论】:

                【解决方案10】:

                my_string := 'Hello,' + #13#10 + 'world!';

                #13#10是十进制的CR/LF字符

                【讨论】:

                  【解决方案11】:

                  或者您也可以使用 ^M+^J 快捷方式。所有的偏好问题。 “CTRL-CHAR”代码由编译器翻译。

                  MyString := 'Hello,' + ^M + ^J + 'world!';
                  

                  你可以把 ^M 和 ^J 之间的 + 去掉,但是你会得到编译器的警告(但它仍然可以正常编译)。

                  【讨论】:

                    【解决方案12】:

                    另一方面,一个有用的技巧:
                    如果您将多个字符串保存在 TStrings 中,则只需使用 TStrings 的 Text 属性,如下例所示。

                    Label1.Caption := Memo1.Lines.Text;
                    

                    你会得到你的多行标签...

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2021-02-23
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-02-08
                      相关资源
                      最近更新 更多