Foro | | | | - Página 1 - |
| Thomas Freier | Gefunden Tuve de Andreas: KompilierenMarcaSeparación $I Profalt.inc
'################################
'Drucken mit dem Richedit-Control
'################################
DEF StartDoc(2) ! "gdi32","StartDocA"
DEF StartPage(1) ! "gdi32","StartPage"
DEF EndPage(1) ! "gdi32","EndPage"
DEF EndDoc(1) ! "gdi32","EndDoc"
DEF CreateDC(4) ! "gdi32","CreateDCA"
DEF DeleteDC(1) ! "gdi32","DeleteDC"
DEF GetDeviceCaps(2) ! "gdi32","GetDeviceCaps"
DEF PrintDlg(1) ! "comdlg32","PrintDlgA"
Declare Richedit&,RichDLL&,Ende&,Print&,Exit&,FileName$,Driver$,Printer$
Declare Horzres&,Vertres&,PixelsX&,PixelsY&,iWidthTwips&,iHeightTwips&
Declare iTextOut&,iTextLength&,DocName$
Declare PrinterDC&
Declare FormatRange#,PrintDLG#,cRect#
Declare DocInfo#
Dim FormatRange#,48
Dim DocInfo#,12
Clear DocInfo#
Dim PrintDLG#,66
Clear PrintDLG#
Dim cRect#,16
SetTrueColor 1
Window 0,0-640,480
CLS RGB(196,196,196)
Print& = CreateButton(%hwnd,"Drucken",500,40,80,24)
Exit& = CreateButton(%hwnd,"Ende",500,70,80,24)
RichEdit& = Create("RichEdit",%hwnd,"",0,2,460,430)
FileName$ = LoadFile$("Als RTF öffnen","*.RTF")
If FileName$ <> ""
RTF("LoadRTF",Richedit&,Filename$)
EndIf
DocName$ = "Profan-RTFPrinter"
Whilenot Ende&
Waitinput
If GetFocus(Exit&)
Ende& = 1
ElseIf GetFocus(Print&)
Long PrintDLG#,0 = 66
Long PrintDLG#,4 = %hwnd
Long PrintDLG#,20 = $0140'PD_RETURNDC,PD_PRINTSETUP
PrintDlg(PrintDLG#)
PrinterDC& = Long(PrintDLG#,16)
If PrinterDC&
HorzRes& = GetDeviceCaps(PrinterDC&,8)
VertRes& = GetDeviceCaps(PrinterDC&,10)
PixelsX& = GetDeviceCaps(PrinterDC&,88)
PixelsY& = GetDeviceCaps(PrinterDC&,90)
iWidthTwips& = Int((HorzRes&/PixelsX&))*1440
iHeightTwips& = Int((VertRes&/PixelsY&))*1440
Long cRect#,0 = 0
Long cRect#,4 = 0
Long cRect#,8 = iWidthTwips&
Long cRect#,12 = iHeightTwips&
Long DocInfo#,0 = 12
Long DocInfo#,4 = ADDR(Docname$)
Long FormatRange#,0 = PrinterDC&'HDC
Long FormatRange#,4 = PrinterDC&'TargetHDC
Long FormatRange#,8 = 0'linker Rand in Twips
Long FormatRange#,12 = 0'oberer Rand in Twips
Long FormatRange#,16 = iWidthTwips&'rechter Rand in Twips
Long FormatRange#,20 = iHeightTwips&'unterer Rand in Twips
Long FormatRange#,24 = 0'linker Rand in Twips
Long FormatRange#,28 = 0'oberer Rand in Twips
Long FormatRange#,32 = iWidthTwips&'rechter Rand in Twips
Long FormatRange#,36 = iHeightTwips&'unterer Rand in Twips
Long FormatRange#,40 = 0'CharRange-MIN
Long FormatRange#,44 = -1'CharRange MAX ( -1 = alles )
iTextOut& = 0
iTextLength& = SendMessage(RichEdit&, 14, 0, 0)- SendMessage(RichEdit&,186,0,0)
StartDoc(PrinterDC&,DocInfo#)
Whilenot OR(iTextOut& >= iTextLength&,itextOut& = -1)
StartPage(PrinterDC&)
Long FormatRange#,44 = -1
iTextOut& = SendMessage(RichEdit&, 1081, 1, FormatRange#)
Long FormatRange#,40 = iTextOut&
SendMessage(RichEdit&,1075,0,cRect#)
EndPage(PrinterDC&)
Wend
EndDoc(PrinterDC&)
SendMessage(RichEdit&, 1081, 1, 0)
Endif
Endif
EndWhile
Dispose FormatRange#
Dispose DocInfo#
Dispose PrintDLG#
DeleteDCa>PrinterDC&)
End
Leider endet el Druck después de 3 Páginas. WordPad druckt alles. Como geht's con XProfan? |
| | | | |
| | « Dieser Contribución wurde como Solución gekennzeichnet. » | | Uwe ''Pascal'' Niemeier | Hi Thomas!
Anscheinend se de el FORMATRANGE-Struktur no sólo el a bedruckende Zona ausgelesen, pero después de el Drucken auch el tatsächlich genutzte Zona hinterlegt (oder algo como en el Art). Darum muß el betroffene Abschnitt el Struktur cada Schleifendurchlauf neu bestückt voluntad.
SeeYou Pascal |
| | | | | |
| | | Und en me (win7) erscheinen el Bilder sólo garnicht:
. |
| | | | |
| | Thomas Freier | Sorry! In mi Ejemplo Tuve el RTFHandling.pcu verwendet: [...] Hänge el wichtigen Teile a y geänderte Script: KompilierenMarcaSeparación $U RTFHandling.pcu = R_'TRF-PCU einbinden
$U objects.pcu = R_
$I Profalt.inc
'################################
'Drucken mit dem Richedit-Control
'################################
DEF StartDoc(2) ! "gdi32","StartDocA"
DEF StartPage(1) ! "gdi32","StartPage"
DEF EndPage(1) ! "gdi32","EndPage"
DEF EndDoc(1) ! "gdi32","EndDoc"
DEF CreateDC(4) ! "gdi32","CreateDCA"
DEF DeleteDC(1) ! "gdi32","DeleteDC"
DEF GetDeviceCaps(2) ! "gdi32","GetDeviceCaps"
DEF PrintDlg(1) ! "comdlg32","PrintDlgA"
Declare Richedit&,RichDLL&,Ende&,Print&,Exit&,FileName$,Driver$,Printer$,Print_PCU&
Declare Horzres&,Vertres&,PixelsX&,PixelsY&,iWidthTwips&,iHeightTwips&
Declare iTextOut&,iTextLength&,DocName$
Declare PrinterDC&
Declare FormatRange#,PrintDLG#,cRect#
Declare DocInfo#
Dim FormatRange#,48
Dim DocInfo#,12
Clear DocInfo#
Dim PrintDLG#,66
Clear PrintDLG#
Dim cRect#,16
SetTrueColor 1
Window 0,0-1040,480
CLS RGB(196,196,196)
Print_PCU& = CreateButton(%hwnd,"Druck PCU",900,40,120,24)
Print& = CreateButton(%hwnd,"Druck direkt",900,80,120,24)
Exit& = CreateButton(%hwnd,"Ende",900,120,120,24)
Declare rtf_dll&,rtf_hdc&
rtf_dll& = R_INTITFORCREATERTF()'DLL laden mit PCU
RichEdit& = R_CREATERICHEDIT(%hWnd,"",0,0,810,420)' Richedit erstellen mit PCU
rtf_hdc& = R_PREPAREFORLINEBREAK(RichEdit&)' Device Context erzeugen mit PCU
R_Init_object(RichEdit&)'Zum Bildempfang vorbereiten
FileName$ = R_RTFLOAD(RichEdit&)
DocName$ = "Profan-RTFPrinter"
Whilenot Ende&
Waitinput
If GetFocus(Exit&)
Ende& = 1
ElseIf GetFocus(Print_PCU&)
R_RTFPrint(RichEdit&,0,0,0)' Print über die PCU
ElseIf GetFocus(Print&)
Long PrintDLG#,0 = 66
Long PrintDLG#,4 = %hwnd
Long PrintDLG#,20 = $0140'PD_RETURNDC,PD_PRINTSETUP
PrintDlg(PrintDLG#)
PrinterDC& = Long(PrintDLG#,16)
If PrinterDC&
HorzRes& = GetDeviceCaps(PrinterDC&,8)
VertRes& = GetDeviceCaps(PrinterDC&,10)
PixelsX& = GetDeviceCaps(PrinterDC&,88)
PixelsY& = GetDeviceCaps(PrinterDC&,90)
' iWidthTwips& = Int((HorzRes&/PixelsX&))*1440 ' Original
' iHeightTwips& = Int((VertRes&/PixelsY&))*1440 ' Original
iWidthTwips& = Int((HorzRes&/PixelsX&))*1450' geändert, nun ohne Umbruch in Zeile 1
iHeightTwips& = Int((VertRes&/PixelsY&))*1240' geändert, nun alle Bilder gedruckt
' Bei weiteren Seiten werden dann allerdings nicht mehr alle gedruckt??
Long cRect#,0 = 0
Long cRect#,4 = 0
Long cRect#,8 = iWidthTwips&
Long cRect#,12 = iHeightTwips&
Long DocInfo#,0 = 12
Long DocInfo#,4 = ADDR(Docname$)
Long FormatRange#,0 = PrinterDC&'HDC
Long FormatRange#,4 = PrinterDC&'TargetHDC
Long FormatRange#,8 = 0'linker Rand in Twips
Long FormatRange#,12 = 0'oberer Rand in Twips
Long FormatRange#,16 = iWidthTwips&'rechter Rand in Twips
Long FormatRange#,20 = iHeightTwips&'unterer Rand in Twips
Long FormatRange#,24 = 0'linker Rand in Twips
Long FormatRange#,28 = 0'oberer Rand in Twips
Long FormatRange#,32 = iWidthTwips&'rechter Rand in Twips
Long FormatRange#,36 = iHeightTwips&'unterer Rand in Twips
Long FormatRange#,40 = 0'CharRange-MIN
Long FormatRange#,44 = -1'CharRange MAX ( -1 = alles )
iTextOut& = 0
iTextLength& = SendMessage(RichEdit&, 14, 0, 0)- SendMessage(RichEdit&,186,0,0)
StartDoc(PrinterDC&,DocInfo#)
Whilenot OR(iTextOut& >= iTextLength&,itextOut& = -1)
StartPage(PrinterDC&)
Long FormatRange#,44 = -1
iTextOut& = SendMessage(RichEdit&, 1081, 1, FormatRange#)
Long FormatRange#,40 = iTextOut&
SendMessage(RichEdit&,1075,0,cRect#)
EndPage(PrinterDC&)
Wend
EndDoc(PrinterDC&)
SendMessage(RichEdit&, 1081, 1, 0)
Endif
Endif
EndWhile
R_DEINITRTF(RichEdit&,rtf_hdc&,rtf_dll&)'RTF-Aufräumen
R_DeInit_object()'RTF-Aufräumen
Dispose FormatRange#
Dispose DocInfo#
Dispose PrintDLG#
DeleteDC=s2>(PrinterDC&)
End
Beim Druck bin Yo algo más, pero no wiklich glücklich. 3 Páginas Muster sin Rand oben ok. Ab 5 Páginas alter Fehler. |
| | | | |
| | | Für el rtfhandling.pcu podría Yo el .def-Expediente de el Originalpaket [...] entnehmen, para el objects.pcu Yo pero no gefunden.
En me drucken beide Optionen a T.Radke en 3 Páginas pero no el Wort "Ende.".
Vlt. debería al alles primero en una (überall-igual-) funktionierende Base reduzieren oder vlt. liegt el problema al Ende des Dokumentes. ^ ^
Auch wenns con el Problema "RTF-Ausdrucken" no viel a tun ha así ists al Ende vlt. einfacher simplemente incluso a drucken o. incluso el Páginas/ Bilder a erzeugen. ^ ^
Lässt se HTML einfacher drucken? |
| | | | |
| | Thomas Freier | Löst no el Tarea, dass el Dokument más gegeben voluntad se, derjenige lo eben con Word oder WordPad abierto y bearbeiten puede se. Einfach de el Programa drucken es no el problema y lo müßte doch como en WordPad auch encima XProfan posible ser. Dieter se esta Zeilen en efecto lesen y tal vez después de uno Solución suchen.
Apéndice: una 26 seitige RTF con reinem Texto es problemlos a drucken. |
| | | | |
| | | Irgendwas tener Yo schonmal gefunden [...] ^ ^ |
| | | | |
| | Thomas Freier | Jo! El Página [...] Yo ya largo como Lesezeichen en el Navegador mentira. Kann aber sólo wenig mangels Programmier- y Englischkenntnissen verwerten. En reinen Textseiten se ejecuta el Druck gesteuert encima KompilierenMarcaSeparación ordentlich de. Sombrero el RTF aber sólo Bilder, stimmt el Dokumentenende no mehr. Der Druck endet ya vorher. Mit algo Spielerei KompilierenMarcaSeparación podría Yo así steuern, dass el a erwarteten sieben Páginas con Bildern todos ausgedruckt fueron. Hatte aber auch en a hohem x% a a 12.000 zusätzliche Leerseiten. |
| | | | |
| | | Und si veces PrinterDC auch pro Schleifendurchgang neu erzeugst?
Apéndice: Eher Quatsch como PrinterDC& = Largo(PrintDLG#,16) |
| | | | |
| | | Yo glaub Yo tener qué, muss todavía verifizzeln... |
| | | | |
| | | Trotz absolutem Chaos-Müll tue Yo Usted el a porque en el me todas las páginas druckt a para Ende: |
| | | | |
| | Thomas Freier | Im Moment komme Yo así no más. Erststart el texto99.exe con Drucker freePDF wurde el 1. Página gedruckt. Als Drucker el Epson ausgewählt --> no Reacción. Als Drucker el Destiller gewählt --> no Reacción. Wieder freePDF gewählt --> nun auch no Reacción mehr. Werde me al Abend el texto99.xprf vornehmen y versuchen a Druckergebnissen a kommen. |
| | | | |
| | |
| | | | |
|
RespuestaTema opciones | 17.128 Views |
ThemeninformationenDieses Thema ha 3 subscriber: |