Программа printdialog что это

Работа с печатью и изображениями

Аннотация: Печать содержимого RichTextBox. Элементы управления PrintDocument, PageSetupDialog, PrintPreviewDialog, PrintDialog. Работа с изображениями. Печать содержимого PictureBox. Рисование в Windows-формах. Элемент управления TrackBar.

Автоматическое преобразование размера и прокручивание изображения. Создание собственных свойств пользовательского (композитного) элемента управления

Ключевые слова: Windows, печать, приложение, radio button, wordwrap, metafile, pencil
Для работы с данной лекцией используйте примеры.

Тема печати в Windows традиционно относится к одной из самых сложных: наличие огромного количества параметров, свойств и методов делает эту довольно простую вещь сильно запутанной. В этой лекции мы рассмотрим такие несложные задачи, как настройка параметров страницы, предварительный просмотр, печать содержимого элемента RichTextBox , а также преобразование форматов и печать рисунков, помещенных в PictureBox . Элемент PictureBox поддерживает различные режимы просмотра изображений – мы применим их всех и создадим простое приложение , позволяющее просматривать фотографии. Мы также еще раз создадим пользовательский элемент управления с собственными свойствами.

Урок 6 Ввод и вывод данных Python. Функция print() Python

Печать содержимого RichTextBox. Элементы управления PrintDocument, PageSetupDialog, PrintPreviewDialog, PrintDialog

В качестве исходного приложения, в котором будем реализовывать возможность печати, возьмем проект TextEditor, созданный нами во второй лекции. Как мы знаем, максимальный объем элемента TextBox ограничивается 64 Кб, для работы с многостраничными документами этого явно мало. Поэтому удаляем с формы элемент txtBox и на его место помещаем элемент RichTextBox , которому задаем имя rtbText . Свойству Dock устанавливаем значение Fill , кроме того, удаляем значение свойства Text. Изменяем и добавляем следующие пункты главного меню (рис. 6.1):

Name Text Shortcut
mnuFile Открыть CtrlO
mnuSave метры страницы
mnuPrintPreview ПредПечать CtrlP

Пункты главного меню


Рис. 6.1. Пункты главного меню

Перетаскиваем на форму из окна ToolBox элементы управления: PrintDocument , PageSetupDialog , PrintPreviewDialog и PrintDialog . Подобно другим элементам диалогов, они отображаются на панели компонент в среде Visual Studio .NET. При печати формируется одна или несколько страниц, за которые отвечает объект PrintDocument . Элементы управления PageSetupDialog , PrintPreviewDialog и PrintDialog представляют собой диалоговые окна параметров страниц, предварительного просмотра и печати соответственно. Настройка свойств этих объектов представляет собой столь гибкую и широкую задачу, решаемую в коде приложения, что, в отличие, например, от элементов OpenFileDialog или SaveFileDialog , имеет смысл создавать их программно, в классе формы:

47 Delphi 7 Компоненты PrintDialog, PrinterSetupDialog


// PrintDocument printDocument1 = new PrintDocument(); // PageSetupDialog pageSetupDialog1 = new PageSetupDialog(); // PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog(); // PrintDialog printDialog1 = new PrintDialog();

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

Свойству Document элементов управления PageSetupDialog и PrintPreviewDialog устанавливаем значение свойства Name элемента PrintDocument — printDocument1 . Тем самым мы связываем объект printDocument1 , отвечающий за формирование страниц печати, с диалоговыми окнами. Устнавливаем следующие свойства элемента PrintDialog :

printDialog1, свойство Значение Описание
AllowSelection True Разрешение на печать выделенного фрагмента документа
AllowSomePages True Разрешение на печать нескольких страниц
PrintDocument printDocument1 Связывание с экземпляром объекта PrintDocument

На информационной панели окна Properties при выборе свойств AllowSelection или AllowSomePages можно заметить сообщение – Enables and disables the Selection/Pages radio button (Включает или отключает доступность радиопереключателей «Выделенный фрагмент/Страницы»). Само по себе определение этих свойств еще не включает соответствующую функциональность — еще одна причина, по которой конфигурировать объекты печати лучше программно:

