- •Министерство образования респулики беларусь
- •Оглавление
- •Устройства ввода Краткие теоретические сведения
- •Пример приложения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Устройства вывода. Работа с принтером Краткие теоретические сведения
- •Компонент tPrintDialog
- •Пример программы
- •Процедура печати текста из Memo
- •Процедура печати картинки из Image
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Работа с накопителями Рекомендации по выполнению работы
- •Пример программы
- •Обработчик нажатия кнопки
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Работа с параллельным портом Основные теоретические сведения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Список использованных источников
Пример приложения
Ниже приведен текст модуля приложения, отображающего координаты курсора мыши в заголовке формы при его перемещении, рисующего на форме круг при нажатии левой кнопки мыши, перемещающего последний нарисованный круг при нажатии на клавиатуре клавиш управления курсором при нажатой клавише Shift, очищающего форму при нажатии клавиши «Escape».
unit MouseKey_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TfrmMain = class(TForm)
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
var x_glbl, y_glbl:integer;//глобальные переменные для хранения координат
radius:integer;//радиус
{$R *.dfm}
//Обработчик перемещения курсора мыши над формой
procedure TfrmMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
//Отображение коородинат курсора в заголовке формы
frmMain.Caption:='x='+inttostr(x)+', y='+inttostr(y);
end;
//Обработчик нажатия клавиши клавиатуры
procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ssShift in Shift then begin //Если при нажатии удерживалась клавиша Shift
frmMain.Canvas.Pen.Color:=frmMain.Color; //Цвет карандаша = цвету формы
frmMain.Canvas.Brush.Style:=bsSolid; //Сплошная заливка
frmMain.Canvas.Brush.Color:=frmMain.Color;//Цвет заливки = цвету формы
//Закрашивается нарисованный круг
frmMain.Canvas.Ellipse(x_glbl-radius,y_glbl-radius,x_glbl+radius,y_glbl+radius);
case Key of
vk_Down: begin //Если была нажата клавиша "вниз" увеличивается у
if y_glbl<frmMain.Height-radius-25 then y_glbl:=y_glbl+5;
end;
vk_Up: begin //Если была нажата клавиша "вверх" уменьшается у
if y_glbl>radius+4 then y_glbl:=y_glbl-5;
end;
vk_Left: begin //Если была нажата клавиша "влево" уменьшается х
if x_glbl>radius+4 then x_glbl:=x_glbl-5;
end;
vk_Right: begin //Если была нажата клавиша "вправо" увеличивается х
if x_glbl<frmMain.Width—25 then x_glbl:=x_glbl+5;
end;
end;
frmMain.Canvas.Pen.Color:=clRed; //Цвет карандаша - красный
frmMain.Canvas.Brush.Style:=bsSolid; //Сплошная заливка
frmMain.Canvas.Brush.Color:=clBlue; //Цвет заливки - синий
//Отрисовка круга в новом месте
frmMain.Canvas.Ellipse(x_glbl—radius,y_glbl—radius,x_glbl+radius,y_glbl+radius);
end;
if Key=vk_Escape then begin //Если была нажата клавиша "Escape"
frmMain.Canvas.Pen.Color:=frmMain.Color; //Цвет карандаша = цвету формы
frmMain.Canvas.Brush.Style:=bsSolid; //Сплошная заливка
frmMain.Canvas.Brush.Color:=frmMain.Color;//Цвет заливки = цвету формы
//Рисование прямоугольника на всей форме, т.е. очистка канвы
frmMain.Canvas.FillRect(Rect(0,0,frmMain.Width,frmMain.Height));
end;
end;
//Обработчик создания формы
procedure TfrmMain.FormCreate(Sender: TObject);
begin
radius:=10; //Радиус окружности
end;
//Обработчик нажатия кнопки мыши
procedure TfrmMain.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
frmMain.Canvas.Pen.Color:=clRed; //Цвет карандаша - красный
frmMain.Canvas.Brush.Style:=bsSolid; //Сплошная заливка
frmMain.Canvas.Brush.Color:=clBlue; //Цвет заливки - синий
//Рисование круга
frmMain.Canvas.Ellipse(x-radius,y-radius,x+radius,y+radius);
x_glbl:=x; //Занесение значений координат последнего круга
y_glbl:=y; //в глобальные переменные
end;
end.