Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник лабораторных работ(Delphi).doc
Скачиваний:
33
Добавлен:
16.08.2019
Размер:
3.26 Mб
Скачать

Лабораторная работа№28 Печать текстовая и графическая.

Цель занятия: научиться выводить на печать созданные в Delphi приложения.

Студент должен

знать:

  • способы вывода информации на печать из программы, созданной в Delphi;

уметь:

  • выводить документ в текстовом режиме принтера;

  • выводить графику с помощью объекта TPrinter;

  • печатать содержимое формы.

Примеры и задания.

Рассмотрите приведенный ниже пример, письменно поясните процедуры, расставьте комментарии к командам

Пример.

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

Var

Form1:Tform;

Implementation

{ $R*.dfm}

Uses Printers;

Procedure Tform1.FormCreate (Sender: Tobject);

Var

I: Integer;

begin

With StringGrid do

Begin

Cells[0,0]:= '№';

Cells[1,0]:= 'Наименование ';

Cells[2,0]:= 'цена';

Cells[3,0]:= 'К - во';

Cells[4,0]:= 'Сумма';

For I:= 1 to 10 do

Cells[0,i ]:=' ' + IntToStr (i);

End;

End;

Procedure Tform1.Button2Click (Sender: Object );

Const

Left_Margin = 2;

Top_Margin = 2;

Var

Dpix, dpiy : integer;

Kx, ky: real;

p: array [0 .. 4] of integer; x1, y1, x2, y2: integer;

px, py: integer;

I, j: integer;

begin

dpix: = GetDeviceCaps(Printer.Handle,LogPixelsx);

dpiy: = GetDeviceCaps(Printer.Handle,LogPixelsy);

kx: = dpix/Screen.PixelsPerInch;

ky: = dpiy/Screen.PixelsPerInch;

px: = Round(Left_Margin /2.54 * dpix );

