| |
|
|
- 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. » |
|
- Seite 2 - |
|
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. |
|
|
| |
|
|
|
|
| |
|
- Seite 1 - |
|
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 [...] |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
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
|
|
|
| |
|
|
|
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 | Super, es funktioniert ^^ Sehr cool! Muss ich jetzt nur noch in meinen Programm umsetzen!
Bei weiteren Fragen melde ich mich nochmal, erstmal Danke an Alle! |
|
|
| |
|
|
|
| Bin ebenso interessiert!
Wenn Du da nen Minispeibiel parat hast dann bitte bei den Quelltexten einreihen. |
|
|
| |
|
|
|
Julian Schmidt | hmmmmm.....werde schauen ob ich was zurecht schreibe, wenn nicht als Beispiel die Linie verwenden ^^ Morgen vlt, wenn ich nicht an meiner Page bastle, welche ich aktualisiere. |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Thomas Freier | Also, eine echte Lösung gibt es nicht. Hier nur ein simples Beispiel mit einer RTF und was verschiedene Software daraus machen. Alle Ränder waren auf 0 eingestellt. Man sollte aus Sicherheitsgünden nie das Blatt voll ausreizen.
|
|
|
| |
|
|
|
Julian Schmidt | iF (20.08.11)
Wenn Du da nen Minispeibiel parat hast dann bitte bei den Quelltexten einreihen.
Hier mal einen Ausschnitt aus meinen Prog. zum zeichnen einer Stundenplan-Tabelle. Bisher habe ich mich nur um das Querformat gekümmert. Hochformat kommt aber auch noch daran, und dann werde ich dieses Beispiel hier ergänzen, und einen Snippet erstellen! KompilierenMarkierenSeparieren $H Windows.ph
declare zeile%, top% , wtag$
var rand%=70
var pxmm!=3.425
var pymm!=3.35
StartPrint "*Stundenplan"
if %Printing
var H& = ~GetDeviceCaps(&PDC,~HORZSIZE)'Physikalische Breite in mm
var V& = ~GetDeviceCaps(&PDC,~VERTSIZE)'Physikalische Höhe in mm
var width&=H&*pxmm!'Physikalische Breite in Pixeln
var height&=V&*pymm!'Physikalische Höhe in Pixeln
var reihen_nummer%=width&/24'Breite der Spalte für die Stundennummer
UsePen 0,1,RGB(0,0,31)
If H& > V&'Wenn Querformat aufgewählt wurde
top%=height&/4'Beginn der Stundenplan Tabelle
zeile%=(height&-(top%+rand%))/13'Höhe einer Zeile der Tabelle
UsePen 0,2,255
Whileloop 13'Malen aller horizontalen Spalten
Line rand%,top%+zeile%*&loop - (width&-rand%),top%+zeile%*&loop
Endwhile
Line rand% ,top% - rand%,top%+(zeile%*13)'Erste vertiakale Linie
whileloop 0,6'Malen der restligen vertikalen Linien
case &loop=0 : Line (rand%+reihen_nummer%)+(((width&-reihen_nummer%)-(rand%*2))/6*&loop),top%+zeile% - (rand%+reihen_nummer%)+(((width&-reihen_nummer%)-(rand%*2))/6*&loop),top%+(zeile%*13)
case &loop<>0 : Line (rand%+reihen_nummer%)+(((width&-reihen_nummer%)-(rand%*2))/6*&loop),top% - (rand%+reihen_nummer%)+(((width&-reihen_nummer%)-(rand%*2))/6*&loop),top%+(zeile%*13)
Endwhile
TextColor 0,-1
UseFont "Times New Roman",width&/35,0,1,0,0
whileloop 12'Liniennummern zeichnen
DrawText rand%-2, top%+(zeile%*&loop)+2, rand%+reihen_nummer%, (top%+zeile%)+(zeile%*&loop), Str$(&loop), 1
Endwhile
whileloop 0,5'Wochentage, 'Zeiten' aufmalen
case &loop<>0 : wtag$=Substr$("Montag,Dienstag,Mittwoch,Donnerstag,Freitag",&loop,",")
TextColor 0,-1
UseFont "Times New Roman",width&/35,0,1,0,0
if &loop=0
DrawText rand%, top%+2, (rand%+reihen_nummer%)+(((width&-reihen_nummer%)-(rand%*2))/6*&loop)+(((width&-reihen_nummer%)-(rand%*2))/6) , top%+zeile%, "Zeiten", 1
else
DrawText rand%+reihen_nummer%+((((width&-reihen_nummer%)-(rand%*2))/6)*&loop), top%+2, rand%+reihen_nummer%+((((width&-reihen_nummer%)-(rand%*2))/6)*(&loop+1)) , top%+zeile%, wtag$, 1
Endif
Endwhile
Else'Wenn Hochformat aufgewählt wurde
Messagebox("Drucken des Hochformates bisher nicht möglich!","INFO",64)
Endif
EndPrint
Endif
Weiterhin habe ich einige Fragen zum Druckrändern! Wie würdet ihr den Druckrand wählen. Wie viel Pixel Rand werden auf jedem Fall benötigt damit nichts abgeschnitten wird?
Ist Rand auf jeder Seite notwendig? Links-Rechts, Oben-Unten oder sogar nur auf einer Seite? Ich male ein Hintergrund hinter den Stundenplan welcher möglichst mit wenig Rand ausgedruckt werden soll ^^. Momentane Ränder: Tabelle=70px Bild=10px |
|
|
| |
|
|
|
Julian Schmidt | Ich habe nun einen Kompromiss für mich gefunden. Ich ermittle den Rand des gewählten Druckers. Außerdem gebe ich eine Ober-, Untergrenze an. So halte ich die Objekte auf jeden Drucker in der angegebenen Größenangaben, wenn nicht sogar bei gleicher Ober-, Untergrenze in exakt der genauen Größe(im Verhältnis zum Blattes(Prozentual)) KompilierenMarkierenSeparieren $H Windows.ph
cls
StartPrint "*Test"
if %Printing
var H& = ~GetDeviceCaps(&PDC,~HORZSIZE)
var V& = ~GetDeviceCaps(&PDC,~VERTSIZE)
var pxmm!=3.425
var pymm!=3.35
var width&=H&*pxmm!
var height&=V&*pymm!
var rand%= ~GetDeviceCaps(&PDC,112)
case rand%<(width&/100)*7 : rand%=(width&/100)*7'Untergrenze=7% von Physikalischer Blattergröße in Pixeln
case rand%>(width&/100)*7 : rand%=(width&/100)*7'Obergrenze=7% von Physikalischer Blattergröße in Pixeln
UsePen 0,1,RGB(0,0,31)
If H& > V&'Querformat
Line rand%,100 - (width&-rand%),100
Else'Hochformat
Line rand%,100 - (width&-rand%),100
Endif
EndPrint
Endif
|
|
|
| |
|
|