| |
|
|
GC57 | Die erweiterte Funktion DrawText: DrawText x%, y%, dx%, dy%, Text$, Format% funktioniert ausgezeichnet.
Aber was mache ich wenn ich im Querformat drucken will? Das Format% (2) druckt immer noch rechtbuendig; was im Querformat (Orientation 900) bedeutet; das der Text wieter unten gedruckt wird.
Gibt es da eine Loesung? Vielen Dank im voraus. |
|
|
| |
|
|
|
| Vlt. hilft Dir... KompilierenMarkierenSeparieren'URL: https://xprofan.com/intl/de/quelltexte/druckausgabe-querformat/
'XProfan Querformat - Druckausgabe von Andreas Miethe
'##################
$H windows.ph
DEF Get_STDPrinter(1) Substr$(ReadIni$("WIN.INI","Windows","Device"),@&(1),",")
DEF OpenPrinter(3) !"WINSPOOL.DRV","OpenPrinterA"
DEF ClosePrinter(1) !"WINSPOOL.DRV","ClosePrinter"
DEF DocumentProperties(6) ! "WINSPOOL.DRV","DocumentPropertiesA"
CLS
Declare STDPrinterName$
STDPrinterName$ = Get_STDPrinter(1)'name des Standard-Druckers ermitteln
Declare PrinterHandle&
OpenPrinter(Addr(STDPrinterName$),Addr(PrinterHandle&),0)'PrinterHandle ermitteln
Declare BufferSize&,DevIn#
BufferSize& = DocumentProperties(%hwnd,PrinterHandle&,Addr(STDPrinterName$),0,0,0)'Buffergroes se fuer Devmode-Struktur ermitteln
Dim DevIn#,BufferSize&
DocumentProperties(0,PrinterHandle&,Addr(STDPrinterName$),DevIn#,0,$13)'Devmode- Struktur fuellen
ClosePrinter(PrinterHandle&)'Printerhandle wird nicht mehr benoetigt
Declare PrinterDC&
Long DevIn#,44 = 2'Orientation auf Querdruck setzen
PrinterDC& = ~CreateDC("WINSPOOL",Addr(STDPrinterName$),0,DevIn#)'Drucke-Device-Context
'Docinfo-Struktur anlegen und fuellen
Declare DocInf#,Docname$
Dim DocInf#,12
Long DocInf#,0 = 12
Docname$ = "Mein Dokument"
Long DocInf#,4 = Addr(Docname$)
Long DocInf#,8 = 0
'Druckausgabe per API
If ~StartDoc(PrinterDC&,DocInf#) > 0
If ~StartPage(PrinterDC&) > 0
printDaZeugs(printerDC&)
//~TextOut(PrinterDC&,60,70,"Querdruck",9)
~EndPage(PrinterDC&)
~EndDoc(PrinterDC&)
Endif
Endif
Print "Fertig mit drucken"
waitinput
Dispose DevIn#
Dispose DocInf#
END
proc printDaZeugs
parameters dc&
var maxx&=~GetDeviceCaps(dc&,~HORZRES)
var maxy&=~GetDeviceCaps(dc&,~VERTRES)
startPaint dc&
usepen 0,0,$FF0000
useBrush 1,$00FF00
rectangle 0,0 - maxx&,maxy&
endPaint
./../funktionsreferenzen/xprofan/endproc/'>endProc
... hab ein Beispiel von Andreas Miethe etwas angepasst
... probiere Dein DrawText mal in die Funktion printDaZeugs abzulegen. |
|
|
| |
|
|
|
GC57 | Danke fuer the Info.
Ich hab das mal versucht. Kriege aber immer eine leere Seite wenn ich DrawText einbinde. |
|
|
| |
|
|
|
| Jo, bei mir gehts.
Zeigste halt mal den Code. |
|
|
| |
|
|
|
| Zeig doch mal Deinen Code -
kann man ja sonst nicht so gut helfen. |
|
|
| |
|
|
|
GC57 | KompilierenMarkierenSeparierenCLS
'Beispiel
'Normal Format Correct
UseFont "Arial",12,0,0,0,0
DrawText 100,100,300,120,"LINKS",0
DrawText 100,120,300,140,"RECHTS",2
WAITINPUT
'Beispiel
'Querformat
@Set("Orientation",900)
UseFont "Arial",12,0,0,0,0
DrawText 100,300,120,100,"LINKS",0
DrawText 120,300,140,100,"RECHTS",2
PUT
Hier mal ein kleines Beispiel: Fuer den Druck kann StartPrint and Endprint eingefuegt werden; ist aber fuer die Funktion nicht wichtig. Das passiert auch in der Bildschirmausgabe.
Danke nochmals. |
|
|
| |
|
|
|
| Kannst die Breite selbst subtrahieren: [...] |
|
|
| |
|
|
|
| iF;Das sieht interessant aus!
Allerdings kriege ich auch das nicht im Querformat hin. Es scheint das die Zeichengroesse irgendwie anders ist.
Aber ich spiele domit noch ein wenig mehr rum.
Danke nochmals. |
|
|
| |
|
|