Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы IT / ЛабаDelphi2.doc
Скачиваний:
68
Добавлен:
06.02.2015
Размер:
189.44 Кб
Скачать

Лабораторная работа №2. Работа в delphi

Работа с буфером обмена, рисование мышью,

контекстное меню, компонент Memo

Задание 1 Научимся работать с буфером обмена помещая и извлекая оттуда графические изображения.

Сбросьте на форму следующие компоненты: Image1 и Image2 (палитра Additional), OpenDialog1 (палитра Dialogs), а также 3 кнопки Button, с заголовками на них так как указано на рис. 1.

Frame1

Назначение кнопок данного приложения будет следующим:

Обработчик щелчка Button1 – Откроет картинку в Image1.

Обработчик щелчка Button2 – Копирует картинку в буфер обмена – объект Clipboard.

Обработчик щелчка Button3 – Загрузит картинку в Image2.

Далее напишите имя подключаемого модуля, который описывает класс объекта Clipboard, т.е. буфера. Для этого в редакторе кода в самом верху после описания стандартных подключаемых модулей идущих после ключевого слова uses подпишите через запятую ClipBrd (для буфера) и Jpeg для возможности открытия файлов *.jpg (рис.2).

Также для обоих компонентов Image с помощью Object Inspector установите их свойство Stretch в значение True, чтобы рисунок подстраивался под их размер.

Frame2

В обработчике щелчка Button1 напишите следующее:

opendialog1.execute; //запустить диалог выбора файлов

image1.Picture.LoadFromFile(opendialog1.FileName);

{Загрузить выбранный файл с именем opendialog1.FileName в свойство Picture

компонента Image1}

В обработчике щелчка Button2 напишите следующее:

ClipBoard.Assign(Image1.Picture);

// Метод Assign копирует в буфер обмена графические

//объекты классов TGraphic, TBitmap, TPicture и т.д.

И наконец в обработчике щелчка Button3 напишите следующее:

If Clipboard.HasFormat(cf_picture)=true

then Image2.Picture.Assign(ClipBoard);

{Метод HasFormat определяет тип содержимого буфера обмена, то есть содержит ли буфер графический объект типа cf_picture}

Запустите программу. Сначала щелкните на Button1, в появившемся диалоге выберите какой – ­нибудь графический файл с расширением *.bmp или *.jpg. После этого картинка из него отобразится на вашей форме в Image1. Далее щелкните на Button2 – скопировав картинку из Image1 в буфер. И как завершающий этап сделайте щелчок на Button3 – поместив изображение из буфера в Image2. Программа должна работать правильно. Вернитесь в режим программирования (РП).

Задание 2.1 Рисование мышью.

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

Создайте новый проект. Определим глобальную переменную булевского типа с именем Drug. Она будет иметь значение “Истина” если движение есть и “Ложь” в противном случае.

Для этого в редакторе кода объявите глобальной переменную Drug типа Boolean (рис.3). Она будет устанавливаться в True, когда будет выполняться операция щелкни и перетащи.

Frame3

Установите начальное значение Drug:=False (движения нет) в обработчике события onCreate для формы.

Чтобы организовать операцию «щелкни и перетащи» требуется 3 последовательных события и соответственно 3 обработчика этих событий.

Первое событие “Нажать кнопку мыши” переходим в обработчик события onMouseDown нажатия кнопки мыши для формы, пишем:

Drug:=True; // устанавливаем что движение должно быть

Canvas.MoveTo(X,Y); // устанавливаем координаты начала рисования

Обратите внимание, что в этом обработчике

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

Передаются X и Y:типа Integer – это координаты текущего указателя мыши на форме.

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

В метод MoveTo(X,Y) передаются координаты текущего указателя мыши на форме, сам данный метод устанавливает координаты, с которых начнется рисование на форме}

Второе событие “Движение мыши” переходим в обработчик события onMouseMove движения мыши на форме, и пишем там следующее:

if Drug=true then Canvas.LineTo(X,Y)

{ LineTo – рисует линию от предыдущей точки к текущей, здесь передаваемые X и Y будут уже другими так как указатель мыши уже на другой точке формы}

Третье событие “Отпускаем кнопку мыши”, и переходим в обработчик события

onMouseUp формы отпускания кнопки мыши и пишем там следующее:

Drug:=False; // устанавливаем что движения недолжно быть

Запустите программу. Убедитесь в правильности ее работы. Вернитесь в режим программирования.

Соседние файлы в папке Лабы IT