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

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

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

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

Добавлен: 10.01.2024

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

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

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

СОДЕРЖАНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

Множества

Записи

Массивы

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

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

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

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

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

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

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

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

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

Полиморфизм

ЗАДАНИЕ

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

Класс TControl

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

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

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

Задание

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

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

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

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

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

Задание

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

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

панели должны самостоятельно подстраиваются под новые размеры.

Вариант 2


В момент создания главной формы приложения динамически создайте 15 фигур TShape, из них 5 квадратов, 5 кругов и 5 квадратов со скруглёнными углами. Разместите фигуры на форме в три колонки (квадраты слева, круги по центру и квадраты со скруглёнными углами справа).


При изменении размеров формы фигуры должны самостоятельно подстраиваться под вертикальный размер, сохраняя свои позиции по горизонтали.

Вариант 3


В момент создания главной формы приложения динамически создайте 20 строк ввода TEdit. В свойстве Text строк ввода должен находиться порядковый номер компонента (от 1 до 20). Разместите элементы управления на форме в две колонки, так, чтобы строки ввода с нечётными значениями расположились у левой границы формы, а с чётными — у правой.




При изменении размеров формы строки ввода должны самостоятельно выравниваться по соответствующему краю.

Вариант 4


В момент создания главной формы приложения динамически создайте 64 прямоугольника с помощью компонента TShape. Окрасьте фигуры в чёрный и белый цвета и равномерно разместите по клиентской части формы, так чтобы получилась мозаика, напоминающая шахматную доску.




При изменении размеров формы ячейки “шахматной доски” должны самостоятельно подстраиваются под новые размеры.

Вариант5


В момент создания главной формы приложения динамически создайте 8 белых и 8 чёрных прямоугольников с помощью компонента TShape. Разместите созданные фигуры по диагоналям формы так
, чтобы в диагонали находились фигуры одного цвета


При изменении размеров формы прямоугольники должны самостоятельно подстраиваются под новые размеры.

Совет

  1. В момент создания главной формы проекта у неё возникает событие OnCreate().

  2. Чтобы ваше приложение смогло отреагировать на изменение размера формы воспользуйтесь событием OnResize() формы проекта!




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


В классе TControl определена реакция на большую часть событий инициируемых с помощью мыши. Эти события можно условно разделить на 4 группы:

  • щелчки кнопками мыши по элементу управления;

  • перемещение указателя мыши над элементом управления;

  • вращение колесика мыши;

  • операция перетаскивания drag and drop.



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


Самым востребованным событием в Delphi является щелчок левой кнопкой мыши над областью компонента.

property OnClick: TNotifyEvent;

Событие OnClick() не только самое распространенное, но и наиболее простое с точки зрения обработки. Это событие у всех элементов управления описывается процедурой

type TNotifyEvent = procedure(Sender: TObject) of object;

обладающей всего одним параметром Sender, в котором находится ссылка на объект, послуживший источником события.
Внимание!

Параметр Sender имеется во всех обработчиках событий, благодаря ему программист сможет идентифицировать вызвавший событие элемент управления.
Рассмотрим пример, демонстрирующий возможность разделять один обработчик события сразу несколькими элементами управления. Для реализации примера разместите на главной форме проекта кнопку Button1:TButton, многострочный редактор Memo1:TMemo и несколько любых других визуальных элементов управления, которые вы найдете на палитре компонентов Delphi.

Выберите кнопку Button1 и напишите всего одну строку кода в
обработчике события (листинг 5.1).


Листинг 5.1. Получение имени компонента по параметру Sender




procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Lines.Add((Sender as TComponent).Name);

end;
Щелчок по кнопке приводит к появлению в многострочном редакторе Memo1 строки с именем компонента, вызвавшего событие (в данном случае кнопки Button1).

Выберите на форме любой другой компонент. Перейдите на вкладку Events (События) в Инспекторе объектов, в перечне событий найдите событие OnClick и сопоставьте с ним событие Button1Click (рис. 5.1). Наши действия приведут к тому, что два компонента станут разделять между собой один общий обработчик события. Аналогичным образом подключите к событию все остальные компоненты (включая форму) и запустите проект на выполнение. Щелкните по любому из компонентов — его имя сразу появится в отдельной строке многострочного редактора Memo1.


Рис. 5.1. Разделение одного обработчика события между несколькими компонентами
Наряду с одинарным щелчком большой популярностью пользуется двойной щелчок кнопкой мыши над элементом управления. А в ответ на это у потомков TControl генерируется событие

property OnDblClick: TNotifyEvent;

Как видите, событие двойного щелчка кнопкой мыши типизирована процедурой TNotifyEvent, поэтому обработка двойного щелчка ведется по таким же правилам, что обработка одинарного.

Более широкие возможности предоставляют обработчики, раздельно контролирующие нажатие и отпускание кнопок мыши:

property OnMouseDown: TMouseEvent; //кнопка нажимается property OnMouseUp : TMouseEvent; //кнопка отпускается где:

TMouseEvent
= procedure (Sender: TObject;Button: TMouseButton;

Shift: TShiftState; X, Y: Integer) of object;

В табл. 5.1 представлен список параметров, позволяющих описывать реакцию элемента управления на событие.

Таблица5.1.ОписаниепараметровTMouseEvent


Параметр

Возможные значения

Описание

Sender

Ссылка на объект

Ссылка на источник сообщения

Button

mbLeft

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

mbRight

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

mbMiddle

Щелчок центральной кнопкой мыши

Shift

ssShift

Удерживается в нажатом состоянии клавиша

ssAlt

Удерживается в нажатом состоянии клавиша

ssCtrl

Удерживается в нажатом состоянии клавиша

ssLeft

Нажимается/отпускается левая кнопка мыши

ssRight

Нажимается/отпускается правая кнопка мыши

ssMiddle

Нажимается/отпускается центральная кнопка мыши

ssDouble

Двойной щелчок любой кнопкой




X, Y

Integer

Координаты указателя мыши


Простейший прием обработки события