2012-01-05 2 views
0

Visual Studio 2010 Enterprise가 있습니다. 다음은 런타임에 여백을 변경하지 않는 다른 모든 것들에 대해 완벽하게 작동하는 코드입니다. objRpt.PrintOptions.PageMargins.leftMargin, rightmargin 등의 값이 변경되었지만 CyrstalReportViewer 또는 Hardcopy 출력에는 반영되지 않습니다.Visual Studio 2010에서 Crystal Reports 여백이 런타임에 변경되지 않습니다.

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. 

내가 보고서> 디자인> 페이지 설정을 마우스 오른쪽 버튼으로 클릭하여 디자인 타임에 여백을 설정 관리 : 여기

는 코드입니다. 여기서 설정하면 여백이 완벽하게 작동하며 보고서 뷰어와 하드 카피에 모두 반영됩니다. 하지만 위의 코드를 사용하면 이런 일이 발생하지 않습니다.

답변

0

파고를 조금하면서 Crystal Reports Viewer를 사용할 때 Crystal Reports 여백 설정이 기본 프린터 설정에 의해 덮어 쓰여진 것처럼 보입니다. (Windows Forms의 Crystal Reports Viewer에서는 적어도 인쇄 버튼을 클릭하십시오. 보고서 뷰어의 맨 위). 이를위한 가능한 해결 방법은 사용자 고유의 인쇄 단추를 사용하고 자신의 여백 설정을 고려한 PrintToPrinter를 호출하는 것입니다. 다른 해결 방법은 다음과 같습니다. - 여백을 모방하기 위해 필요한 공백을 사용하여 보고서 편집 - 인쇄 호출을 가로 채고 여백을 조정합니다 (머리 상단에서 기능 호출의 이름을 기억할 수 없음) - 보고서의 기본 프린터를 "프린터 없음"으로 설정하십시오. 보고서 뷰어에서 프린터를 선택하면 기본 프린터 설정이 적용됩니다.

ID 카드를 인쇄하는 응용 프로그램에서 작업 할 때이 문제가 발생했습니다. PrintToPrinter()를 호출하면 원하는 카드의 여백을 강요하지 않습니다. 보고서 뷰어를 통해 보고서를 실행하고 인쇄 버튼을 클릭하면 0.17 "정도의 여백을두고 프린터의 기본 설정을 사용하게됩니다. 결과적으로 제대로 인쇄되지 않는 카드가 생성됩니다.

+0

도움 주셔서 감사합니다 Joel .. 그러나 나는 이미 문제를 해소했다. 나는 내 자신의 질문에 대답 할 수 있는지, 따라서 StackOverflow에서 금지되는 것에 대한 두려움을 가지고 있었는지 모르겠다. –

+0

[this post] (http : // meta. stackexchange.com/questions/12513/should-i-not-answer-my-own-questions) 메타 (그리고 실제로 많은 다른 것들)에 관해서는, 당신 자신의 질문에 대답하는 것이 완벽하게 좋아 보인다. – GusP

관련 문제