Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 1 Delphi7.doc
Скачиваний:
22
Добавлен:
04.11.2018
Размер:
1.03 Mб
Скачать

4.4. Определение принадлежности к классу и приведение типов

В языке Object Pascal есть два удобных оператора: is и as.

При программировании нередко требуется определить, ссылка на объект какого именно типа находится в той или иной переменной. Для решения подобного рода задачи предусмотрен оператор is, проверяющий принадлежность объекта к заданному классу. Синтаксис оператора:

<ссылка на объект> is <название класса>

Данный оператор возвращает значение true если объект относится к указанному классу. Пример:

. . .

if obj is TButton //если obj – объект класса TButton

then obj.Capton:=’Кнопка’; //то задать заголовок

. . .

Приведение типов – это процесс, в результате которого экземпляр некоторого класса будет восприниматься как экземпляр одного из производных от него классов. Для приведения типов используется конструкция:

Тип_приведения(Имя_объекта)

Во всех обработчиках событий используется переменная Sender типа TObject, которой соответствует компонент, сгенерировавший данное событие. Один и тот же обработчик события можно назначить нескольким компонентам: если, например, назначить один обработчик нескольким кнопкам (компонентам типа TButton), то внутри обработчика можно использовать следующее приведение типов:

Edit1.Text:=Button(Sender).Caption;

Здесь тип TObject приводится к производному типу TButton, и в результате объект Sender рассматривается как кнопка. После нажатия кнопки, связанной с данным обработчиком события, ее надпись отобразиться в текстовом поле Edit1.

Для приведения объекта к требуемому классу используется также оператор as. Синтаксис оператора:

<ссылка на объект> as <название класса>

Если при приведении обратиться к методу или свойству, которого не было у класса старого объекта, но есть у класса нового объекта, то произойдет ошибка. Попытка приведения объекта к заданному классу с помощью оператора as может вызвать ошибку, в случае, если такое приведение невозможно. Поэтому перед использованием оператора as следует выяснить, возможна ли такая операция, воспользовавшись оператором is.

. . .

if Obj is TButton

then (Obj as TButton).Caption:= ’Кнопка’;

. . .

Для обращения к свойствам и методам экземпляра приведенного типа можно использовать конструкцию with..as..do. Например:

with Sender as TButton do //приводим TObject к TButton

begin

Caption:=’Кнопка’; //то же, что Sender.Caption

Width:=100; //то же, что Sender. Width

end;

4.5. Компоненты для отображения текста

4.5.1. Компонент метка Label

Компонент Label (вкладка Standard) предназначен для отображения надписей на поверхности компонента (например, формы, панели). Он представляет собой простой текст, который не может быть отредактирован пользователем при выполнении программы. Ряд свойств компонента являются свойствами общего назначения (Width, Height, Font, Color, Name, Caption, Cursor, Enabled, Left, Top и др.). Другие, специфические свойства компонента приведены в табл. 4.6.

Таблица 4.6. Основные свойства класса TLabel

Свойство

Описание свойства

Align

Выравнивание границ компонента относительно объекта, который его содержит. Возможные значения: alBottom – прижать к низу; alClient – растянуть на все поле компонента; alLeft – прижать влево; alNone – положение компонента, определенное пользователем; alTop – прижать вверх и пр.

Alignment

Горизонтальное выравнивание текста в границах поля компонента. Возможные значения: taLeftJustify – прижать текст к левому краю; taRightJustify – прижать текст к правому краю; taCenter – выровнять текст по центру

AutoSize

Свойство логического типа (значения true, false), позволяющее компоненту автоматически изменять свои размеры так, чтобы полностью отобразить текст метки (Caption) с учетом установленного шрифта

FocusControl

Содержит имя оконного компонента, который связан с меткой клавишами быстрого вызова

Layout

Вертикальное выравнивание текста в границах поля компонента. Значения: tlTop – прижать вверх; tlCenter – выровнять по центру; tlBottom – прижать текст вниз

ShowAccel Char

Свойство логического типа, которое определяет, как отображается в надписи амперсанд (&). Если содержит значение true, то символ, следующий за амперсандом будет подчеркнут, а сам амперсанд не будет виден в надписи (символ & в тексте метки предшествует символу клавиши быстрого вызова). Если ShowAccelChar = false, то все амперсанды будут видны в надписи, а следующие за ними символы подчеркиваться не будут

Transparent

Свойство логического типа, позволяющее управляющее отображением фона области вывода текста, определяет прозрачность метки: true – фон метки прозрачный и не зависит от свойства Color, false – пространство метки закрашивается собственным цветом. Сделать компонент Label прозрачным может понадобиться в случаях, когда надпись размещается поверх рисунка и не должна закрывать изображение

WordWrap

Свойство логического типа разрешающее/запрещающее вывод надписи в несколько строк. Для вывода многострочных надписей. должны быть установлены условия: AutoSize=false, WordWrap=true

При работе с компонентом необходимо помнить, что свойство Caption символьного типа. Поэтому, чтобы вывести в поле метки числовое значение, нужно преобразовать число в строку, например, с помощью функций IntToStr, FloatToStr или FloatToStrF:

Label1.Caption:='Корень='+FloatToStrF(x,fffixed,7,2)+'.'

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]