Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Отображение текста в надписях компонентов Label, StaticText и Panel

Поиск

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

Тексты, отображаемые в перечисленных компонентах, определяются значени­ем их свойства Caption.

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

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

Компонент Panel, кроме свойства BorderStyle имеет еще свойства Bevellnner, BevelOuter, Bevel Width,, Border Width, которые предоставляют богатые возмож­ности оформления надписи.

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

StaticText 1. Repaint

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

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

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

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

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

 


Окна редактирования Edit, LabeledEdit и MaskEdit

 

На рис. 9 вы можете увидеть примеры окон редактирования. Внешнее офор­мление окон редактирования определяется свойством BorderStyle.

 

Рис. 9. Примеры окон редактирования

 

Во всех рассматриваемых окнах вводимый и выводимый текст содержится в свойстве Text. Это свойство можно устанавливать в процессе проектирования или задавать программно. Выравнивание текста, как это имело место в метках и пане­лях, невозможно. Перенос строк тоже невозможен. Текст, не помещающийся по длине в окно, просто сдвигается, и пользователь может перемещаться по нему с по­мощью курсора. Свойство AutoSize в окнах редактирования имеет смысл, отлич­ный от смысла аналогичного свойства меток: автоматически подстраивается под размер текста только высота, но не ширина окна.

Окна редактирования снабжены многими функциями, свойственными боль­шинству редакторов. Например, в них предусмотрены типичные комбинации «го­рячих» клавиш: Ctrl-C — копирование выделенного текста в буфер обмена Clipboard (команда Copy), Ctrl-X — вырезание выделенного текста в буфер Clipboard (команда Cut), Ctrl-V — вставка текста из буфера Clipboard в позицию курсора (команда Paste), Ctrl-Z — отмена последней команды редактирования. Правда, пользователи часто не догадываются об этих возможностях редактирования. Так что полезно напоми­нать им об этом соответствующими подсказками.

Свойство AutoSelect определяет, будет ли автоматически выделяться весь текст при передаче фокуса в окно редактирования. Имеются также свойства то­лько времени выполнения SelLength, SelStart, SelText, определяющие соответст­венно длину выделенного текста, позицию перед первым символом выделенного тек­ста и сам выделенный текст.

Окна редактирования можно использовать и просто как компоненты отобра­жения текста. Для этого надо установить в false их свойство ReadOnly и целесооб­разно установить AutoSelect в false. В этом случае пользователь не сможет изме­нять отображаемый текст и окно редактирования становится подобным меткам. Но имеются и определенные отличия. Во-первых, окна редактирования оформлены несколько иначе.

А главное — окна редактирования могут вмещать текст, превышающий их длину. В этом случае пользователь может прокручивать этот текст, перемещая курсор в окне. Такими особенностями не обладает ни одна метка.

Если вводимый текст не соответствует числу (например, содержит недопустимые симво­лы), то функции преобразования генерируют исключение EConvertError. Поэтому в программе необходимо предусмотреть обработку этого исключения. Например:

var A: integer;

try

А:= StrToInt(Editl.Text);

... // операторы, использующие переменную А except on EConvertError do '

ShowMessage('ВЫ ввели ошибочное число; повторите ввод');

end;

Лучше, если поль­зователь просто не сможет ввести неправильные символы. Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена. В противном случае значение Max-Length указывает максимальное число символов, которое может ввести пользова­тель.

Свойство Modified, доступное только во время выполнения, показывает, про­водилось ли редактирование текста в окне. Если вы хотите использовать это свойство, то в момент начала работы пользователя с текстом Modified надо установить в false. Тогда при последующем обращении к этому свойству можно по его значе­нию (true или false) установить, было или не было произведено редактирование. Свойство PasswordChar позволяет превращать окно редактирования в окно ввода пароля. По умолчанию значение PasswordChar равно #0 — нулевому симво­лу. В этом случае это обычное окно редактирования. Но если в свойстве указать иной символ (например символ звездочки «*»), то при вводе пользователем текста в окне будут появляться именно эти символы, а не те, которые вводит пользова­тель (см. рис. 3.2). Тем самым обеспечивается секретность ввода пароля.

Все сказанное выше относилось ко всем рассматриваемым окнам редактирова­ния. В компоненте Edit все ограничивается приведенными специфическими свой­ствами. А в компоненте LabeledEdit, помимо самого окна редактирования, неотли­чимого по виду от Edit, имеется метка. Она задается свойством EditLabel — объек­том класса TBoundLabel. Этот класс имеет все основные свойства, присущие метке Label: Caption, Color, Font, Layout, ShowAccelChar, Wordwrap, Canvas.

Компонент MaskEdit отличается от Edit и LabeledEdit тем, что в нем можно задать строку маски в свойстве EditMask. Маска состоит из трех разделов, между которыми ставится точка с запятой (;).

Вводить маску можно непосредственно в свойство EditMask. Но удобнее поль­зоваться специальным редактором масок, вызываемым при нажатии кнопки с многоточием в строке свойства EditMask в Инспекторе Объектов.

В редакторе масок окно Sample Masks содержит наименования стандартных ма­сок и примеры ввода с их помощью. В окно Input Mask надо ввести маску. Если вы выбираете одну из стандартных масок, то окно Input, Mask автоматически заполня­ется, и вы можете, если хотите, отредактировать эту маску.

К сожалению, среди файлов стандартных масок, поставляемых с Del­phi, отсутствует маска, соответствующая российским стандартам.



Поделиться:


Последнее изменение этой страницы: 2016-12-28; просмотров: 318; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.186.26 (0.006 с.)