Файл: Лр операторы и выражения Delphi.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 301

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ЛР 1. Операторы и выражения Delphi

Оператор присваивания

Арифметические операторы

Оператор конкатенации строк

Логические операторы

Операторы поразрядного сдвига

Операторы отношения

Операторы множеств

Оператор-селектор case

Оператор перехода goto

Организация циклов

ЛР 2. Структурные типы

Множества

Записи

Массивы

ЛР 3. Объекты и классы

Проектирование класса

Управление жизненным циклом объекта

Опережающее объявление класса

Ограничение видимости членов класса

Свойства объекта

Особенности объявления методов

Поля класса и методы класса

Иерархия наследования

Полиморфизм

ЗАДАНИЕ

ЛР4. Опорные классы VCL

Класс TControl

Принадлежность к родительскому контейнеру

Размещение и размеры элемента управления

Видимость и активность элемента управления

Задание

ЛР5. Обработка клавиатурных событий и событий мышки

Щелчки кнопками мыши

Перемещение указателя мыши

Вращение колесика мыши

Операция перетаскивания drag and drop

Задание

ЛР 6. Классы потоков данных

Прототип потоков данных, класс TStream

форме Form1 компонентов с выводом их названия класса и имени в редактор значений ValueListEditor1.

Класс TControl


Визуальные компоненты наследуют от TControl свойства, методы и события, связанные с установкой местоположения компонента на форме, особенностями взаимодействия с командными объектами TAction и всплывающим меню, оперативной подсказкой, откликами на события мыши (в том числе операцию перетаскивания drag and drop).

Принадлежность к родительскому контейнеру


В момент попадания элемента управления на форму проекта в первую очередь ему присваивается имя (свойство Name) и назначается владелец (свойство Owner). Затем для элемента управления назначается компонент-контейнер. Контейнер предоставит в распоряжение элементу управления часть своей поверхности (клиентской области). Элемент управления запоминает ссылку на родительский контейнер, для этого предназначено свойство

property Parent: TWinControl;

С ролью контейнера справится далеко не любой визуальный элемент управления. Для этого подойдут только оконные элементы (компоненты, предком которых выступает класс TWinControl).

Размещение и размеры элемента управления


При размещении компонента на форме (или на любом другом компоненте, способном передавать свою клиентскую область в распоряжение элементов управления) следует учитывать, что в приложениях Windows за начальную точку системы координат (0, 0) принимается левый верхний угол клиентской части родительского контейнера. Из этой точки проведены две оси: ось x по горизонтали и по вертикали ось y. Ось x направлена слева направо, а ось

y направлена сверху вниз (рис. 4.3).

Рис. 4.3. Размеры и местоположение элемента управления
Место и размеры элемента управления хранятся в свойствах

property Left: Integer;{расстояние от левого края контейнера до элемента}

property Top: Integer; {расстояние от верхнего среза

клиентской области контейнера} property Height: Integer; {высота элемента управления} property Width: Integer; {ширина элемента управления}

Для выяснения (а в ряде случаев и переопределения) размеров клиентской области элемента управления или формы воспользуйтесь свойствами:

property ClientHeight: Integer; //высота клиентской области

property ClientWidth: Integer; //ширина клиентской области


События, связанные с изменением размеров


Некоторые потомки класса TControl обладают способностью реагировать на изменение своих размеров. Эта реакция выражается в форме трех последовательно вызываемых событий (табл. 4.2).

Таблица4.2.Событияизмененияразмеровэлементауправления


Событие

Описание

property OnCanResize: TCanResizeEvent;

type TCanResizeEvent =

procedure(Sender: TObject;

var NewWidth, NewHeight: Integer;

var Resize: Boolean) of object;

Событие предваряет попытку элемента управления изменить свои габариты. Аргументы NewWidth и NewHeight содержат новые предполагаемые размеры объекта. Программист может согласиться с этими размерами или отказаться от предложенных значений. Для этого следует воспользоваться последним параметром Resize

property OnConstrainedResize: TConstrainedResizeEvent;

type TConstrainedResizeEvent =

procedure(Sender: TObject;

var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer) of object;

Контролирует, чтобы размеры элемента управления оказались в пределах, определенных параметрами MinWidth, MinHeight, MaxWidth и MaxHeight

property OnResize: TNotifyEvent;

Уведомляет о том, что изменение размеров элемента управления завершено




Выравнивание элемента управления в контейнере


Простейший и одновременно наиболее востребованный способ выравнивания элемента управления в границах клиентской области контейнера предоставляет свойство

property Align: TAlign; //по умолчанию выключено (Align=alNone)

Свойство обеспечивает выравнивание по левой, правой, верхней или нижней границам контейнера (рис. 4.4).
Align=alTop



Align=alLeft

Align=alRight



Align=alClient

Align=alBottom

Рис. 4.4. Выравнивание элемента управления с помощью свойства Align

Видимость и активность элемента управления


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

procedure Hide; // аналог visible:= false;

Для того чтобы компонент вновь появился на экране, вызывают процедуру

procedure Show; // аналог visible := true;

Вместо этих процедур можно воспользоваться свойством

property Visible: Boolean; //по умолчанию True

позволяющим включить (true) или отключить (false) отображение элемента.

Очень часто вместо того чтобы скрывать от пользователя ненужный компонент, программисты просто переводят его в пассивный режим. Для этого предназначено свойство

property Enabled: Boolean; //по умолчанию true

При установке свойства в состояние false элемент управления перестает реагировать на попытки обратиться к нему.

Задание


Разработайте приложение VCL, состоящее из единственной формы и не содержащее ни одного элемента управления.

Вариант 1


В момент создания главной формы приложения динамически создайте 25 панелей TPanel и разместите их на форме (по 5 панелей в ряду), так, чтобы они заняли всю клиентскую область формы.




При изменении размеров формы