Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ и ПУ / Лабораторные_работы_по_ЭВМ_и_ПУ._Часть_1.doc
Скачиваний:
27
Добавлен:
04.03.2016
Размер:
585.73 Кб
Скачать

Пример программы

Ниже приведен вид формы и текст модуля приложения, выводящего на печать содержимое поля Memo и картинку.

Форма приложения представлена на рисунке 2.

Рисунок 2 — Вид формы приложения

Текст модуля приложения:

unit PrintDemo_;

interface

uses

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

Dialogs, jpeg, ExtCtrls, StdCtrls, Printers;

type

TfrmPrintDemo = class(TForm)

btnPrintMemo: TButton;

Memo: TMemo;

Image: TImage;

btnPrintImage: TButton;

PrintDialog: TPrintDialog;

procedure btnPrintMemoClick(Sender: TObject);

procedure btnPrintImageClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmPrintDemo: TfrmPrintDemo;

implementation

{$R *.dfm}

Процедура печати текста из Memo

procedure TfrmPrintDemo.btnPrintMemoClick(Sender: TObject);

var i:integer;

Prn:TextFile;

begin

//Если запущен диалог печати и не было отмены

if PrintDialog.Execute then begin

//Задание количества копий

Printer.Copies:=PrintDialog.Copies;

//Задание параметров шрифта

Printer.Canvas.Font.Name:='Times New Roman';

Printer.Canvas.Font.Size:=14;

//Связывание текстового файла с принтером по умолчанию

AssignPrn(Prn);

try

//Открытие файла для записи

Rewrite(Prn);

try

//Вывод строк из поля Memo

for i := 0 to Memo.Lines.Count — 1 do

writeln(Prn, Memo.Lines[i]);

finally

//Закрытие принтера

CloseFile(Prn);

end;

except

//Сообщение при ошибке

on EInOutError do

MessageDlg('Ошибка печати текста.', mtError, [mbOk], 0);

end;

end;

end;

Процедура печати картинки из Image

procedure TfrmPrintDemo.btnPrintImageClick(Sender: TObject);

var ScaleX, ScaleY: Integer;

RR: TRect;

begin

if PrintDialog.Execute then

try

with Printer do begin

Copies:=PrintDialog.Copies;

BeginDoc; //Начало печати

try

//Вычисление масштабирующих множителей

ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;

ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;

//Выделение области для печати

RR := Rect(0, 0, Image.picture.Width * scaleX, Image.Picture.Height * ScaleY);

//Печать области (вывод на канву принтера)

Canvas.StretchDraw(RR, Image.Picture.Graphic);

finally

EndDoc; //Конец печати

end;

end;

except

//Сообщение при ошибке

on EInOutError do

MessageDlg('Ошибка печати', mtError, [mbOk], 0);

end;

end;

end.

Задания для самостоятельного выполнения

Выполните индивидуальное задание из таблицы 3 в соответствии со своим вариантом.

Таблица 3 – Варианты индивидуальных заданий

Вариант

Задание

Разработать приложение для вывода содержимого компонента класса TMemo на печать с использованием функции канвы принтера TextOut.

Разработать приложение для вывода строк, содержащихся в компоненте класса TListBox на печать с использованием функции канвы принтера TextOut.

Разработать приложение для печати графика функции, построенного на компоненте класса TImage на печать.

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

Разработать приложение для вывода содержимого компонента класса TMemo на печать с использованием вывода на принтер, как в текстовый файл. Приложение должно иметь возможность настройки шрифта выводимого текста.

Разработать приложение для вывода строк, содержащихся в компоненте класса TListBox на печать с использованием вывода на принтер, как в текстовый файл. Приложение должно иметь возможность настройки шрифта выводимого текста.

Разработать приложение для вывода содержимого компонента класса TStringGrid на печать в виде таблицы с использованием функции канвы принтера TextOut.

Разработать приложение для печати изображения, нарисованного на компоненте класса TPaintBox на печать.

Разработать приложение для вывода содержимого компонента класса TRichEdit на печать с использованием вывода на принтер, как в текстовый файл. Приложение должно иметь возможность настройки шрифта выводимого текста.

Разработать приложение для вывода содержимого компонента класса TListView на печать с использованием функции канвы принтера TextOut.

Разработать приложение для вывода содержимого компонента класса TRichEdit на печать с использованием функции канвы принтера TextOut.

Разработать приложение для вывода содержимого компонента класса TValurListEditor на печать с использованием функции канвы принтера TextOut.