Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 193

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 187 188 189 190 191 192 < 193 > 194 195 196 197 198 199 .. 404 >> Следующая

Использование диалоговых окон______________________________________________________________413

находящихся в массиве lines. Переменная linesPrinted увеличивается на единицу с каждой отправленной на печать строкой:

while [linesPrinted < lines.Length)

(

e.Graphics.DrawSt ring(lines[1ine sprinted++1,

new font('Ariel', 10}, Brushes.Black, x, y) i

После того, как строка отпечатана, мы осуществляем проверку, не выходит ли вновь вычисленное значение позиции по вертикали за границы страницы, Кроме того, мы уменьшаем границы на 80 пикселей, поскольку не хотнм, чтобы печать производилась по самому нижнему краю страницы, так как многие принтеры за этим не следят. Если такая позиция достигнута, то свойству HasMorePagee класса PrintPageEventArgs присваивается значение true для того, чтобы проинформиро: вать контроллер о том, что метод OnPrintPageO должен быть вызван еще раз. Не забудьте, что в методе Printcontroller используется метод PrintLoopO, который определяет последовательность выводимой информации для каждой печатающейся страницы. Если значение свойства навмогеРадео будет равно false, он прекратит работу. В качестве значения свойства HaaMorePages по умолчанию используется false, чтобы печать была прекращена:

у +* 15;

if (у >= е.PageBounds.Height)

{

e.HasMorePagea = true;

return;

Задание параметров страницы

На данном этапе значения, определяющие поля страницы, пр чио “зашиты” в программу. Давайте ее модифицируем так, чтобы пользователь сам определял ПОЛЯ страницы. Для ЭТОГО воспользуемся PageSetupDialog — еще одним классом диалога.

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

Бумага

Если свойству AiiowPaper присвоено значение true, то это означает, что пользователь имеет возможность самостоятельно определять размеры-глистов бумаги и ее источник. Свойство PageSetupDialog. PageSettings. PaperSi'ze возвращает экземпляр papersize, с котором хранятся высота, ширина н тип бумаги соответственно в свойствах Height, Width и PaperName. papername определяется именами Letter и А4, Свойство Kind имеет значение перечислимого типа PaperKind. Оно может принимать одно из трех следующих значений, определяющих размеры используемой бумаги: European (европейские), American (американские) И Japanese (японские).

СВОЙСТВО PageSetupDialog.PageSettings.PaperSource возвращает ЭКЗвМПЛЯр paperSource, в котором находится название источника бумаги для принтера, и того, какая именно бумага там находится {при условии, что установки принтера сконфигурированы корректно).

Использование диалоговых окон 415

значения отсутствует, поскольку используемая реализация обработчика событий “нажатие кнопки ОК” уже предполагает присваивание новых значений привязанному объекту printDocument:

private void raenuItemFilePageSetup_Click(object sender,

System.EventArgs e)

(

dlgFageSetup.ShowDialog (>; !

>

2. Теперь необходимо внести изменения в реализацию метода OnPrintPage(), которые позволят использовать значения размеров полей, заданные с помощью диалога PagesetupDiaiog.

В используемой нами программе значения переменных х и у присваиваются свойствам MarginBounds.Left и MarginBounds.Right класса PrintPageEventArgs. Проверка на предмет достижения конца страницы осуществляется с помощью свойства MarginBounds.Bottom:

private void OnPrintPage(object sender,

System.Drawing.Printing,PrintPageEventArgs e)

( - Mi <jt;, ^ . ______L— I

int x * e.HarginBounds,Left;

int у - e.MarginBounds.Top;

while (linesPrinted < lines.Length)

{

e.Graphics.Drawstring(lines[linesPrinted++],

new Font('Arial', 10), Brushes.Black, x, y) t

У + = 15;

It (y >= e.HarginBounds.Bottom)

(

e.HasMorePages = true; return;

)

}

linesPrinted = 0;

e.HasMorePages = false; '

J

3. Тенерь можно построить проект и запустить приложение. Выбрав File | Page Setup, вы получите диалог, показанный ннже.

Если вы измените границы, то печать будет осуществляться в этих измененных 1 раницах (см. рис. слева).

Если вывод диалогового окна PageSetupDlalog на экран оказывается невозможным, то генерируется исключительная ситуация типа

Sy¦ tев.ArgunentBxoept 1 он) ЭТО, В ЧАСТНОСТИ,

может происходить потому, что вы забыли привязать объект FrintDocumant к диалогу FageSetupDialog. Диалогу PagsSatupDialo? наличие привязанного объекта PrintDocument необходимо — он использует его для считывания и записи различных значений, используемых в процессе диалога.

I ЗИ 1 • ’ I SbftL. ' I
416

Глава 15

Диалог вывода на печать

Класс PrintDialos позволяет пользователю выбирать принтер из числа инсталлированных, а также задавать число копий и некоторые установки принтера, например представление вывода и источник бумаги для принтера. Поскольку использовать диалог PrintDiaiog очень просто, мы сразу переходим к процедуре включения этого диалога в наше приложение Editor,
Предыдущая << 1 .. 187 188 189 190 191 192 < 193 > 194 195 196 197 198 199 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.