Страница 1 из 2

Настройка принтера и страницы.

Добавлено: 26 июн 2008, 13:58
vlsaf
В своем проекте для каждого рабочего места я храню параметры принтера.
Достаю их вот так.

Код: Выделить всё

using System.Drawing.Printing;
...
PrinterSettings printerSettings = new PrinterSettings();
MyPrinters.GetPrinter(ref printerSettings);
После этого в стандартном Windows объекте printerSettings
содержится необходимая мне информация.

Теперь, перед тем, как просмотреть отчет report.Show();
мне хотелост бы передать просмотрщику параметры принтера.
(Объект printerSettings). Это можно как-то сделать?
--------------------------------------------------------------------------------------------------------
Примерно тоже самое хотелось бы сделать и со страницей
Параметры страницы у меня содержатся тоже в стандартном объекте

Код: Выделить всё

PageSettings pageSettings = new PageSettings();
MyPrinters.GetPage("Rechnungswesen", ref pageSettings);
--------------------------------------------------------------------------------------------------------
Вопрос. Как предпросмотрщику передать printerSettings и pageSettings?

Настройка принтера и страницы.

Добавлено: 26 июн 2008, 19:58
Vital
Здравствуйте,

Для настройки PageSettings можно использовать статическое событие StiPrintProvider.QueryPageSettings. Для настройки PrinterSettings такого события нет (добавлено в билде от 27 июня).
Поэтому можно использовать следующее статическое событие StiOptions.Engine.GlobalEvents.InvokePrintingDocumentInViewer. Код события можно использовать следующий:

Код: Выделить всё

StiReport report = sender as StiReport;
report.Print(myPrinterSettings);
Спасибо.

Настройка принтера и страницы.

Добавлено: 27 июн 2008, 11:27
vlsaf
Добрый день.
Если Вас не затруднит, покажите пож-та пример кода, как установить параметры страницы и параметры принтера для объекта StiPreviewControl.








Настройка принтера и страницы.

Добавлено: 28 июн 2008, 11:15
vlsaf
Up.

Настройка принтера и страницы.

Добавлено: 01 июл 2008, 09:29
vlsaf
Up

Настройка принтера и страницы.

Добавлено: 02 июл 2008, 07:43
Vital
Здравствуйте,
vlsaf писал(а):Добрый день.
Если Вас не затруднит, покажите пож-та пример кода, как установить параметры страницы и параметры принтера для объекта StiPreviewControl.
Для настройки параметров страницы:

Код: Выделить всё

Stimulsoft.Report.Print.StiPrintProvider.QueryPageSettings += new Stimulsoft.Report.Print.StiQueryPageSettingsEventHandler(StiPrintProvider_QueryPageSettings);//Один раз до печати

void StiPrintProvider_QueryPageSettings(object sender, Stimulsoft.Report.Print.StiQueryPageSettingsEventArgs e)
        {
            e.PageSettings//Производим необходимые изменения
        }
Для настройки параметров принтера, подключаем к событию ClickPrintButton у StiPreviewControl следуюий код:

Код: Выделить всё

private void stiViewerControl1_ClickPrintButton(object sender, EventArgs e)
        {
            StiReport report = sender as StiReport;
            report.Print(myPrinterSettings);
        }
Спасибо.

Настройка принтера и страницы.

Добавлено: 02 июл 2008, 11:00
vlsaf
-=Настройка принтера=-

На этапе выполнения происходит ошибка NullReferenceExeption на строке report.Print(printerSettings);
Код следующий

Код: Выделить всё

private void stiPreviewControl1_ClickPrintButton(object sender, EventArgs e)
{
    StiReport report = sender as StiReport;

    try
    {
        PrinterSettings printerSettings = new PrinterSettings();
        MyPrinters.GetPrinter(ref printerSettings);
        report.Print(printerSettings);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
}
В объекте printerSettings содержатся нужные мне данные.
Проверено через отладчик.
Там ошибок нет.
______________________________

-=Настройка страницы=-

Настройка страницы не происходит. Как будто ее и небыло.

Код: Выделить всё

    ...
    InitializeComponent();

    // подписываюсь на событие для настройки параметров страницы
    StiPrintProvider.QueryPageSettings += new StiQueryPageSettingsEventHandler(StiPrintProvider_QueryPageSettings);
}

void StiPrintProvider_QueryPageSettings(object sender, StiQueryPageSettingsEventArgs e)
{
    PageSettings pageSettings = new PageSettings();
    try
    {
        MyPrinters.GetPage("Rechnungswesen", ref pageSettings);
        e.PageSettings = pageSettings;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
}
Точка останова на строке PageSettings pageSettings = new PageSettings() не срабатывает, как будто-бы я и не подписывался на событие StiQueryPageSettingsEventHandler.

Настройка принтера и страницы.

Добавлено: 02 июл 2008, 19:42
Edward
Здравствуйте.

Да, действительно закралась ошибка.

Измените, пожалуйста, код следующим образом:

Код: Выделить всё

private void stiViewerControl1_ClickPrintButton(object sender, EventArgs e)
{
     StiReport report = ((StiPreviewControl)sender).Report;
     report.Print(myPrinterSettings);
} 
StiQueryPageSettingsEventHandler вызывается для каждой страницы после нажатия на кнопку печать, когда уже пошел вывод на принтер.

Спасибо.

Настройка принтера и страницы.

Добавлено: 03 июл 2008, 05:39
vlsaf
Здравствуйте.

С принтером помогли. Спасибо. Все заработало.
Но вот с настройкой страницы остаются проблемы.

Вся соль вопроса заключается в предпросмотре.
Иначе все не имеет смысла.

Неужели никак нельзя ввести парметры страницы до предпросмотра?

Настройка принтера и страницы.

Добавлено: 04 июл 2008, 07:34
Vital
Здравствуйте,

Тут есть вопрос ключевой. Вы хотите изменить параметры страниц до просмотра или до построения отчета?

Спасибо.