InitializeComponent(); // pageSetupDialog1.Document = printDocument1; // printPreviewDialog1.Document = printDocument1; // printDialog1.Document = printDocument1; // printDialog1.AllowSomePages = true; // printDialog1.AllowSelection = true;

Переходим в код формы. Для работы с печатью в библиотеке .NET Framework применяется класс System.Drawing.Printing , поэтому его нужно подключить в самом начале работы:

using System.Drawing.Printing;

В классе формы объявляем следующие переменные:

//Переменная для хранения текста для печати. //В нее мы будем помещать текст из RichTextBox string stringPrintText; //Переменная, определяющая номер страницы, с которой нужно начать печать int StartPage; //Переменная, определяющая количество страниц для печати: int NumPages; //Переменная, определяющая номер текущей страницы: int PageNumber;
Листинг 6.1.

Следует обратить внимание на переменную stringPrintText — именно она будет отвечать за передачу текста в объект печати. Поскольку мы определили для нее строковый тип, это означает, что мы не сможем вывести на печать рисунки в тексте — как мы знаем, элемент RichTextBox поддерживает их наличие (в этом можно убедиться, скопировав содержимое документа Microsoft Word в наше приложение). Определение полной печати будет более сложным, что, впрочем, не является существенным для понимания самой концепции печати 1 1 За ответом на этот вопрос я отправляю читателя к библиотеке MSDN. Если вы поймете общую идею, то без труда сможете нарастить дополнительные возможности на приложение для печати. .

Читайте также:
Программа cloudy для чего

В конструкторе форме определяем диапазон страниц для печати:

public Form1() < InitializeComponent(); … //Определяем номер страницы, с которой следует начать печать printDialog1.PrinterSettings.FromPage = 1; //Определяем максимальный номер печатаемой страницы. printDialog1.PrinterSettings.ToPage = printDialog1.PrinterSettings.MaximumPage; >
Листинг 6.2.

Максимальное количество страниц в диапазоне — 9999;, очевидно, что его вполне хватит для распечатки любого документа. Основным событием, в обработчике которого практически и будет осуществляться вся печать, будет событие PrintPage элемента printDocument1 . Переключаемся в режим дизайна, выделяем элемент и, переключившись в окне Properties на вкладку событий, дважды щелкаем в поле этого события:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
Листинг 6.3.

Далее все описываемые фрагменты кода будут относиться к этому обработчику.

Класс Graphics, принадлежащий пространству имен System.Drawing, — один из важнейших классов, отвечающих за рисование графики и вывода текста на форме. При создании новой формы пространство имен System.Drawing по умолчанию включается в шаблон. Для формирования страницы печати создаем экземпляр этого класса:

Graphics graph = e.Graphics; //Создаем объект font, которому устанавливаем // шрифт элемента rtbText Font font = rtbText.Font; //Получаем значение межстрочного интервала — высоту шрифта float HeightFont = font.GetHeight(graph); //Создаем экземпляр strfmt класса StringFormat для определения //дополнительных параметров форматирования текста. StringFormat stringformat = new StringFormat();

Страница представляет собой прямоугольный объект, параметры которого следует определить. Для этого используется класс RectangleF (буква F указывает на использование типа данных с плавающей точкой float ):

//Создаем экземляры rectanglefFull и rectfText класса RectangleF для //определения областей печати и текста. RectangleF rectanglefFull, rectfText; //Создаем переменные для подсчета числа символов и строк. int NumberSymbols, NumberLines;

Страница, формируемая для печати, состоит из трех областей (рис. 6.2).

Источник: intuit.ru

Общие сведения о компоненте PrintDialog (Windows Forms .NET)

Печать в Windows Forms состоит в основном из использования PrintDocument компонента, чтобы пользователь мог печатать. Элемент PrintPreviewDialog управления PrintDialog и PageSetupDialog компоненты предоставляют знакомый графический интерфейс для Windows пользователей операционной системы.

Компонент PrintDialog — это предварительно настроенное диалоговое окно, используемое для выбора принтера, выбора страниц для печати и определения других параметров, связанных с печатью, в приложениях на основе Windows. Это простое решение для параметров принтера и печати вместо настройки собственного диалогового окна. Пользователям можно предоставить различные варианты печати документов: печать всех страниц, выбранного диапазона страниц или выделенного фрагмента текста. Использование стандартных диалоговых окон Windows помогает создавать приложения, основные функциональные возможности которых хорошо знакомы пользователям. Компонент PrintDialog наследует от класса CommonDialog.

