Як включити символ рядка в рядок у Delphi?


97

Я хочу створити рядок, який охоплює декілька рядків для призначення властивості Label Caption. Як це робиться в Delphi?

Відповіді:


174

У 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';

Працює у всіх версіях Delphi з моменту введення sLineBreak, на який я вважаю, що Delphi 6.



15

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

#13#10 символи CR / LF у десятковій частині


8

Або ви також можете використовувати ярлик ^ M + ^ J також. Все питання переваги. "CTRL-CHAR" коди перекладаються компілятором.

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

Ви можете забрати + проміжком між ^ M і ^ J, але тоді ви отримаєте попередження компілятора (але воно все одно буде складатись добре).


7

Зі сторони, який може бути корисний трюк:
Якщо ви тримаєте кілька рядків у TStrings, вам просто потрібно використовувати властивість Text TStrings, як у наступному прикладі.

Label1.Caption := Memo1.Lines.Text;

І ви отримаєте свою багаторядкову мітку ...


3
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;



0

У мене немає копії Delphi вручну, але я цілком впевнений, якщо ви встановите властивість wordwrap на true, а властивість autosize буде неправдивою, вона повинна обгортати будь-який текст, який ви вводите в розмір, на який ви створюєте мітку. Якщо ви хочете перервати рядок у певному місці, то це може спрацювати, якщо встановити вищевказані налаштування та вставити з текстового редактора .

Сподіваюся, це допомагає.


-2

Іноді я не хочу захаращувати свій кодовий простір, особливо для статичної мітки. Щоб просто визначити його з формою, введіть текст етикетки у форму, а потім клацніть правою кнопкою миші в будь-якій частині тієї самої форми. Виберіть "Переглянути як текст". Тепер ви побачите всі об'єкти як розроблені, але лише як текст. Прокрутіть вниз або шукайте текст. Знайшовши його, відредагуйте підпис, щоб він виглядав приблизно так:

Заголовок = 'Рядок 1' # 13'Лінія 2 '# 13'Лінія 3'

# 13 означає порядковий номер 13, або ассі для повернення вагона. Chr (13) - та сама ідея, CHR () змінює число на порядковий тип.

Зверніть увагу, що в цій конкретній грані Delphi немає напівколонки, і "=" використовується, а не ": =". Текст кожного рядка укладається в окремі лапки.

Після того, як ви закінчите, ще раз клацніть правою кнопкою миші та виберіть "Переглянути як форму". Тепер ви можете виконати будь-яке форматування, наприклад, напівжирне, правильне виправдання тощо. Ви просто не зможете повторно редагувати текст у формі, або ви втратите розриви рядків.

Я також використовую "Перегляд як текст" для кількох змін, де я просто хочу прокручувати та робити заміни тощо. Швидке.

Дейв


Прийнята відповідь пряма до суті, подібно до питання. Ця відповідь, навпаки, додає більше, ніж просили; ще гірше: не так зрозуміло.
ranieribt

-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;

Будь ласка, відформатуйте свій код та додайте опис того, як це вирішує проблему.
Blastfurnace
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.