|
//--------------StringGrid에 값을 채움.
void __fastcall TForm1::FormShow(TObject *Sender)
{
StringGrid1->RowCount = 20; <===요값을 늘려보아도 PageHeight는 그대로 입니다. PageHeight = 3344나옴.
StringGrid1->ColCount = 8;
short int i,j;
for(i=1; i<=StringGrid1->RowCount; i++)
{
for(j=1; j<=StringGrid1->ColCount; j++)
{
StringGrid1->Cells[j][i]="999.1111";
}
}
}
//-----------------프린터출력버튼(StringGrid의 내용을 출력)
void __fastcall TForm1::cmd_PrintClick(TObject *Sender)
{
if(!Printdialog1->Execute())
return;
else{
Printer()->Canvas->Font->Size = 40;
Printer()->Canvas->Font->Name = "바탕체";
TPrinter *p = Printer();
p->BeginDoc();
TCanvas *c = p->Canvas;
HDC dc = c->Handle;
int XPI = GetDeviceCaps(dc,LOGPIXELSX);
int YPI = GetDeviceCaps(dc,LOGPIXELSY);
SetMapMode(dc,MM_ANISOTROPIC);
SetWindowExtEx(dc,1000,1000,NULL);
SetViewportExtEx(dc,XPI,YPI,NULL);
int i,j,h,n;
AnsiString S("텍스트 인쇄");
h = p->Canvas->TextHeight(S); //"텍스트인쇄"를 기준으로 높이.
n = p->Canvas->TextWidth(S); //"텍스트인쇄"를 기준으로 너비.
for(i=1; i<StringGrid1->RowCount; i++)
{
for(j=1; j<StringGrid1->ColCount; j++)
{
S = StringGrid1->Cells[j][i];
p->Canvas->TextOutA(n*j,i*h,S);
}
}
// if(p->PageHeight > 6688) <== PageHeight요넘이 변화가 없네요. StringGrid의 행이 늘어나더라도.
p->NewPage();
p->EndDoc();
}
}
제가 하려는 건 StringGrid에 행수가 많을 경우 1장 이상으로 계속적으로 출력하려는건데요.
게시판을 이리저리 검색하다가 PageHeight를 기준으로 해서 NewPage()의 실행을 하라 하더라구요.
제 짧은 지식으로 "StringGrid에 행수가 늘면 PageHeight값이 올라가겠지"라고 판단한 후 이리저리 실험해봤는데
StringGrid의 행수가 적든 많든 간에 PageHeight값이 똑같더라구요.
어떻게 저 PageHeight를 조절해야하고 또 기준으로 삼을 수 있을까요?
즉, StringGrid의 Row값이 많아 한장 이상으로 나오면 다음장을 어떻게 나오게 할 수 있을까요?
고수님들의 답변 부탁드립니다.(--)(__)
|