Поля Crystal Reports не изменяются во время выполнения в Visual Studio 2010

У меня Visual Studio 2010 Enterprise.

Вот мой код, который отлично работает для всех остальных вещей, но он не меняет поля во время выполнения. Даже если значение objRpt.PrintOptions.PageMargins.leftMargin, rightmargin и т. д. изменяется, это не отражается ни в CrystalReportViewer, ни в Hardcopy выводе.

Вот код:

CrystalReport1 objRpt;
objRpt = new CrystalReport1();
adepter.Fill(Ds, "Customer");
objRpt.SetDataSource(Ds);
MessageBox.Show("Left margin:"+objRpt.PrintOptions.PageMargins.leftMargin.ToString()); //Here it shows 1440 

objRpt.PrintOptions.PrinterName = "HP LaserJet 1020";
PageMargins margins = objRpt.PrintOptions.PageMargins;

margins.bottomMargin = 350;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 350;
objRpt.PrintOptions.ApplyPageMargins(margins);
MessageBox.Show("Left margin:"+objRpt.PrintOptions.PageMargins.leftMargin.ToString()); 

//Here it shows 350 BUT no use.

Мне удалось установить поля во время разработки, щелкнув правой кнопкой мыши «Отчет»> «Дизайн»> «Параметры страницы». Если я установлю здесь, поля будут работать идеально, и они отразятся как в средстве просмотра отчетов, так и в печатной копии. Но этого не происходит, когда я использую приведенный выше код.


person Aditya Bokade    schedule 05.01.2012    source источник


Ответы (1)


При небольшом копании кажется, что настройки полей Crystal Reports перезаписываются настройками принтера по умолчанию при использовании средства просмотра Crystal Reports Viewer (по крайней мере, для средства просмотра Crystal Reports Viewer в форме окна и нажатии кнопки «Печать» в верхней части окна). просмотрщик отчетов). Возможный обходной путь для этого — использовать собственную кнопку печати и вызывать PrintToPrinter, который учитывает ваши собственные настройки полей. Другие обходные пути включают в себя: - Редактирование отчета с необходимым пустым пространством для имитации полей - Перехват вызова печати и затем настройка полей (я не могу вспомнить имя вызова функции навскидку) - Установить значение по умолчанию принтер для сообщения «Нет принтера». При выборе принтера в средстве просмотра отчетов должны применяться параметры принтера по умолчанию.

Я столкнулся с этой проблемой, когда работал над приложением для печати удостоверений личности. Вызов PrintToPrinter() не привел бы к увеличению полей в карточках, что и требовалось. Запустив его через средство просмотра отчетов и нажав кнопку печати, он заставит его использовать настройки принтера по умолчанию - с полем 0,17 дюйма или около того. В результате карты не печатались должным образом.

person Joel B    schedule 26.04.2012
comment
Спасибо за помощь, Джоэл ... однако я уже решил проблему. Я не знаю, смогу ли я ответить на свой вопрос здесь, поэтому сдерживаюсь страхом быть забаненным на StackOverflow. - person Aditya Bokade; 27.04.2012
comment
Согласно этому сообщению о мете (и многим другим на самом деле), кажется, совершенно нормально отвечать на свои вопросы. - person GusP; 14.09.2012