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

Вывод текста

С помощью метода TextOut можно вывести строку, начиная с точки с коорди­натами X,Y. Текст выводится с помощью текущего шрифта. Синтаксис метода:

procedure TextOut(X, Y: Integer; const Text: string);

Где Text – задает строку, которую необходимо вывести

X,Y – координаты точки, откуда выводить.

Например: TextOut(50,50,‘Привет’);

События формы OnPaint и OnResize

Программный код, позволяющий рисовать в окне, можно запускать по кнопке. Также у окна есть события, которые имеют специальное назначение, такие как OnPaint и OnResize.

Событие OnPaint – используется для перерисовки окна. Например, если окно закрывается другим окном, то для восстановления изображения в окне, когда оно снова становится окном переднего плана, можно использовать событие OnPaint. Событие OnPaint должно содержать программный код, отвечающий за перерисовку окна.

Например, проделайте такое простое упражнение:

  1. На событие OnPaint формы навесим обработчик, который рисует в окне какую-нибудь простую фигуру, например, окружность.

  2. Запустим программу на выполнение

  3. Закроем окно приложения любым другим окном

  4. Снова сделаем окно нашего приложения окном переднего плана

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

Событие OnResize имеет место всякий раз, когда изменяются размеры окна. Для того чтобы узнать, как изменились размеры необходимо воспользоваться событием OnCanResize. Событию передаются переменные:

Sender – указатель на объект источник события;

NewWidth – содержит новое значение ширины объекта;

NewHeight – содержит новое значение высоты объекта;

Resize – содержит true, если была сделана попытка изменить размеры объекта и false в противном случае.

Например, проделаем такое простое упражнение: нарисуем фигуру в окне, например, прямоугольник. Каждый раз при изменении размеров окна, размеры прямоугольника должны изменяться пропорционально растяжению окна по горизонтали и вертикали. Внешний вид окна:

Программный код может иметь следующий вид:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

procedure FormCreate(Sender: TObject);

procedure FormCanResize(Sender: TObject; var NewWidth,

NewHeight: Integer; var Resize: Boolean);

procedure FormResize(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

var

hr,wr:integer; { высота и ширина прямоугольника}

hf,wf:integer; { высота и ширина формы }

x0,y0:integer; { координаты левого верхнего угла прямоугольника}

kx,ky:real; { коэффициенты пропорциональности по x и y}

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

{ задание начальных значений переменным }

x0:=50; y0:=30;

hr:=150; wr:=170;

kx:=hr/width; ky:=wr/height;

end;

procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,

NewHeight: Integer; var Resize: Boolean);

begin

{ код, позволяет определить новые размеры формы}

if resize then

begin

wr:=round(kx*NewWidth);

hr:=round(ky*NewHeight);

with canvas do

begin

// стереть прямоугольник

pen.Color:=color;

brush.Color:=color;

rectangle(x0,y0,x0+wf,y0+hf);

// нарисовать прямоугольник

brush.Color:=clBlue;

rectangle(x0,y0,x0+wr,y0+hr);

end;

end;

end;

procedure TForm1.FormResize(Sender: TObject);

begin

{ сохраняем старые размеры формы в переменных wf и hg }

wf:=width; hf:=height;

end;

end.

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