Español
Foro

RTF y Ausdrucken

 
- 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?

2.867 kB
Hochgeladen:06.10.2010
Ladeanzahl89
Descargar
 
Gruß Thomas
Windows XP SP2, XProfan X2
06.10.2010  
 



« 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

6 kB
Versión:2
Kurzbeschreibung: RTF drucken
Hochgeladen:26.10.2010
Ladeanzahl151
Descargar
 
26.10.2010  
 



 
- Página 3 -


 
- Página 2 -



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.
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Personas!

Wenn uno todos Características, el el Drucker direkt ansprechen (StartDoc/EndDoc, StartPage/EndPage) auskommentiert, puede ser el FormatRange-Rutina auch "im Leerlauf" betreiben y así vorab ermitteln, wieviele Páginas gedruckt würden .

Mit algo Geschick puede ser así incluso antes el Drucken al Seitenanfang y / oder Seitenende zusätzliche Textos einbauen, z.B. "Ende Página 1" "Anfang Página2" "Seite 1 de 3" usw.

Übrigens scheint lo en meiner letzten Demo en el Hilo nebenan en Dokumenten con Bildern Abweichungen en el eingestellten Rändern a geben; como tener lugar teilweise Seitenumbrüche, wo no nötig wären. Tiempo sehen, si como todavía qué hacer läßt.

@ Thomas: Hoffe en Kürze una solución para Bearbeitern de RTF en RTF  gefunden a haben.

SeeYou
Pascal
 
21.10.2010  
 



Thomas Freier
Yo sería lo mejor...


Keine Cuestión, sobald Yo otra vez a diesem PC ...
 
22.10.2010  
 




Thomas
Freier
He Pascal,
konntest du a dieser Punto ni Verbesserung encontrar?

Übrigens scheint lo en meiner letzten Demo en el Hilo nebenan en Dokumenten con Bildern Abweichungen en el eingestellten Rändern a geben; como tener lugar teilweise Seitenumbrüche, wo no nötig wären. Tiempo sehen, si como todavía qué hacer läßt.


Yo habe hin y her probiert y folgendes festgestellt:
Wenn Yo a el, z.B. Hemmelsdorf, erstellte RTF algunos große Bilder (P1010404.JPG= 640x480) como groß anhänge, así Es el 1. Página OK. Auf el Folgenden es jeweils sólo una Bild pro Página.
Wenn Yo el Bilder en el neu erstellten Página lösche salvo el Texto y sechsmal el Bild (P1010404.JPG) como groß einfüge, voluntad pro Página 2 Bilder gedruckt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
24.10.2010  
 




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

6 kB
Versión:2
Kurzbeschreibung: RTF drucken
Hochgeladen:26.10.2010
Ladeanzahl151
Descargar
 
26.10.2010  
 




Thomas
Freier
He Pascal,
el sieht super de. Gracias!


Mit algo Geschick puede ser así incluso antes el Drucken al Seitenanfang y / oder Seitenende zusätzliche Textos einbauen, z.B. "Ende Página 1" "Anfang Página2" "Seite 1 de 3" usw.


Hast du como ni tolle Concepto?
Bisher Yo :
KompilierenMarcaSeparación
startpaint DC&
DrawText 2250,6725,"Seite "+str$(x%)'..........bei A4 hoch
endpaint
inc x%
~StartPage(DC&)'------------Seite beginnen > Vorbereitung Drucken/pre>
eingesetzt. Macht beim Font todavía Problemas. Tiempo se el Font el 1. Línea en zwei Páginas verwendet y luego folgt una otro. Ein más Tiempo se él en allen Páginas verwendet.
 
Gruß Thomas
Windows XP SP2, XProfan X2
26.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Voraussetzung para el de me verwendete Technik es, daß Dokument y gedruckte Página igual viele Zeilen enthalten, porque el entsprechende Rutina antes el Drucken direkt en el RTF-Editar schreibt. Lo darf also no unkontrollierten Zeilenumbrüche al Rand de Dokument y/oder Página geben.
Außerdem gibt's todavía Problemas wegen el Bilder.

SeeYou
Pascal
 
29.10.2010  
 




