Entwickler-Ecke

Windows API - Frage zu physicaloffsetx und physicaloffsety


Bjoern128 - Fr 28.03.03 14:47
Titel: Frage zu physicaloffsetx und physicaloffsety
Um den bedruckbaren Bereich meiner Seite auszuleen verwende ich physicaloffsetx bzw. physicaloffsety.
Allerdings sind die Ränder oben und unten und links und rechts unterschiedlich groß.
Wie kann ich da unterscheiden??


Danke
Björn


ShadowCaster - Fr 28.03.03 15:23

Hier ein paar Funktionen die dir helfen könnten:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
// Seitenbreite
function TCustomDrucker.GetPageWidth: Integer;
begin
  Result := GetDeviceCaps(Printer.Handle, PHYSICALWIDTH);
end;

// Seitenhöhe
function TCustomDrucker.GetPageHeight: Integer;
begin
  Result := GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT);
end;

// Linker nicht bedruckbarer Abstand
function TCustomDrucker.GetPageOffsetLeft: Integer;
begin
  Result := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
end;

 // Rechter nicht bedruckbarer Abstand
function TCustomDrucker.GetPageOffsetRight: Integer;
begin
  Result := GetPageWidth - GetPageOffsetLeft - GetDeviceCaps(Printer.Handle, HORZRES);
end;

// oberer nicht bedruckbarer Abstand
function TCustomDrucker.GetPageOffsetTop: Integer;
begin
  Result := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
end;

 // unterer nicht bedruckbarer Abstand 
function TCustomDrucker.GetPageOffsetBottom: Integer;
begin
  Result := GetPageHeight - GetPageOffsetTop - GetDeviceCaps (Printer.Handle, VERTRES)
end;


Hier der Code wie du den druckbaren Bereich in der Höhe und Breite ermitteln kannst:


Quelltext
1:
2:
3:
var DruckbarHoehe, DruckbarBreite : Integer; // nicht vergessen
DruckbarHoehe := GetPageHeight - GetPageOffsetTop - GetPageOffsetBottom;
DruckbarBreite := GetPageWidth - GetPageOffsetLeft - GetPageOffsetRight;


Achja, offset ist der Abstand des nicht druckbaren Bereichts in dem Fall.


Bjoern128 - Fr 28.03.03 18:35
Titel: Danke!
Vielen Dank!

hat echt weitergeholfen!
Mein Programm läuft schon.

:D