Как включить символ новой строки в строку в Delphi?
Я хочу создать строку, которая охватывает несколько строк, чтобы назначить свойство заголовка метки. Как это делается в Дельфах?
11 ответов:
в системе.pas (который автоматически привыкает) определяется следующее:
const sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
это из Delphi 2009 (обратите внимание на использование AnsiChar и AnsiString). (Обертывание линии добавлено мной.)
поэтому, если вы хотите сделать свой tlabel wrap, убедитесь, что AutoSize установлен в true, а затем используйте следующий код:
label1.Caption := 'Line one'+sLineBreak+'Line two';
работает во всех версиях Delphi с момента появления sLineBreak, который, как я считаю, был Delphi 6.
или вы можете использовать ^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
напишите ('Hello' + sLineBreak + ' 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;