Thomas
Freier
He Pascal,
wo bist du en Problemas con Bildern gestoßen? Yo habe así a el zwanzig Beispiele, große/kleine Bilder y Textzeilen einfügen/löschen, getestet y Druck war siempre OK.
Für el Seitenzahl Puse unteren Blattrand con 12mm y drucke el Seitenzahl en esta Rand sin Prüfung en bedruckbaren Zona y Blattausrichtung se zwangsweise en A4-hoch gesetzt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
30.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Como ya he dicho, mi Método es, antes el real Drucken Kopf- y/oder Fußzeilen direkt en el RTF-Editar a escribir.
Sombrero para mi Zwecke bisher bien funktioniert, ha aber eben auch Nachteile o. es no para cada Fall anwendbar. Tiempo sehen, si la todavía ändern läßt.
Werde me deine Technik aber auch otra vez anschauen.

BTW: Diese RTF-Versión [...]  kann auch en Word erstellte Tabellen con más Zeilen darstellen.

SeeYou
Pascal
 
30.10.2010  
 




Thomas
Freier
He Pascal,
media du : el Typ RichEdit50W (RichEdit 4.1) ?
Aus uno alten Anwendung (hier reduziert) Todavía:
KompilierenMarcaSeparación
' ab XProfan 8.0
Def SetEditNumeric(1) SetWindowLong(@&(1),-16, (GetWindowLong(@&(1),-16) | $2002))
Def SetWindowLong(3) !"USER32", "SetWindowLongA"
Def GetWindowLong(2) !"USER32", "GetWindowLongA"
Def GetSysColor(1) !"USER32","GetSysColor"
Declare text$,text1$,x%,h$
Declare ed1&,ed2&
Declare sed1&,sed2&,sed3&,sed4&,sed5&
Declare hed1&
Declare but&,sich&
Declare font&
SetTrueColor 1
Window 10,10 - 900,600
cls GetSysColor(15)
font&=CreateFont("Arial",16,0,0,0,0)
SetDialogFont  font&
ed1&=Create("RichEdit",%hwnd,"",11,10,700,500)
ed2&=Create("RichEdit",%hwnd,"",0,00,0,0)
CreateText(%hwnd,"Spaltenbreite",760,80,100,22)
sed1&=CreateEdit(%hwnd,"200",760,110,100,22)
sed2&=CreateEdit(%hwnd,"200",760,140,100,22)
sed3&=CreateEdit(%hwnd,"200",760,170,100,22)
sed4&=CreateEdit(%hwnd,"",760,200,100,22)
sed5&=CreateEdit(%hwnd,"",760,230,100,22)
SetEditNumeric(sed1&)
SetEditNumeric(sed2&)
SetEditNumeric(sed3&)
SetEditNumeric(sed4&)
SetEditNumeric(sed5&)
CreateText(%hwnd,"Zeilenhöhe",760,300,100,22)
hed1&=CreateEdit(%hwnd,"12",760,330,100,22)
SetEditNumeric(hed1&)
but&=CreateButton(%hwnd,"Einfügen",760,360,100,24)
sich&=CreateButton(%hwnd,"Speichern",760,460,100,24)
SetFocus(ed1&)
settext Ed1&,"Bitte eine Tabellenzeile einfügen\nund für weitere Zeilen"+ \
" den Curser ans Zeilenende setzen und die Taste ENTER drücken.\n"+ \
"Die Spaltenbreite ist nachträglich nicht mehr zu verändern."+Chr$(13)+Chr$(10)
SendMessage(Ed1&,$00B1,-1,-1)

While 1

    WaitInput
    case %key=2:BREAK
    case GetFocus(But&) AND (val(GetText$(sed1&))>0) : RTF_Zeile

    If GetFocus(sich&)

        Text$ = @SaveFile$("Speichern","Neu.rtf")
        case Len(trim$(Text$))>0 : call(&SaveRTF,Ed1&,addr(Text$))

    EndIf

wend

DeleteObject font&
End

Proc RTF_Zeile

    Assign #1,"Zeile.tmp"
    Rewrite #1
    Print #1,"{\"+chr$(114)+"tf1\"+chr$(097)+"nsi\"+chr$(097)+"nsicpg1252\deff0\deflang1049\deflangfe1049{\"+chr$(102)+"onttbl{\"+chr$(102)+"0\"+chr$(102)+"nil\"+chr$(102)+"charset0 Arial;}}"
    Print #1,"\viewkind4\uc1"
    text$="\"+chr$(116)+"rowd\"+chr$(116)+"rgaph30"
    x%= int(val(GetText$(sed1&))*10)
    text$=text$+"\cellx"+str$(x%)
    text1$="\cell"
    h$= str$(int(val(GetText$(hed1&))*2))

    If val(GetText$(sed2&))>0

        x%= x%+int(val(GetText$(sed2&))*10)
        text$=text$+"\cellx"+str$(x%)
        text1$=text1$+"\cell"

    EndIf

    If val(GetText$(sed3&))>0

        x%= x%+int(val(GetText$(sed3&))*10)
        text$=text$+"\cellx"+str$(x%)
        text1$=text1$+"\cell"

    EndIf

    If val(GetText$(sed4&))>0

        x%= x%+int(val(GetText$(sed4&))*10)
        text$=text$+"\cellx"+str$(x%)
        text1$=text1$+"\cell"

    EndIf

    If val(GetText$(sed5&))>0

        x%= x%+int(val(GetText$(sed5&))*10)
        text$=text$+"\cellx"+str$(x%)
        text1$=text1$+"\cell"

    EndIf

    Print #1,text$+"\pard\intbl\lang1031\"+chr$(102)+"s"+h$+text1$+"\"+chr$(114)+"ow"
    Print #1,"\par}"
    Close #1
    Rtf("LoadRTF",ed2&,"Zeile.tmp")
    SetFocus(ed2&)
    sendmessage(ed2&,$00B1,0,-1)
    Sendmessage(ed2&,$301,0,0)
    Sendmessage(ed1&,$302,0,0)
    SetFocus
n>ed1&) ENDPROC

Aber desafortunadamente läßt se el Raster no formatieren, d.h. wenigens deutlicher darstellen.
 
Gruß Thomas
Windows XP SP2, XProfan X2
31.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

A Einblendung de Kopf/Fußzeilen:
Anscheinend kommt en FormatRange-Message una Función para Einsatz, el ähnlich como DrawText wirkt. Darum kann en deiner eingeblendeten Línea el Font wechseln. Umgekehrt puede ser el Font no vorgeben, porque se el el todo Dokument auswirkt.
Solución: Den Texto en el Profano-Speicherbitmap invertir y luego en el Páginas einblenden:
KompilierenMarcaSeparación
...
~StartDoc(DC&,DocInfo#)'-------Druckauftrag beginnen

whileloop 1,Seiten%'-----------Anzahl ermittelte Seiten

    mcls 500,100,255'--Farbe nur zu Testzwecken
    startpaint -1'-----%HDC nach StartPaint -1: DC der Speicherbitmap
    usefont "Balloon",50,0,0,0,0
    drawtext 0,0,"Seite "+str$(&loop)+" von "+str$(Seiten%)
    ~BitBlt(DC&,10,10,500,100,%hdc,0,0,~SRCCOPY)'--Parameter 2+3: Position in der Seite
    endpaint
    ~StartPage(DC&)'------------Seite beginnen > Vorbereitung Drucken   ...

Schriftgröße y Position necesario a el jeweiligen Drucker angepaßt werden; antes Allem, si una Fußzeile voluntad se. Kann uno sicher encima Seitegröße/Auflösung berechnen.
Aber dieser Trick es en cada Fall en Längen mejor como mi Technik; Gracias para el Tipp!

Zu Tabellen:
Tatsächlich verhält se dein Code con un 50W-Control anders.
Aber dieses Comportamiento es nun veces undokumentiert y por lo tanto debería uno se no necesariamente en él verlassen. Tipp: si du el Tabla con Word erstellst y weiße Linien wählst, es ellos en el 50W no como Tabla a erkennen.

SeeYou
Pascal
 
02.11.2010  
 




Thomas
Freier
Su Script para el Fußzeile voluntad Todavía testen.
Was el Tabla angeht, así Tuve ellos, versehen con Platzhaltern, 2005 para Listen (Auftragsbestätigung, Rechnung, usw.) verwendet y sólo encima XProfan gedruckt. El Listen sahen con el schwach grauen Tabellenraster siempre todavía mejor de como sin y la página podría como RTF gespeichert voluntad.
 
Gruß Thomas
Windows XP SP2, XProfan X2
02.11.2010  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

17.023 Views

Untitledvor 0 min.
Uwe Lang18.02.2024
H.Brill18.09.2020
boh111.09.2020
Alibre25.12.2019
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie