unit anzeige;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,unit1, StdCtrls, Buttons, ExtCtrls,printers;
type
TForm2 =
class(TForm)
Shape1: TShape;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
blatt:tcanvas;
dc : hdc;
druckbreite,druckhoehe:integer;
panelx:twincontrol;
mmpropixely,mmpropixelx:single;
implementation
{$R *.dfm}
procedure blattanpassen;
var
prnxy,formxy:single;
dx,dy,x,y : integer;
blattbreite,blatthoehe : integer;
scale : single;
xofs,yofs : single;
begin
mmpropixelx :=25.4/getdevicecaps(printer.handle,logpixelsx);
mmpropixely :=25.4/getdevicecaps(printer.handle,logpixelsy);
blattbreite:=round (getdevicecaps(printer.Handle,physicalwidth)*mmpropixelx);
blatthoehe:=round (getdevicecaps(printer.Handle,physicalheight)*mmpropixely);
xofs:=round(getdevicecaps(printer.Handle,physicaloffsetx)*mmpropixelx);
yofs:=round(getdevicecaps(printer.Handle,physicaloffsety)*mmpropixely);
druckbreite:= getdevicecaps(printer.Handle,horzsize);
druckhoehe:= getdevicecaps(printer.Handle,vertsize);
y:=35;
x:=10;
formxy:=( form2.ClientWidth -x) / (form2.ClientHeight -y);
prnxy := blattbreite / blatthoehe;
if formxy < prnxy
then begin
dx:=form2.ClientWidth-20;
dy:=round(dx/prnxy);
y:=round((form2.ClientHeight /2+8) - (dy/2));
end else begin
dy:=form2.ClientHeight -y - 10;
dx:=round(dy * prnxy);
x:=round((form2.ClientWidth / 2) - (dx /2));
end;
form2.shape1.setbounds(x,y,dx,dy);
scale:=dy/blatthoehe;
panelx.SetBounds(x+round(xofs*scale),y+round(yofs*scale),
round(druckbreite*scale),round(druckhoehe*scale));
setmapmode(blatt.Handle,mm_anisotropic);
setviewportextex(blatt.Handle,dx,dy,
nil);
setwindowextex(blatt.Handle,druckbreite*10,-druckhoehe*10,
nil);
setbkmode(blatt.Handle,transparent);
blatt.Brush.Style:=bssolid;
blatt.Brush.Color:=clwhite;
blatt.Pen.Color:=clblack;
blatt.FillRect(bounds(0,0,druckbreite*10,-druckhoehe*10));
end;
{of blattanpassen}
procedure ausgabe(ziel:tcanvas);
var
i,l,breite,hoehe:integer;
s,t:
string;
with ziel
do begin
font.Height:=50;
font.
Name:='
Arial';
settextalign(
handle,ta_left+ta_top);
breite:=druckbreite*10;
hoehe:=druckhoehe*10;
textout(1150,(i*-53)-120,'
Festplatte: '+s);
end;
end;
{end of ausgabe}
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
if seite=anz_seiten
then exit;
if seite<anz_seiten
then seite:=seite+1;
blattanpassen;
ausgabe(blatt);
end;
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
if seite=1
then exit;
if seite>1
then seite:=seite-1;
blattanpassen;
ausgabe(blatt);
end;
procedure TForm2.FormResize(Sender: TObject);
begin
blattanpassen;
ausgabe(blatt);
end;
procedure TForm2.FormShow(Sender: TObject);
var
begin
{diese 5 zeilen standen mal in form2.create}
panelx:=twincontrol.Create(self);
panelx.Parent:=form2;
blatt:=tcanvas.Create;
blatt.Handle:=getdc(panelx.Handle);
setmapmode(blatt.Handle,mm_anisotropic);
blattanpassen;
ausgabe(blatt);
end;
end.