| |
|
|
- page 1 - |
|
Thomas Freier | trouvé J'ai eu de Andreas: KompilierenMarqueSéparation $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#
DeleteDCà>PrinterDC&)
Fin
malheureusement endet qui Druck pour 3 Seiten. WordPad druckt alles. comment geht's avec XProfan? |
|
|
| |
|
|
| |
|
- page 2 - |
|
|
« cette Beitrag wurde comme Solution gekennzeichnet. » |
|
- page 3 - |
|
Uwe ''Pascal'' Niemeier | Hi Thomas!
Anscheinend wird aus qui FORMATRANGE-Struktur pas seulement qui trop bedruckende Bereich ausgelesen, mais pour dem Drucken aussi qui réellement genutzte Bereich hinterlegt (ou bien quelque chose comme dans qui Art). tout autor doit qui betroffene paragraphe qui Struktur chez chaque Schleifendurchlauf récente bestückt volonté.
SeeYou Pascal |
|
|
| |
|
|
|
|
Thomas Freier | Prima, maintenant fonctionne es aussi chez mir. seulement durchsteigen, pourquoi cela so ist, peux je pas. aussi peux je une Einstellung pour den oberen Randabstand pas ausmachen ou bien besteht cet Possibilité pas? |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Thomas Freier | qui Ansatz ist déjà OK. merci iF, ça va très bien. je mets den Randabstand à gauche et dessus comment folgt: KompilierenMarqueSéparation Den bedruckbaren Bereich trop holen lohnt aujourd'hui à peine, là qui meisten Drucker randlos drucken peut. alors werde je seulement une oberen- et Heft-rebord vorgeben, bzw. einstellen laisser. |
|
|
| |
|
|
|
| |
|
| |
|
|
|
| simple seulement 1 RTF komplett ausdrucken funktioniert chez mir so maintenant entier super:
(hab dispose fr# dans qui Funktion oublier qc) |
|
|
| |
|
|
|
Thomas Freier | chez mir "hängt" toujours une Dossier. Erste Vermutung, là qui Dossier seulement vorm Druck erzeugt wird, dass qui Drucker déjà sur qui erzeugende Dossier zugreift, bevor qui Speichervorgang finissez ist, scheint pas trop zutreffen. Könnte einer einmal sur seinem System qui beigefügte Dossier avec qui TEXT130.exe testen. avec anderer Software ist vous problemlos trop ouvrir et trop drucken. |
|
|
| |
|
|
|
| Stimmt, "hängt" zeigt chez mir cela il aus dem Boucle pas herauskommt et hunderte Seiten dans Auftrag gibt. ^ ^
demain la fois regarder quoi là "abgeht" bzw. pourquoi cela Pause-Argument scheinbar nie zutrifft. |
|
|
| |
|
|
|
Thomas Freier | oui, ist fou, den autre RTFs avec plus ou bien moins Bildern wurden planmäßig gedruckt. aussi cet Blatt wird réglé gedruckt, si pour dem letzten Bild encore Text ou bien une Leerzeile eingefügt wird. Es entsteht ensuite une neue page. cela Problem ist probablement: cela dernier, sur diesem Blatt mögliche Bild (objet), löst weder une Seitenwechsel encore Druckende aus. |
|
|
| |
|
|
|
| SendMessage em_formatRange gibt qui dernier Position zurück, cette Wert pourrait z.B. de page trop page pas "gleich" son - vlt. passt quelque chose pas sur qui page weshalb on là qui Position vlt. "manuell" continuer sollte. je prüfe dans dem Beispiel qui Position aussi anders comme rein de msdn traduit damits avec StartPrint/ nextPage klappt sans StartDoc-Api - vlt. hab je ici quoi übersehen. |
|
|
| |
|
|
|
Thomas Freier |
.... vlt. hab je ici quoi übersehen.
et quelque chose übersehen? |
|
|
| |
|
|
|
| Ah, garnicht geschaut - Uwe et Dieter sommes là deutlich kompetentere Ansprechpartner weshalb je de ausging cela bereits geholfen ist. |
|
|
| |
|
|
|
Thomas Freier | je serait es besser trouver, si deine Scrips, qui oui très bien sommes, aussi bekannt gewordene faute pas plus hätten. Ist doch aussi possible, dass Uwes Beispiel sous certain Umständen dans einer Endlosschleife endet. Zur Sicherheit hat il maintenant qui max. trop druckenden Seiten vorgegeben. voilà beim Einsatz naturellement cela Problem, dass sich qui Seitenanzahl des Dokumentes selten ermitteln läßt. |
|
|
| |
|
|