Как включить символ новой строки в строку в Delphi?

Я хочу создать строку, которая охватывает несколько строк, чтобы назначить свойству подписи метки. Как это делается в Дельфах?

11 ответов


в системе.pas (который автоматически используется) определяется следующее:

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

это из Delphi 2009 (обратите внимание на использование AnsiChar и AnsiString). (Line wrap добавлен мной.)

поэтому, если вы хотите сделать обертку TLabel, убедитесь, что AutoSize имеет значение true, а затем используйте следующий код:

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

работает во всех версиях Delphi с тех пор, как был представлен sLineBreak, который, я считаю, был Delphi 6.


вот еще более короткий подход:

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

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

#13#10 - Это символы CR/LF в decimal


или вы также можете использовать ярлык ^M+^J. Все дело в предпочтениях. коды "CTRL-CHAR"переводятся компилятором.

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

вы можете убрать + между ^M и ^J, но тогда вы получите предупреждение от компилятора (но он все равно будет компилироваться нормально).


на стороне, трюк, который может пригодиться:
Если вы держите несколько строк в TStrings, вам просто нужно использовать свойство Text TStrings как в следующем примере.

Label1.Caption := Memo1.Lines.Text;

и вы получите свой многострочный ярлык...


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;

агностический путь plattform будет "sLineBreak": http://www.freepascal.org/docs-html/rtl/system/slinebreak.html

написать ('Привет' + sLineBreak + ' мир!');


ShowMessage('Hello'+Chr(10)+'World');

У меня нет копии Delphi, но я уверен, что если вы установите свойство wordwrap в true, а свойство autosize в false, оно должно обернуть любой текст, который вы поместили в размер, который вы делаете метку. Если вы хотите сломать линию в определенном месте, то это может сработать, если вы установите вышеуказанные настройки и вставьте из текстового редактора.

надеюсь, что это помогает.


иногда я не хочу загромождать пространство кода, особенно для статической метки. Чтобы просто определить его с помощью формы, введите текст метки в форме, затем щелкните правой кнопкой мыши в любом месте той же формы. Выберите "вид как текст". Теперь вы увидите все объекты как спроектированные, но только как текст. Прокрутите вниз или найдите текст. Когда вы его найдете, отредактируйте заголовок, чтобы он выглядел примерно так:

Подпись = 'Строка 1' #13 'Строка 2' #13 'Строка 3'

#13 означает порядковый номер 13 или ascii для возврата каретки. Chr (13) - это та же идея, CHR () изменяет номер на порядковый тип.

обратите внимание, что в этом конкретном аспекте Delphi нет двоеточия, и вместо": = "используется"=". Текст для каждой строки заключен в одинарные кавычки.

Как только вы закончите, щелкните правой кнопкой мыши еще раз и выберите "вид формы". Теперь вы можете сделать любую форматирования, такие как полужирный, по правому краю и т. д. Вы просто не можете повторно редактировать текст в форме или потеряет ваши разрывы линии.

Я также использую "вид как текст"для нескольких изменений, где я просто хочу прокрутить и сделать замены и т. д. Быстрый.

Дэйв


 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;