Проблема с определением параметров страницы

отредактировано 17:51 Раздел: FastReport 3.0
Ситуация следующая:

1. формируется перечень принтеров, установленный в системе
2. Выбранный пользователем принтер устанавливается как текущий
{
ADevice := pchar(ListBox1.SelectedItem);
ADriver := pchar('WINSPOOL');
printer.SetPrinter(ADevice, ADriver, APort, 0);
}
Handele объекта принтер после этих команд действительно принимает другое значение

3. После этого формируем отчет:
{
frxReport1.Clear;
frxReport1.PrintOptions.Printer := ListBox1.SelectedItem;
добавляем источник данных в список доступных для отчета
frxReport1.DataSets.Add(frxDBDataSet1);
добавляем страницу
Page := TfrxReportPage.Create(frxReport1);
создаем уникальное имя
Page.CreateUniqueName;
устанавливаем параметры страницы для выбранного принтера
PAGE.SetDefaults;
}

4. После всех действий frxReport1.DesignReport;
Все дейтсвия - Click кнопки

Собственно проблема:
после определения принтера ПЕРВЫЙ раз отчет формируется с параметрами страницы принтера, который был текущим до переопределения. Все последующие нажатия на эту кнопку приводят к абсолютно верному формированию отчета...

На данный момент приходится выходить из положения слудующим способом:
Printer.BeginDoc;

page.PaperWidth :=GetDeviceCaps(Printer.canvas.Handle, PHYSICALWIDTH)/
GetDeviceCaps (Printer.Canvas.Handle, LOGPIXELSX) * 25.4;

page.PaperHeight := GetDeviceCaps(Printer.canvas.Handle, PHYSICALHEIGHT)/
GetDeviceCaps (Printer.Canvas.Handle, LOGPIXELSY) * 25.4;


Printer.Abort;


Буду очень благодарна за рекомндации по "правильному" использованию метода SetDefaults

С уважением,
Мария


Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.