Как сделать перенос строки в label delphi

Обновлено: 03.07.2024

На этом уроке изучим объект Label . Этот компонент используется для отображения различных надписей на формах. Иконка для него находится на панели Standard палитры компонентов.

Основное свойство для этого компонента - Caption . Именно оно и отвечает за надпись на нашем компоненте.

Вы можете задавать различные характеристики шрифта для нашего компонента (свойство Font ). Для этого нажмите кнопочку с многоточием в строке со свойством Font инспектора объектов. В частности, надпись можно сделать подчеркнутой и синей - как гиперссылку.

У компонента TLabel имеется свойство AutoSize , которое отвечает за то, будет ли компонент автоматически изменять размер по горизонтали с изменением длины надписи. По умолчанию это свойство равно true . Еще имеется свойство WordWrap . Если установить значение это свойства в true , а значение свойства AutoSize в false , то при увеличении длины надписи происходит перенос слов на новую строчку.

Для компонента TLabel есть еще одно неочевидное применение, а именно его можно использовать для получения доступа по горячим клавишам (комбинации типа Alt+W ) к элементам, не имеющим свойства Caption . Рассмотрим, например, как можно с помощью label получить доступ к Edit (полю для ввода). Для этого расположите на форме label и edit , оставив их имена по умолчанию. Измените свойство Caption для Label1 в &Wrap . Свойство же FocusControl для компонента Label1 установите в Edit1 . Компилируйте проект и нажимайте Alt+W . Поле для редактирования Edit1 получит фокус.

Для отображения различных надписей на форме используются в основном компоненты Label, StaticText (появившийся только в Delphi 3) и Panel. Первые два из этих компонентов — метки, специально предназначенные для отображения текстов. Основное назначение панели Panel другое: компоновка компонентов в окне формы. Однако, панель можно использовать и для вывода текстов.

Примеры вывода текста в компоненты приведены на рис. 3.4.

Тексты, отображаемые в перечисленных компонентах, определяются значением их свойства Caption. Его можно устанавливать в процессе проектирования или задавать и изменять программно во время выполнения приложения. Например:

Во всех компонентах цвет фона определяется свойством Color, а цвет надписи — подсвойством Color свойства Font. Например, в большинстве меток (кроме верхней) на рис. 3.4 а и в правых метках на рис. 3.4 б задан цвет фона равным clWhite — белый. Если цвет специально не задавать, то цвет фона обычно сливается с цветом контейнера, содержащего метку, так что фон просто не заметен.

Для метки Label цвет и шрифт — единственно доступные элементы оформления надписи. Компоненты StaticText и Panel имеют кроме того свойство BorderStyle, определяющее рамку текста — бордюр. На рис. 3.4 б вы можете видеть влияние бордюра на вид метки StaticText. При стиле sbsNone метка StaticText по виду не отличается от метки Label. Вероятно, если уж использовать бордюр, то наиболее приятный стиль sbsSunken.

Компонент Panel кроме свойства BorderStyle имеет еще свойства BevelInner, BevelOuter, BevelWidth, BorderWidth, которые предоставляют богатые возможности оформления надписи, как вы можете видеть на рис. 3.4 в. Таким образом, с точки зрения оформления выводимого текста максимальные возможности дает Panel и минимальные — Label.

Размещение всех рассматриваемых компонентов на форме определяется, в частности, свойствами Тор (координата верхнего края), Left (координата левого края), Height (высота), Width (ширина). Имеются также свойства, определяющие изменение размера компонента при изменении пользователем во время выполнения приложения размеров окна. Это общие свойства всех оконных компонентов: Align (выравнивание компонента по всей верхней, левой, правой, нижней частям контейнера или по всей его клиентской области), Anchors (привязка сторон компонента к сторонам контейнера), Constraints (ограничения допустимых изменений размеров). Учтите, что использование в свойстве Anchors одновременной привязки компонента к противоположным сторонам контейнера приведет к растягиванию или сжатию компонента при изменении пользователем размеров окна. При этом в метках в ряде случаев наблюдаются неприятности, связанные с перемещением надписей (если они, например, выровнены по центру). Чтобы избежать этих неприятностей, надо в обработку события формы OnResize вставить операторы, перерисовывающие компоненты методом Repaint, например:

Размер меток Label и StaticText определяется также свойством AutoSize. Если это свойство установлено в true, то вертикальный и горизонтальный размеры компонента определяются размером надписи. Если же AutoSize равно false, то выравнивание текста внутри компонента определяется свойством Alignment, которое позволяет выравнивать текст по левому краю, правому краю или центру клиентской области метки. В панели Panel также имеется свойство AutoSize, но оно не относится к размерам надписи Caption. Однако, свойство выравнивания Alignment работает и для панели.

В метке Label имеется свойство Wordwrap — допустимость переноса слов длинной надписи, превышающей длину компонента, на новую строчку. Чтобы такой перенос мог осуществляться, надо установить свойство WordWrap в true, свойство AutoSize в false (чтобы размер компонента не определялся размером надписи) и сделать высоту компонента такой, чтобы в нем могло поместиться несколько строк (см. пример правой нижней метки на рис. 3.4 а). Если WordWrap не установлено в true при AutoSize равном false, то длинный текст, не помещающийся в рамке метки, просто обрезается (см. пример левой нижней метки на рис. 3.4 а).

В метке StaticText перенос длинного текста осуществляется автоматически, если значение AutoSize установлено в false и размер компонента достаточен для размещения нескольких строк. Для того, чтобы в StaticText осуществлялся перенос при изменении пользователем размеров окна, надо осуществлять описанную выше перерисовку компонента методом Repaint в обработчике события формы OnResize.

В панели размещение надписи в нескольких строках невозможно.

Для отображения текстовой информации, и даже с дополнительной возможностью прокрутки длинных текстов, можно использовать также окна редактирования Edit и MaskEdit в режиме Readonly.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свойство Font компонента Label предоставляет возможности по изменению шрифта выводимого текста. При переходе на строку Font в Инспекторе объектов появляется кнопочка, предоставляющая доступ к диалоговому окну выбора шрифта, такому же, с каким мы встречаемся работая, например, в Worde.

Свойство color определяет фон компонента.

Перенос текста в Label по строкам WordWrap=true - допустимость переноса слов длинной надписи, превышающей длину компонента, на новую строчку. При этом свойство AutoSize = false (чтобы размер компонента не определялся размером надписи) и сделать высоту компонента такой, чтобы в нем могло поместиться несколько строк.

Свойство Alignment определяет способ выравнивания текста. Может принимать 3 состояния: taLeftJustify — по левому краю компонента, taCenter- выравнивание по центру и taRightJustify — выравнивание по правому краю

Читайте также: