Q&A

  • [퀵리포트] Preview할때..용지를 항상 가로로 출력
안녕하세요. 퀵리포트를 잘 사용하고 싶은 어린왕자입니다.

근데..동적으로 리포트를 작성하고 싶어서. 담과 같이 작성했어요.(DEMO보고 베꼈음)



procedure TForm1.Button2Click(Sender: TObject);

var

aReport : TCustomQuickRep;

SomeFields: TStringList;

nIdx: integer;



begin

SomeFields := TStringList.Create;

for nIdx := 0 to DM.ADOQueryRe.FieldCount - 1 do

SomeFields.Add(DM.ADOQueryRe.Fields[nIdx].FieldName);

areport := nil;

QRCreateList(aReport, nil,DM.ADOQueryRe, 'Country Listing', SomeFields);



// Make the column header's font use bold attribute

aReport.Bands.ColumnHeaderBand.Font.Style := [fsBold];



for nIdx := 0 to aReport.Bands.ColumnHeaderBand.ControlCount -1 do

if aReport.Bands.ColumnHeaderBand.Controls[nIdx] is TQRPrintable then

with TQRPrintable(aReport.Bands.ColumnHeaderBand.Controls[nIdx]) do

Left := Left - (5 * nIdx);





for nIdx := 0 to aReport.Bands.DetailBand.ControlCount -1 do

if aReport.Bands.DetailBand.Controls[nIdx] is TQRPrintable then

with TQRPrintable(aReport.Bands.DetailBand.Controls[nIdx]) do

Left := Left - (5 * nIdx);



areport.preview;

aReport.Free;

SomeFields.Free;

end;



근데 문제는 ADOQueryRe에 필드가 많아지니깐..세로종이로 출력해버리더라구요...

전 세로종이가 아닌 가로종이로 두줄로 나타내고 싶었어요..

그래서 다음과 같이 추가했죠..(필드의 세로가 일정크기 넘으면 높이를 낮추라고)



for nIdx := 0 to aReport.Bands.ColumnHeaderBand.ControlCount -1 do

if aReport.Bands.ColumnHeaderBand.Controls[nIdx] is TQRPrintable then

with TQRPrintable(aReport.Bands.ColumnHeaderBand.Controls[nIdx]) do

begin

if Left>200 then

begin

Left:=30;

Top:=15;

end;

Left := Left - (5 * nIdx);

end;



for nIdx := 0 to aReport.Bands.DetailBand.ControlCount -1 do

if aReport.Bands.DetailBand.Controls[nIdx] is TQRPrintable then

with TQRPrintable(aReport.Bands.DetailBand.Controls[nIdx]) do

begin

if Left>200 then

begin

Left:=30;

Top:=15;

end;

Left := Left - (5 * nIdx);

end;



결과는 두줄로 표시되는데 세로종이는 여전히...

....



고수님들..제발 언제나 가로로 출력하게 해주세요..

그렇게 해주시면 무척 감사하겠습니다.





0  COMMENTS