Как мне включить символ новой строки в строку в Delphi?
Вопрос
Я хочу создать строку, занимающую несколько строк, для присвоения свойству заголовка метки.Как это делается в Delphi?
Решение
В 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.
Другие советы
Вот еще более короткий подход:
my_string := 'Hello,'#13#10' world!';
my_string: = 'Здравствуйте,' + # 13 # 10 + 'world!';
# 13 # 10
- это символы CR / LF в десятичном формате
Или вы также можете использовать ярлык ^ 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;
Агностическим способом для платформы будет sLineBreak: http://www.freepascal.org/docs-html/rtl/system /slinebreak.html р>
Запись ('Hello' + sLineBreak + 'World!');
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;