Как правило, создается новый экземпляр PrintDocument компонента и задаются свойства, описывающие печать с помощью PrinterSettings и PageSettings классов. Print Вызов метода фактически выводит документ.

Работа с компонентом

Используйте метод PrintDialog.ShowDialog для отображения диалогового окна во время выполнения. Этот компонент имеет свойства, относящиеся либо к одному заданию печати (класс PrintDocument), либо к параметрам отдельного принтера (класс PrinterSettings). Одно из двух, в свою очередь, может совместно использоваться несколькими принтерами.

Метод диалогового окна «Показать» помогает добавить диалоговое окно печати в форму. Компонент PrintDialog появится в области в нижней части конструктора Windows Forms в Visual Studio.

Как записать данные пользователя из PrintDialog во время выполнения

Параметры, связанные с печатью во время разработки, можно задать. Иногда может потребоваться изменить эти параметры во время выполнения, скорее всего, из-за выбора, сделанного пользователем. Данные, введенные пользователем для печати документа, можно захватывать с помощью компонентов PrintDialog и PrintDocument. Ниже показано, как отобразить диалоговое окно печати для документа:

  1. Добавьте в форму компоненты PrintDialog и PrintDocument.
  2. Присвойте свойству Document объекта PrintDialog значение PrintDocument, которое было добавлено в форму.

PrintDialog1.Document = PrintDocument1
printDialog1.Document = printDocument1;
If PrintDialog1.ShowDialog() = DialogResult.OK Then PrintDocument1.Print() End If
// display show dialog and if user selects «Ok» document is printed if (printDialog1.ShowDialog() == DialogResult.OK) printDocument1.Print();

Создание заданий печати

Краеугольным камнем процессов печати в Windows Forms является компонент PrintDocument, а если точнее, то событие PrintPage.

Написав код для обработки события PrintPage, можно указать, что необходимо напечатать и как. Ниже показано, как создать задание печати:

  1. Добавьте в форму компонент PrintDocument.
  2. Напишите код для обработки события PrintPage . Вам придется кодировать собственную логику печати. Кроме того, необходимо указать материал для печати. В качестве материала для печати в следующем примере кода в обработчике событий создается PrintPage образец рисунка в форме красного прямоугольника.

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage e.Graphics.FillRectangle(Brushes.Red, New Rectangle(100, 100, 100, 100)) End Sub
private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) => e.Graphics.FillRectangle(Brushes.Red, new Rectangle(100, 100, 100, 100));

Читайте также:
Программа sakura что это

Также может потребоваться написать код для BeginPrint событий и EndPrint событий. Это поможет включить целое число, представляющее общее количество страниц для печати, которое уменьшается по мере печати каждой страницы.

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

Дополнительные сведения о специфике заданий печати Windows Forms, в том числе о том, как создать задание печати программным способом, см. в разделе PrintPageEventArgs.

Завершение заданий печати

Чаще всего текстовые процессоры и другие приложения, связанные с печатью, предоставляют возможность отображения сообщения пользователям о завершении задания печати. Эту функцию можно предоставить в Windows Forms, обрабатывая событие EndPrint компонента PrintDocument.

Для выполнения следующей процедуры необходимо создать приложение на основе Windows с компонентомPrintDocument. Приведенная ниже процедура — это стандартный способ включения печати из приложения на основе Windows. Дополнительные сведения о печати из Windows Forms с помощью компонента см. в разделе «Создание заданийPrintDocument печати».

    Установите свойство DocumentName элемента управления PrintDocument.

PrintDocument1.DocumentName = «SamplePrintApp»
printDocument1.DocumentName = «SamplePrintApp»;
Private Sub PrintDocument1_EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.EndPrint MessageBox.Show(PrintDocument1.DocumentName + » has finished printing.») End Sub
private void PrintDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e) => MessageBox.Show(printDocument1.DocumentName + » has finished printing.»);

Источник: learn.microsoft.com

1.8. Диалоговое окно PageSetupDialog.

Когда дело доходит до печати, приходится думать о выборе принтера, установках вывода страницы и о том, как напечатать несколько страниц. Использование классов .NET, находящихся в пространстве имен System.Drawing.Painting, позволяет существенно облегчить эту задачу.

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

Все свойства, задаваемые вручную в этом диалоге, могут быть установлены программно, использую соответствующие методы и свойства класса. К классу диалога в обязательном порядке требуется привязка объектаPrintDocument. Он используется для считывания и записи различных значений, необходимых для правильной работы подсистемы печати. Его нужно указать в свойствеDocumentкласса диалога. Это справедливо для всех диалоговых окон, предназначенных для настройки печати и ее осуществления.

Рис. 7.6.Стандартное диалоговое окноPageSetupDialog

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

1.9. Диалоговое окно PrintDialog.

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

Для осуществления печати необходимо наличие установленного принтера в системе, иначе, диалог предложит его установить.

Внешний вид стандартного диалогового окна PrintDialog, представлен на рисунке 7.6. Использование диалога очень просто. Его применение детально описано в практической части.

Рис. 7.7. Стандартное диалоговое окно PrintDialog

1.10. Диалоговое окно PrintPreviewDialog.

Возможно, пользователь пожелает посмотреть, как будет выглядеть выводимая на печать информация. Именно для этой цели используется Print Preview (предварительный просмотр). Реализовать Print Preview в .NET оказывается очень просто. Для этого используется стандартный диалог PrintPreviewDialog. Он более подробно рассматривается в практической части.

Рис. 7.7.Стандартный диалогPrintPreviewDialog

2. Практическая часть.

2.1. Пример использования диалогового окна в приложении.

Спроектируем приложение, в котором будет использоваться пользовательское диалоговое окно. Приложение будет несложным: главная форма, имеющая меню с единственным пунктом (рис. 7.8). При активации этого пункта откроется модальное диалоговое окно (рис. 7.9).

Рис. 7.8. Главная форма приложения.

Рис. 7.9. Модальное диалоговое окно.

В диалоговом окне пользователь может ввести текст, который при нажатии кнопки OKбудет выведен на форме (рис. 7.10).

Рис. 7.10. Текст, введенный пользователем в диалоговом окне, выводится на форме.

Кроме того, если пользователь повторно откроет диалоговое окно, в его текстовое поле будет помещен текст, ранее введенный пользователем и отображенный на форме (рис. 7.11).

Рис. 7.11. Диалоговое окно при повторном открытии.

Создайте новый WindowsApplicationпроект под названиемUserDialog. Измените значение свойстваTextформыForm1 на «Родительская форма». Добавьте на форму меню, показанное на рис. 7.8, с соответствующими именами.

Добавьте в проект ещё одну форму и спроектируйте диалоговое окно, показанное на рис. 7.9. Укажите для диалогового окна следующие значения свойств:

Свойство Значение

Text Модальное окно

Свойству StartPosition устанавливается значение CenterParent из перечисления FormStartPosition. В результате этого, диалоговое окно будет выводиться по центру родительской формы.

Кнопкам диалогового окна присвойте следующие значения:

В результате выполненных действий код функции инициализации диалогового окна будет выглядеть так:

Запустите приложение на выполнение.

Источник: studfile.net

PrintDialog, PrinterSetupDialog, PageSetupDialog –Печать, Настройка принтера, Настройка параметров страницы печати

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

Читайте также:
Мюсли что это за программа

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

PageSetupDialog позволяет настроить характеристики печатаемых страниц. Они задаются в свойствах Margin Bottom, MarginLeft, Margin Right, MarginTop (нижняя, левая, правая, верхняя границы печати), PageHeightH PageWidth (высота и ширина страницы), а также в свойстве Options, описывающем дополнительные параметры. Единицы измерения размеров задаются в свойстве Units.

Назначение и свойства компонентов страницы Samples

Рисунок 5– Вид страницы Samples

Gauge – отображение хода процесса

Используется для создания индикатора хода процесса в виде линейки, круговой диаграммы или текста. Аналог компонента ProgressBar.

SpinEdit – поле со счетчиком.

Свойства компонента похожи на UpDown, только имеют другие имена: MinValue, MaxValue, Value. Компонент SpinEdit во многих отношениях удобнее, если не требуются такие возможности возможностей UpDown как нестандартное расположение кнопок, «закольцовывание» изменений и т.п.

Calendar –календарь на указанный месяц

Отображение календаря на указанный месяц. Основные свойства: Year, Month, Day.

Обработка файлов

Для доступа к файлам чаще всего используется специальная файловая переменная. Она связывается с указанным файлом процедурой AssignFile.

Эта процедура имеет синтаксис:

procedure AssignFile(var F: File, S: string);

где F — файловая переменная любого типа, S — строка, содержащая имя файла.

Открытие существующего файла осуществляется процедурой Reset, формат которой (кроме нетипизированных файлов) следующий:

procedure Reset(var F: File);

Файловая переменная F перед обращением к этой процедуре должна быть связана с файлом. Создание и открытие нового файла осуществляется процедурой Rewrite, формат которой (кроме нетипизированных файлов — см. разд. 14.14.2.3) следующий:

procedure Rewrite(var F: File);

После выполнения различных операций чтения и записи файл должен быть закрыт процедурой CloseFile:

procedure CloseFile(var F: File);

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

Первый предполагает обработку исключений InOutError, поле errorcode которых содержит информацию о конкретном виде ошибки. Второй предполагает применение опции , отключающей генерацию исключений ошибок ввода/вывода, и дальнейшее обращение к функции IOResull, возвращающей код ошибки и сбрасывающей его в 0 (так что повторное обращение к IOResuIt бессмысленно). После обработки операции ввода/вывода контроль ошибок можно снова включить опцией . В этом случае общая организация работы с файлами строится примерно по такой схеме:

AssignFile (F, OpenDialogl.FileName);

CloseFile(var F: File);

При операциях ввода/вывода проверять окончание файла можно функцией Eof(F: File), возвращающей true при достижении конца файла.

Различают файлы трех видов: текстовые, файлы, типизированные файлы и нетипизированные файлы.

Текстовые файлы состоят из последовательностей символов, разбитых на строки. В Object Pascal предопределен тип TextFile, соответствующий текстовому файлу. Таким образом, объявление файловой переменной может иметь вид:

Запись данных в текстовый файл осуществляется процедурой

procedure Write(var F: TextFile; );

Выражения могут быть типов Char, Integer, Real, string, упакованных строк, Boolean. При этом может использоваться форматирование.

Write(F, ‘Baм ‘, I, ‘ лет);

Аналогичная процедура Writeln отличается от Write только тем, что после записи пишет символ перехода на новую строку, т.е. Writeln формирует одну строку.

Чтение данных из текстового файла осуществляется последовательно от его начала процедурой

procedure Read(var F: TextFile; );

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

Read(F, S1, I, S2]; даст значение S1, равное «Вам», значение I равное записанному числу лет, и значение S2, равное «лет».

Аналогичная процедура Readln отличается от Read только тем, что после чтения переводит текущую позицию в файле на новую строку. Если в процедуре Readln не задан список переменных, то она просто пропускает текущую строку и переходит к следующей.

Типизированные файлы являются двоичными файлами, содержащими последовательность однотипных данных. Объявление файловых переменных таких файлов имеет вид:

Тип данных может быть не только простым типом, но и, например, типом записей. Так операторы:

Fans, Nam: string[20];

PhorieList = file of PhoneEntry;

объявляет типизированный файл, содержащий записи телефонных номеров.

Процедуры чтения и записи Read и Write не отличаются от рассмотренных ранее для текстовых файлов. Только типы выражений при записи и переменных при чтении должны соответство-вать объявленному типу данных файла. Процедур, аналогичных Readln и Writeln для типизированных файлов нет. Зато есть процедура Seek, позволяющая перемещаться по файлу не только последовательно, как в текстовых файлах, но сразу переходить к требуемому элементу. Ее синтаксис:

procedure Seek(var F: File, N: Longint);

где N — номер элемента. Эта процедура перемещает текущую позицию в файле на нужный элемент.

Имеется также функция FilePos: function FilePos(var F ) : Longint; которая возвращает теку-щую позицию в файле.

Пример выполнения практического задания

Задание №

Источник: infopedia.su

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru