| |
|
|
- 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? |
|
|
| |
|
|
| |
|
- Página 2 - |
|
|
« Dieser Contribución wurde como Solución gekennzeichnet. » |
|
- Página 3 - |
|
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 |
|
|
| |
|
|
|
|
Thomas Freier | Prima, ahora se ejecuta lo auch en me. Nur durchsteigen, por qué el así es, kann Yo no. Auch kann Yo una Einstellung para el oberen Randabstand no ausmachen oder besteht esta Möglichkeit no? |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Thomas Freier | Der Ansatz es ya OK. Gracias IF, va así muy bien. Yo poner el Randabstand links y oben como folgt: KompilierenMarcaSeparación Den bedruckbaren Zona a holen lohnt heute kaum, como el meisten Drucker randlos drucken puede. Also voluntad Yo sólo una oberen- y Heft-Rand vorgeben, o. einstellen dejar. |
|
|
| |
|
|
|
| Ah, ok & gern geschehen. ^ ^ |
|
|
| |
|
|
|
| Einfach sólo 1 RTF komplett ausdrucken funktioniert en me así ahora bastante super:
(tener disponer fr# en el Función vergessen) |
|
|
| |
|
|
|
Thomas Freier | En me "hängt" siempre una Expediente. Erste Vermutung, como el Expediente sólo vorm Druck producido se, dass el Drucker ya en el erzeugende Expediente zugreift, bevor el Speichervorgang final es, scheint no a zutreffen. Könnte uno una vez en seinem Sistema el beigefügte Expediente con el TEXT130.exe testen. Mit otro Software es ellos problemlos a abierto y a drucken. |
|
|
| |
|
|
|
| Stimmt, "hängt" zeigt en me él de el Loop no herauskommt y hunderte Artículos en la Auftrag son. ^ ^
Morgen veces schauen qué como "abgeht" o. por qué el Romper-Argument scheinbar nie zutrifft. |
|
|
| |
|
|
|
Thomas Freier | Sí, es verrückt, el otro RTFs con o más weniger Bildern fueron planmäßig gedruckt. Auch dieses Blatt se ordentlich gedruckt, si después de el letzten Bild todavía Texto oder una Leerzeile eingefügt se. Lo entsteht entonces una neue Página. Das Problema es vermutlich: Das letzte, en diesem Blatt mögliche Bild (Objeto), löst weder una Seitenwechsel todavía Druckende de. |
|
|
| |
|
|
|
| SendMessage em_formatRange son el letzte Position zurück, dieser Valor dürfte z.B. de Página a Página no "gleich" ser - vlt. passt algo no en la página por qué uno como el Position vlt. "manuell" weitergehen debería. Yo prüfe en el Ejemplo el Position auch anders como rein de msdn traducido damits con StartPrint/ nextPage klappt sin StartDoc-Api - vlt. tener Yo hier qué übersehen. |
|
|
| |
|
|
|
Thomas Freier |
.... vlt. tener Yo hier qué übersehen.
Und algo übersehen? |
|
|
| |
|
|
|
| Ah, garnicht geschaut - Uwe y Dieter son como deutlich kompetentere Ansprechpartner por qué Yo de ausging el ya geholfen es. |
|
|
| |
|
|
|
Thomas Freier | Yo sería lo mejor encontrar, si deine Scrips, el sí muy bien son, auch bekannt gewordene Fehler no mehr hätten. Ist doch auch posible, dass Uwes Ejemplo bajo cierto Umständen en uno Endlosschleife endet. A Sicherheit ha él ahora el max. a druckenden Páginas vorgegeben. Como es beim Einsatz natürlich el problema, dass el Seitenanzahl des Dokumentes selten ermitteln läßt. |
|
|
| |
|
|