Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Podprogrammy.doc
Скачиваний:
37
Добавлен:
23.08.2019
Размер:
1.92 Mб
Скачать

Оператор доступа

Оператор доступа служит для удобной и быстрой работы с составными частями объектов, в том числе с полями записей. Напомним, что для обращения к полю записи необходимо указывать имя записи и имя этого поля, разделенные точкой. Аналогичным путем образуется имя составной части какого-либо объекта, например, формы или кнопки. Оператор доступа имеет следующий основной формат:

with <Имя объекта> do <Оператор>

В операторе, расположенном после слова do, для обращения к составной части объекта можно не указывать имя этого объекта, которое уже задано после слова with.

Пример. Использование оператора доступа.

// Составные имена пишутся полностью

Form1.Canvas.Pen.Color := clRed;

Form1.Canvas.Pen.Width := 5;

Form1.Canvas.Rectangle(10, 10, 100, 100);

ИЛИ

// Использование оператора доступа

with Form1.Canvas do begin

Pen.Color := clRed;

Pen.Width := 5;

Rectangle(10, 10, 100, 100);

end;

В обоих приведенных примерах на форме красным пером толщиной пять пикселей рисуется прямоугольник. Для обращения к свойствам и методу (процедуре) поверхности рисования формы удобно использовать оператор доступа (второй вариант).

Рисование многоугольников в Delphi

Нарисовать красным цветом треугольник и закрасить его в желтый цвет.

Procedure Form1.FormPaint (Sender:TObject);

Var x,y:integer; p:array [1..4] of Tpoint;

Begin

x:=30; y:=250;

with Canvas do begin

Pen.Color:=clRed;

Brush.Color:=clYellow;

p[1].X:=x; p[1].Y:=y

p[2].X:=x+100; p[2].Y:=y-100

p[3].X:=x+200; p[3].Y:=y

p[4].X:=x; p[4].Y:=y

polygon(p);

end;

end;

Закрашивание произвольной области в Delphi

Класс Canvas содержит процедуру FloodFill, которая может работать в двух вариантах: или закрашивать область текущим цветом до границы заданного цвета, или перекрашивать точки заданного цвета до границы любого другого цвета (в этом случае граница может состоять даже из частей разного цвета!). Различаются эти варианты значением последнего параметра процедуры — fsBorder или fsSurface.

Например, закрасим красным область с границей черного цвета:

Canvas.Brush.Color := clRed;

Canvas.FloodFill (X, Y, clBlack, fsBorder);

А теперь перекрасим красную область в синий цвет:

Canvas.Brush.Color := clBlue;

Canvas.FloodFill (X, Y, clRed,. fsSurface) ;

Обычно мы не знаем заранее, какого цвета область, которую мы собираемся перекрашивать. Но это легко можно определить с помощью свойства Pixels, в котором хранятся цвета всех точек изображения. Pixels[X,Y] и есть цвет точки канвы с координатами X, Y.

Работа с несколькими формами

Задача. Осуществить переход между формами по щелчку.

Для того, чтобы добавить новую форму, необходимо выполнить команду File/New/Form.

Тогда в разделе программного кода появится модуль Unit2, предназначенный для второй формы.

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

Чтобы менять формы местами, их нужно поочередно показывать и скрывать. За данные действия отвечают соответственно методы Show и Hide.

Чтобы осуществить переход между формами по щелчку, необходимо запрограммировать следующие процедуры.

В модуле первой формы

procedure TForm1.FormClick(Sender: TObject);

begin

Form2.Show;

Form1.Hide;

end;

В модуле второй формы

procedure TForm2.FormClick(Sender: TObject);

begin

Form1.Show;

Form2.Hide;

end;

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