
Printer
Объект Printer автоматически создается, если в программе указана ссылка на модуль Printers. Этот объект предоставляет программисту все необходимое для того, чтобы заставить программу выводить данные на один из подключенных к компьютеру принтеров.
Вывод на принтер в Windows ничем не отличается от вывода на экран: в распоряжение программиста предоставляется свойство Canvas объекта Printer, содержащее набор графических инструментов и методы, свойственные классу TCanvas (подробнее см. раздел «Графический инструментарий» в главе 13). Размер листа бумаги в пикселах принтера определяют свойства Не ight и Width, а набор принтерных шрифтов - свойство Fonts.
Свойства объекта Printer перечислены в табл. 22.5.
Методы
объекта Printer
перечислены в табл. 22.6.
Существует множество способов печати текста на принтере. Прежде всего следует упомянуть о глобальной процедуре AssignPrn (она определена в модуле Printers), позволяющей использовать принтер как текстовый файл и печатать текстовые строки с помощью процедуры WriteLn. В листинге 22.2 приведен полный текст модуля, на форме которого расположено многострочное текстовое поле Memo 1 и 4 кнопки: для выбора текстового файла и ввода его содержимого в поле, для выбора нужного шрифта отображения/печати документа, для инициирования процесса печати и для завершения работы программы (проект Chap_22\Print of Text (AssignPrn)\PrintText.dpr).
Листинг 22.2 Печать с помощью процедуры AssiqnPrn
Такой способ печати - самый примитивный. С его помощью невозможно вывести линии, разделяющие колонки или строки, трудно форматировать текст, вставлять заголовки, номера страниц и т.п.
Значительно более гибкие средства обеспечивает свойство Printer. Canvas. В листинге 22.3 показано, как с его помощью можно напечатать текст, содержащийся в поле Memol (проект Chap_22\Print of Text(Canvas)\PrintText.dpr).
Как видим, прямое обращение к графическим инструментам свойства Canvas требует от программиста значительно больших усилий, но зато предоставляет ему полный контроль над печатным изображением.
Наконец, очень хороших результатов можно достичь, используя специализированные средства просмотра/печати документов, такие как текстовый процессор MS Word.
Печать изображений может показаться очень сложным делом, однако свойство Printer. Canvas содержит метод, который легко справляется с этой задачей:
При обращении к этому методу первым параметром указывается прямоугольная область, отводимая на поверхности листа для распечатки изображения, вторым - объект класса TGraphic, в котором хранится изображение.
Например:
Не
следует забывать также о том, что любая
форма, являющаяся потомком базового
класса TCustomForm,
получает метод Print,
с помощью которого на принтере печатается
клиентская часть формы (без заголовка
и рамки).
Clipboard
В Windows широко используется буфер обмена (clipboard). Если в программе Delphi сослаться на модуль Clipbrd, для нее становится доступным автоматически созданный объект Clipboard, инкапсулирующий свойства (табл. 22.7) и методы (табл. 22.8) для работы с буфером обмена.
Большая часть компонентов, предназначенных для хранения текста и/или изображений, имеют собственные методы для работы с буфером обмена. Например, текстовые поля TEdit, TMemo, TRichEdit имеют методы CopyToClipboard (Копировать в буфер), CutToClipboard (Вырезать и поместить в буфер), Paste-FromClipboard (Вставить из буфера); компонент TImage имеет свойство Picrture класса TPicture, которое инкапсулирует методы LoadFromClip-boardFormat, SaveToClipboardFormat и RegisterClipboardFormat - с помощью этих методов компонент обменивается с буфером изображениями определенного формата и может зарегистрировать в нем новый формат изображения. Тем не менее эти и другие компоненты для работы с буфером обмена могут использовать свойство AsText объекта Clipboard и его методы Assign, GetTextBuffer, SetTextBuf f er. Например, чтобы поместить в буфер обмена изображение, хранящееся в объекте Imagel, можно обратиться к методу Assign буфера:
А для копирования изображения и.ч буфера обмена можно обратиться к метолу
Picture .Assign компонента Imagel:
Метка не имеет средств работы с буфером обмена, но программа может прочитать в нее текст из буфера:
Можно также поместить в буфер обмена содержимое свойства Caption метки:
Настройка программы
Удобным средством хранения индивидуальных параметров программы являются широко используемые в Windows 3.x файлы инициализации (файлы с расширением INI). Для 32-разрядных версий Windows индивидуальная настройка программ чаще всего реализуется с помощью системного реестра. В этом разделе рассматриваются оба способа, так как даже если вы работаете с 32-разрядной версией Windows, перенос программ на другие компьютеры и их настройку проще реализовать с помощью файлов инициализации.
Файлы инициализации
Файлы инициализации в Delphi связаны с объектами класса TIniFile. Эти объекты не являются глобальными и создаются программно по мере надобности. С каждой программой можно связать сколько угодно файлов инициализации.
Физически файл инициализации представляет собой обычный текстовый файл, который сохраняется либо в каталоге запуска программы (локальный файл инициализации), либо в каталоге запуска Windows (глобальный файл инициализации). Файл содержит ряд секций, каждая из которых имеет заголовок и следующие за ним параметры. Заголовок - это произвольный английский текст, заключенный в квадратные скобки. Каждый параметр представлен строкой вида:
В этом примере в секции Location файла инициализации представлены два параметра с именами DataBase и Graphics. Объекты класса TIniFile предоставляют удобные средства чтения/записи параметров по именам параметров и секций.