py: = Round(Top_Margin /2.54 * dpiy ;

p [0] : = px;

For i := 1 to 4 do

Begin

P[i]:= p [i-1] + Round (StringGrid1.Colwidths[ i - 1 ] * kx;

End;

With Printer do

Begin

BeginDoc;

Canvas. Font. Name := Edit1.Font.Name;

Canvas. Font.Size := Edit1.Font.Size;

Canvas. TextOut (px, py, Edit1.Text );

py:= py + Round (Edit1.Font.Size*2*ky );

x1:= px; y1 := py;

Canvas. Font. Name := StringGrid1.Font.Name;

Canvas. Font.Size := StringGrid1.Font.Size;

X2:= p [4] + Round(StringGrid1.ColWidths[4] * kx);

Y2:= py + Round (StringGrid1.RowCount * StringGrid1.RowHeights [1] * ky ) ;

For j:= 0 to StringGrid1.RowCount do

Begin

for i := 0 to StringGrid1.ColCount do

begin

Canvas. TextOut [p [i], py, StringGrid1.Cells[i,j];

Canvas.MoveTo (p[0], py );

Canvas.LineTo (x2, py);

End;

Py:= py + Round (StringGrid1.RowHeights [j] * ky);

End;

for i:= 0 to StringGrid1.Colcount - 1 do

begin

Canvas.MoveTo(p[i],y1);

Canvas.LineTo(p[i],y2);

End;

Canvas.MoveTo(x2,y1);

Canvas.LineTo(x2,y2);

EndDoc;

End;

End;

End.

Контрольные вопросы:

  1. Какие вы знаете способы вывода информации на печать из программы, созданной в Delphi?

  2. Как выводить документ в текстовом режиме принтера?

  3. Как выводить графику с помощью объекта TPrinter?

  4. Как распечатать содержимое формы?

Лабораторная работа№29 Работа с базами данных

Цель работы: научиться создавать приложения, работающие с базами данных

Студент должен

знать:

  • компоненты для доступа к источникам данных

  • классы предназначенные для работы с данными

  • компоненты управления данными

  • события, инициируемые при работе с базами данных

уметь:

  • работать с базой данных.

Работа с базами данных

  1. Прежде чем приступать к разработке приложения, работающего с базами данных, необходимо выполнить ряд подготовительных работ, а именно, продумать структуру будущей базы данных, состав таблиц, форматы полей, определить необходимые индексы, для связи таблиц базы, а также зарегистрировать базу данных в программе BDE (Borland Database Engine) для последующего переноса на ПК.

  2. Создание базы данных.

База данных обычно состоит из ряда таблиц (файлов) и индексов, предназначенных для связи таблиц между собой. В программой среде Delphi возможно использовать как локальные (настольные), так и серверные (сетевые базы данных). Для простоты и наглядности использования будем рассматривать настольные базы данных. Основным стандартом настольных БД в Delphi является формат Paradox.

Основные файлы базы данных Paradox (файлы с указанными расширениями):

    • DB – таблица с данными;

    • MB – BLOB поля (это поле типа MEMO);

    • PX – главный ключ таблицы;

    • XG и YG – вторичные ключи таблицы.

Основные форматы полей таблицы PARADOX:

Alpha

строка длиной 1-255 байт, содержащая любые печатаемые символы

Number

числовое поле длиной 8 байт, значение которого может быть положительным и отрицательным. Диапазон чисел - от 10-308 до 10308 с 15 значащими цифрами

$ (Money)

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

Short

числовое поле длиной 2 байта, которое может содержать только целые числа в диапазоне от -32768 до 32767

Long Integer

числовое поле длиной 4 байта, которое может содержать целые числа в диапазоне от -2147483648 до 2147483648

# (BCD)

числовое поле, содержащее данные в формате BCD (Binary Coded Decimal). Скорость вычислений немного меньше, чем в других числовых форматах, однако точность - гораздо выше. Может иметь 0-32 цифр после десятичной точки

Date

поле даты длиной 4 байта, которое может содержать дату от 1 января 9999 г. до нашей эры - до 31 декабря 9999 г. нашей эры. Корректно обрабатывает високосные года и имеет встроенный механизм проверки правильности даты

Time

поле времени длиной 4 байта, содержит время в миллисекундах от полуночи и ограничено 24 часами

@ (Timestamp)

обобщенное поле даты длиной 8 байт - содержит и дату и время

Memo

поле для хранения символов, суммарная длина которых более 255 байт. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (1-240) - остальные символы сохраняются в отдельном файле с расширением .MB

Formatted Memo

поле, аналогичное Memo, с добавлением возможности задавать шрифт текста. Также может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) - остальные символы сохраняются в отдельном файле с расширением .MB. Однако, Delphi в стандартной поставке не обладает возможностью работать с полями типа Formatted Memo

Graphic

поле, содержащее графическую информацию. Может иметь любую длину. Смысл размера - такой же, как и в Formatted Memo. Database Desktop “умеет” создавать поля типа Graphic, однако наполнять их можно только в приложении

OLE

поле, содержащее OLE-данные (Object Linking and Embedding) - образы, звук, видео, документы - которые для своей обработки вызывают создавшее их приложение. Может иметь любую длину. Смысл размера - такой же, как и в Formatted Memo. Database Desktop “умеет” создавать поля типа OLE, однако наполнять их можно только в приложении. Delphi “напрямую” не умеет работать с OLE-полями, но это легко обходится путем использования потоков

Logical

поле длиной 1 байт, которое может содержать только два значения - T (true, истина) или F (false, ложь). Допускаются строчные и прописные буквы

+ (Autoincrement)

поле длиной 4 байта, содержащее нередактируемое (read-only) значение типа long integer. Значение этого поля автоматически увеличивается (начиная с 1) с шагом 1 - это очень удобно для создания уникального идентификатора записи (физический номер записи не может служить ее идентификатором, поскольку в Парадоксе таковой отсутствует. В InterBase также отсутствуют физические номера записей, но отсутствует и поле Autoincrement. Его с успехом заменяет встроенная функция Gen_id, которую удобней всего применять в триггерах)

Binary

поле, содержащее любую двоичную информацию. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) - остальные символы сохраняются в отдельном файле с расширением .MB. Это полнейший аналог поля BLOb в InterBase

Bytes

строка цифр длиной 1-255 байт, содержащая любые данные

Пример:

Рассмотрим создание базы данных на примере телефонного справочника производственного отдела завода, который будет состоять всего из одной таблицы telef.db, состав полей следующий:

family – фамилия абонента;

fio – имя и отчество абонента;

tel – телефон абонента

org_short – сокращенное название отдела

Dolg – должность

Prim - примечания

Создание таблицы базы данных с помощью программы Database Desktop

Для этого из меню ПУСК-ПРОГРАММЫ-BORLAND DELPHI выбираем пункт Tools, Databese Desktop в результате загрузится нужная программа.

Выбираем пункт меню

далее нажимаем ОК.

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

Для сохранения используйте кнопку SAVE.

Даем название таблицы и сохраняем в папку, где будет создаваться программа. Например, назовем таблицы telef.db и сохраним в папку C:\temp\88888.

После этого DataBase Desktop можно закрыть.

Заполнять таблицу не будем, это можно сделать с помощь разработанной программы.

На этом этапе создание базы данных заканчивается.