카테고리 없음
[일반/컴포넌트] TStringGrid 인쇄하기
[롯벨]
2023. 9. 5. 08:13
procedure TForm1.PrintBtnClick(Sender: TObject);
var
i:integer;
leftmargin, rightmargin, topmargin:integer;
savewidth,saveheight:integer;
savecolw,saverowh:array of integer;
SavefontSize, SaveGL:integer;
scalev,scaleh,scale:single;
begin
if PrintDialog1.Execute then
with Printer, stringgrid1 do
begin
BeginDoc;
{set print margins}
leftmargin:=pagewidth div 10;
rightmargin:=pagewidth-leftmargin;
topmargin:= pageheight div 10;
{save stringgrid sizes}
savewidth:=width;
saveheight:=height;
setlength(savecolw,colcount);
setlength(saverowh,rowcount);
for i:=0 to colcount-1 do savecolw[i]:=colwidths[i];
for i:= 0 to rowcount-1 do saverowh[i]:=rowheights[i];
savefontsize:=font.size;
saveGL:=gridLineWidth;
{scale stringgrid up}
scalev:=(pageheight-2*topmargin) / height;
scaleh:=(rightmargin - leftmargin) / width;
if scalev<scaleh then scale:=scalev else scale:=scaleh;
width:=trunc(scale*width);
height:= trunc(scale*height);
for i:=0 to colcount-1 do colwidths[i]:=trunc(scale*colwidths[i]);
for i:= 0 to rowcount-1 do rowheights[i]:=trunc(scale*rowheights[i]);
font.size:=trunc(scale*font.size);
gridlinewidth:=trunc(scale*gridlinewidth);
{print it}
paintto(printer.handle,leftmargin,topmargin);
{and put size back}
width:=savewidth;
height:=saveheight;
for i:=0 to colcount-1 do colwidths[i]:=savecolw[i];
for i:= 0 to rowcount-1 do rowheights[i]:=saverowh[i];
gridlinewidth:=saveGL;
font.size:=savefontsize;
EndDoc;
end;
end;