
- •Курс лекцій
- •Київ-Черкаси 20010
- •1 Об‘єктно-орієнтоване програмування
- •1.1. Складові класу
- •1. Поля
- •2. Методи
- •3. Властивості
- •1.2 Оголошення класу
- •2 Огляд палітри компонентів
- •2.1 Стандартні компоненти
- •2.2 Сторінки Additional та System
- •3 Обробка виняткових ситуацій у delphi
- •Структурна обробка виняткових ситуацій
- •Модель виняткових ситуацій у Delphi
- •Синтаксис обробки виняткових ситуацій
- •Приклади обробки виняткових ситуацій
- •Виклик виняткової ситуації
- •Доступ до екземпляра об'єкта exception
- •3.4 Визначені оброблювачі виняткових ситуацій
- •3.4.1 Виключення, що виникають при роботі з базами даних
- •4 Графічні можливості delphi
- •Олівець і кисть
- •Олівець
- •Лістинг 4.1 Стилі заповнення областей
- •Вивід тексту
- •Методи креслення графічних примітивів
- •Лістинг 4.2 Осі координат і оцифрована сітка
- •Ламана лінія
- •Лістинг 4.3 Графік функції (використання методу Polyline)
- •Лістинг 4.4 Креслення замкнутого контуру (зірки) у точці натискання кнопки миші
- •Окружність і еліпс
- •Прямокутник
- •Багатокутник
- •Лістинг 4.5. Графік функції
- •Вивід ілюстрацій
- •Лістинг 10.6 Слайд-проектор
- •Бітові образи
- •Лістинг 4.7. Використання бітових образів
- •5 Робота з базами данних в delphi
- •Властивість sql
Ламана лінія
Метод polyline вичерчує ламану лінію. Як параметр метод одержує масив типу TPoint. Кожен елемент масиву являє собою запис, полючи х и у якої містять координати точки перегину ламаної. Метод Polyline вичерчує ламану лінію, послідовно з'єднуючи прямими точки, координати яких знаходяться в масиві: першу з другий, другу з третьої, третю з четвертої і т.д.
Як приклад використання методу Polyline у лістингу 4.3 приведена процедура, що виводить графік зміни деякої величини. Передбачається, що вихідні дані знаходяться в доступному процедурі масиві Data (тип Integer).
Лістинг 4.3 Графік функції (використання методу Polyline)
procedure TForml.Button1Click(Sender: TObject);
var
gr: array[1..50] of TPoint; // графік — ламана лінія
x0,y0: integer; // координати точки початку координат
dx,dy: integer; // крок координатної сітки по осях X і Y
i: integer; begin
х0 := 10; у0 := 200; dx :=5; dy := 5;
// заповнимо масив gr
for i:=l to 50 do begin
gr[i].x := x0 + (i-l)*dx;
gr[i].y := y0 - Data[i]*dy;
end;
// будуємо графік
with forml.Canvas do begin
MoveTo(x0,y0); LineTo(x0,10); // вісь Y
MoveTo(x0,y0); LineTo(200,y0); // вісь X
Polyline(gr); // графік
end;
end;
Метод Polyline можна використовувати для креслення замкнутих контурів. Для цього треба, щоб перший і останній елементи масиву містили координати однієї і тієї ж крапки. Як приклад використання методу Polyline для креслення замкнутого контуру в лістингу 4.4 приведена програма, що на поверхні діалогового вікна, у точці натискання кнопки миші, вичерчує контур п'ятикутної зірки (мал. 4.5). Колір, яким викреслюється зірка, залежить від того, яка з кнопок миші була натиснута. Процедура обробки натискання кнопки миші (подія MouseDown) викликає процедуру малювання зірки starLine і передає їй як параметр координати точки, у якій була натиснута кнопка. Зірку вичерчує процедура starLine, що як параметри одержує координати центра зірки і полотно, на якому зірка повинна бути виведена. Спочатку обчислюються координати кінців і западин зірки, що записуються в масив р. Потім цей масив передається як параметр методу Polyline. При обчисленні координат променів і западин зірки використовуються функції sin і cos. Тому що аргумент цих функцій повинний бути виражений у радіанах, то значення кута в градусах домножується на величину pi/180, де pi — це стандартна іменована константа рівна числу π.
Лістинг 4.4 Креслення замкнутого контуру (зірки) у точці натискання кнопки миші
unit Stars_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Forml: TForml;
implementation
{$R *.dfm}
// вичерчує зірку
procedure StarLine(x0,y0,r: integer; Canvas: TCanvas);
// x0,y0 — координати центра зірки
//r — радіус заїзди var
р : array [1.. 11] of TPoint;
// масив координат променів і западин
a: integer; // кут між віссю ОХ і прямої, що з'єднує
// центр зірки і кінець чи лучачи западину i: integer;
begin
а := 18; // будуємо від правого гор. променя
for i:=l to 10 do begin
if (i mod 2=0) then begin // западина
p[i].x := x0+Round(r/2*cos(a*pi/180) ) ;
p[i] .y:=y0-Round(r/2*sin(a*pi/180) ) ;
end
else
begin // промінь
[i] .x:=x0+Round(r*cos (a*pi/180) ) ;
[i] .y:=y0-Round(r*sin(a*pi/180) ) ;
end;
a := a+46;
end;
p[ll].X := p[l].X; // щоб замкнути контур зірки
Canvas. Polyline (р) ; // накреслити зірку
end;
// натискання кнопки миші
procedure TForm1 . FormMouseDown { Sender : TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft // натиснута ліва кнопка?
then Form1. Canvas . Pen . Color : = clRed
else Form1. Canvas. Pen. Color := clGreen;
StarLine(x, y, 30, Forml. Canvas );
end;
end.
Рис.4.5 Зірка
Примітка
Зверніть увагу, що розмір масиву р на одиницю більше, ніж кількість кінців і западин зірки, і що значення першого й останнього елементів масиву збігаються.