| |
|
|
- Seite 1 - |
|
Julian Schmidt | Hallo Community, ich würde gerne einige Fragen rund um Drucken mit XProfan klären.
Zum Thema: Ich bin gerade dabei mein Stundenplan-Tool (Vlt. erinnern sich einige an dieses) zu aktualisieren. Nun versuche ich gerade die Druckfunktion auf Vorderman zu bringen. Ich stelle mir das Drucken so vor. Wenn man auf Drucken klickt kommt ein Druckerauswahldialog, anschließend kann man Einstellungen treffen und drucken. Wenn im Druckerauswahldialog Querformat geklickt wurde soll etwas anderes gedruckt werden als im Hochformat. Im Querformat wird der Stundenplan einmal über die Gesamte Länge des Blattes gedruckt. Im Hochformat wird der Stundenplan mehrfach untereinander auf die Gesamte Breite des Blattes gedruckt, sodass auch so das gesamte Blatt ausgefüllt ist.
Nun müsste man zum einen ermitteln ob Quer-, oder Hochformat ausgewählt wurde. Und zum zweiten müsste die Größe des Blattes ermittelt werden, sodass man den Stundenplan Zentrieren kann.
Ziel dieses Beitrags ist es erstmal ganz simple im Hoch-, Querformat eine Linie, und einen Text Zentriert, in der jeweiligen Format-Ausrichtung(Rand von ~50px) auszudrucken. KompilierenMarkierenSeparieren LG
Julian57 |
|
|
| |
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
Thomas Freier | Da ist Umrechnen angesagt. Du bekommst z.B. Blattbreite in mm. Dann sind das ~H&*3.425 Bildpx . KompilierenMarkierenSeparieren $H Windows.ph
Declare H&,V&
cls
var rand%=75
var pxmm!=3.425
var pymm!=3.35
StartPrint "*Test"
if %Printing
H& = ~GetDeviceCaps(&PDC,~HORZSIZE)
V& = ~GetDeviceCaps(&PDC,~VERTSIZE)
UsePen 0,1,@RGB(0,0,31)
If H& > V&'Querformat
Line rand%,100 - ((H&*pxmm!)-rand%),100
Else'Hochformat
Line rand%,100 - ((H&*pxmm!)-rand%),100
Endif
EndPrint
Endif
Verwendest du Druckerpx (APX%) mußt du deine Bildschirmpx (rand%) umrechnen. |
|
|
| |
|
|
|
|
| |
|
| |
|
|
|
Julian Schmidt | Hilft mir nicht wirklich weiter! Ich denke der beste Ansatz wäre erstmal zu ermitteln ob Quer- oder Hochformat eingestellt wurde. Irgendeine Idee? |
|
|
| |
|
|
|
| Hm aber Codes dafür liegen hier doch rum.
Magst die Suche nicht?
Einfachste Variante: [...]
Aber gib mal in das Suchfeld "Drucke" ein -
und schaue dann dort in der Rubrik "Quelltexte"
da gibts noch genauere Beispiele. |
|
|
| |
|
|
|
| Z.B. hier einfach wie immer super von Andreas Miethe: [...] -
kannst damit sogar schauen ob der Drucker männlich oder weiblich ist -
wenn gegeben! |
|
|
| |
|
|
|
Julian Schmidt | hmmm....das mit dem ermitteln des Formates funktioniert soweit super! Nun komm ich zum nächsten Problem. Wie bekomme ich denn die Linie exakt von *Anfang des Blattes*+*Druckrand* bis *Ende des Blattes*-*Druckrand*.
Aktuell siehts so aus(siehe Download)! Genauso auch im Hochformat! Download KompilierenMarkierenSeparierenDef GetDeviceCaps(2) ! "GDI32","GetDeviceCaps"
Declare H&,V&, rand_px&, APX%, APY%
rand_px&=75
cls
StartPrint "*Test"
if %Printing
H& = GetDeviceCaps(&PDC,4)
V& = GetDeviceCaps(&PDC,6)
APX%= GetDeviceCaps(&PDC,8)'Ausgabebreite in Pixel
APY%= GetDeviceCaps(&PDC,10)'AusgabeHoehe in Pixel
If H& > V&'Querformat
Line rand_px&,rand_px& - APX%-rand_px&,rand_px&
Else'Hochformat
Line rand_px&,rand_px& - APY%-rand_px&,rand_px&
Endif
EndPrint
Endif
|
|
|
| |
|
|
|
| Schau mal: [...]
Da steht bei HORZRES: Width, in pixels, of the screen; or for printers, the width, in pixels, of the printable area of the page.
Funktioniert das denn nicht? |
|
|
| |
|
|
|
Julian Schmidt | Leider nicht KompilierenMarkierenSeparieren $H Windows.ph
Declare H&,V&, rand_px&, APX%, APY%
rand_px&=75
cls
StartPrint "*Test"
if %Printing
H& = ~GetDeviceCaps(&PDC,~HORZSIZE)
V& = ~GetDeviceCaps(&PDC,~VERTSIZE)
APX%= ~GetDeviceCaps(&PDC,~HORZRES)
APY%= ~GetDeviceCaps(&PDC,~VERTRES)
If H& > V&'Querformat
Line rand_px&,rand_px& - (APY%-rand_px&),rand_px&
Else'Hochformat
Line rand_px&,rand_px& - (APX%-rand_px&),rand_px&
Endif
EndPrint
Endif
|
|
|
| |
|
|
|
Rolf Koch | und was mich hier wundert: Keiner geht auf Deinen geilen Spruch ein "ob der Drucker männlich oder weiblich" ist. Ich hab mich wieder gekringelt vor Lachen. Danke if, für diesen Spruch !!!! |
|
|
| |
|
|
|
Jörg Sellmeyer | Was heißt denn "Leider nicht"? Bekommst Du keine Werte oder was? Bei mir kommen nämlich Werte in die Variablen. Und zwar ziemlich genau die, die ich bei einer Din A4-Seite erwaten würde. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 20.08.2011 ▲ |
|
|
|
|
Thomas Freier | Ist schon witzig, wie die Daten ermittelt werde. Jörg erwatet sie [...] und Julian fischt im Trüben [...] |
|
|
| |
|
|
|
Julian Schmidt | Die Frage ist ja immer ob die richtigen Werte ermittelt werden, ob das der Wert ist den ich suche. Wie wird es den bei euch ausgedruckt? KompilierenMarkierenSeparieren $H Windows.ph
Declare H&,V&, rand_px&, APX%, APY%
rand_px&=75
cls
StartPrint "*Test"
if %Printing
H& = ~GetDeviceCaps(&PDC,~HORZSIZE)
V& = ~GetDeviceCaps(&PDC,~VERTSIZE)
APX%= ~GetDeviceCaps(&PDC,~HORZRES)
APY%= ~GetDeviceCaps(&PDC,~VERTRES)
'APX% und APY% evtl. vertauschen
If H& > V&'Querformat
Line rand_px&,rand_px& - (APY%-rand_px&),rand_px&
Else'Hochformat
Line rand_px&,rand_px& - (APX%-rand_px&),rand_px&
Endif
EndPrint
Endif
|
|
|
| |
|
|