Español
Foro

RTF - Imprimir

 

Thomas
Freier
Wollte una RTF mehrfach en más Páginas drucken. Ein de Pascal angepasstes Script va.
KompilierenMarcaSeparación
DEMO DRAWRICHTEXT GRÖSSENABFRAGE
window 0,0-400,300
 $H Windows.ph
 $H Messages.ph
 $H RichEdit.ph

proc DrawRichText2---------------------------------------------------------DrawRichText2

    parameters RTF&,PosX%,PosY%,MaxX%,MaxY%--Position + Grösse in Pixeln!
    declare PrinterDpiX%,PrinterDpiY%
    declare WindowDpiX%,WindowDpiY%
    declare fx!,fy!

    if %printing--Bei Druck: %HDC2 = %HDC = &PDC

        ~SetMapMode(%hdc2,1)
        ~SetWindowExtEx(%hdc2,1,1,0)
        ~SetViewPortExtEx(%hdc2,1,1,0)
        PosX%=PosX%+30--Korrektur ???
        PosY%=PosY%+30--Korrektur ???

    endif

    PrinterDpiX%=~GetDeviceCaps(%hdc2,~LOGPIXELSX)--dpi X des Druckers
    PrinterDpiY%=~GetDeviceCaps(%hdc2,~LOGPIXELSY)--dpi X des Druckers
    WindowDpiX%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSX)--dpi X des Bildschirms (!)
    WindowDpiY%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSY)--dpi Y des Bildschirms (!)
    PosX%=int(PosX%/WindowDpiX%*1440)
    PosY%=int(PosY%/WindowDpiX%*1440)
    MaxX%=int(MaxX%/WindowDpiX%*1440)
    MaxY%=int(MaxY%/WindowDpiX%*1440)
    declare Range#
    dim Range#,48
    clear Range#
    long Range#, 0=%hdc2,%hdc2
    long Range#, 8=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
    long Range#,24=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
    long Range#,44=-1
    sendmessage(RTF&,~EM_FORMATRANGE,1,Range#)

    if %printing

        fx!=~GetDeviceCaps(%hdc2,~LOGPIXELSX)/300
        fy!=~GetDeviceCaps(%hdc2,~LOGPIXELSY)/300
        ~SetMapMode(%hdc2,~MM_ANISOTROPIC)
        ~SetWindowExtEx(%hdc2,6400,9600,0)
        ~SetViewPortExtEx(%hdc2,int(2200*fx!),int(3300*fy!),0)

    endif

    dispose Range#
    casenot %printing:repaint
    endproc---------------------------------------------------------------------------------
    Print "Bitte warten, der Druck wird vorbereitet!"
    var hFont% = @Create("Font","Arial",20,12,0,0,0)
    declare RtfDll&,RichEdit&
    RtfDll&=usedll("RichEd20.dll")
    RichEdit&=control("RichEdit20A","Test",$500050c4,0,0,0,0,%hwnd,5000,0)
    settext RichEdit&,"Diese RTF-Anwendung läßt mich nicht verzweifeln!"
    SetFont RichEdit&,hFont%
    declare Breite%,Höhe%
    Breite%= 400
    Höhe%= 200
    var    y1%=0
    var    x1%=0
    startprint
    var y%=0

    While y% < 26  ....einfach einmal auf zwei Seiten drucken

        DrawRichText2 RichEdit&,(y1%*4.40),(x1%*4.40),400,200
        inc y%
        y1%=y1% + 105

        if y1%>105

            y1%=0
            x1%=x1%+43

            IF x1%>290

                x1%=0
                NEXTPAGE

            endif

        endif

    wend

    endprint
    destroywindow(RichEdit&/span>
    waitkey

In meiner, hier stark gekürzten, Anwendung se el Font en el zweiten Página geändert y yo finde el Fehler no.
KompilierenMarcaSeparación
LABEL-EDIT-DRUCK-E
 $H Windows.ph
 $H Messages.ph
 $H RichEdit.ph

proc DrawRichText2---------------------------------------------------------DrawRichText2

    parámetros RTF&,PosX%,PosY%,MaxX%,MaxY%--Position + Grösse en Pixeln!
    declarar PrinterDpiX%,PrinterDpiY%
    declarar WindowDpiX%,WindowDpiY%
    declarar fx!,fy!

    if %printing--En Druck: %HDC2 = %HDC = &PDC

        ~SetMapMode(%hdc2,1)
        ~SetWindowExtEx(%hdc2,1,1,0)
        ~SetViewPortExtEx(%hdc2,1,1,0)
        PosX%=PosX%+3--Corrección ???
        PosY%=PosY%+3--Corrección ???

    endif

    PrinterDpiX%=~GetDeviceCaps(%hdc2,~LOGPIXELSX)--dpi X des Druckers
    PrinterDpiY%=~GetDeviceCaps(%hdc2,~LOGPIXELSY)--dpi X des Druckers
    WindowDpiX%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSX)--dpi X des Bildschirms (!)
    WindowDpiY%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSY)--dpi Y des Bildschirms (!)
    PosX%=int(PosX%/WindowDpiX%*1440)
    PosY%=int(PosY%/WindowDpiX%*1440)
    MaxX%=int(MaxX%/WindowDpiX%*1440)
    MaxY%=int(MaxY%/WindowDpiX%*1440)
    declarar Range#
    dim Range#,48
    clear Range#
    long Range#, 0=%hdc2,%hdc2
    long Range#, 8=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
    long Range#,24=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
    long Range#,44=-1
    sendmessage(RTF&,~EM_FORMATRANGE,1,Range#)

    if %printing

        fx!=~GetDeviceCaps(%hdc2,~LOGPIXELSX)/300
        fy!=~GetDeviceCaps(%hdc2,~LOGPIXELSY)/300
        ~SetMapMode(%hdc2,~MM_ANISOTROPIC)
        ~SetWindowExtEx(%hdc2,6400,9600,0)
        ~SetViewPortExtEx(%hdc2,int(2200*fx!),int(3300*fy!),0)

    endif

    disponer Range#
    casenot %printing:repaint
    ENDPROC---------------------------------------------------------------------------------
    #########################################################################################

    Proc Label

        declarar x1%,y1%
        Declarar rtf#
        Declarar x&,x%,y%
        declarar Label_m&,RtfDll&,Label_dlg&
        declarar a#
        declarar LB_form&
        declarar RichEdit&
        declarar MaxB%,MaxH%
        declarar IstB%,IstH%
        declarar Pos#
        declarar WndProc&
        dim Pos#,8
        dim rtf#,512
        RtfDll&=usedll("RichEd20.dll")
        WINDOWSTYLE 16
        Label_m&=create("Window",%hwnd,"Adresslabelformat: 105x43 ; en el Blatt: 7 Zeilen + 2 Reihen",100,50, 640,640)
        usefont "MS Sans Serif",16,0,0,0,0
        setdialogfont 1
        var hFont% = @Crear("Font",Arial,20,12,0,0,0)
        var  BP_but4& =@Crear("Button",Label_m&,"Drucken",450,554,82,25)
        var  BP_but5& = @Crear("Button",Label_m&,"Ende",540,554,82,25)
        .....................................................................RTF-Editar erzeugen
        Label_dlg&=@Control("STATIC","",$5400110E,0,32,624,340,Label_m&,$7918,%hInstance)
        MaxB%=405
        MaxH%=243
        x%= (MaxB%/2) - 50
        Lb_form&=@Control("STATIC","",$5400110E,x%,5,MaxB%/2,20,Label_dlg&,$7918,%hInstance)
        RichEdit&=control("RichEdit20A","",$54005004,33,33,MaxB%,MaxH%,Label_dlg&,5000,0)
        settext RichEdit&,"Diese RTF-Anwendung läßt mich verzweifeln!"
        SetFont RichEdit&,hFont%

        mientras que 1

            WaitInput
            caso GetFocus(BP_but5&): romper

            If GetFocus(BP_but4&)  ----------------------------Drucken

                y1%=0
                x1%=0
                startprint
                y%=0

                Mientras que y% < 26  ....simplemente una vez en zwei Páginas drucken

                    DrawRichText2 RichEdit&,(y1%*4.40),(x1%*4.40),400,200
                    inc y%
                    y1%=y1% + 105

                    if y1%>105

                        y1%=0
                        x1%=x1%+43

                        IF x1%>290

                            x1%=0
                            NEXTPAGE

                        endif

                    endif

                wend

                endprint

            EndIf

        endwhile

        destroywindow(RichEdit&)
        disponer rtf#
        disponer a#
        disponer pos#
        destroywindow(Label_m&)
        freedll RtfDll&

    ENDPROC

    #########################################################################################
    WINDOWSTYLE 543512+8+2
    Windowtitle "CSV Daten para Adresslabel"
    window 0,0 - 900,600
    Label                       Adresslabel
    destroywindow(%hWnd)
    end

Sieht ihn uno de euch oder ha una Tip, woran lo mentira podría?
 
Gruß Thomas
Windows XP SP2, XProfan X2
20.08.2008  
 




Dieter
Zornow
Yo denke veces después de cada nextpage debería oder muss el Font neu transferencia voluntad.
Habs no getestet, como Yo nichts para ausdrucken habe.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
20.08.2008  
 




Thomas
Freier
@ Dieter , Yo verwende beim Testen "FreePDF XP".
Der eigentliche Vorgang:
erster dbf Datensatz
el blanko.rtf se geladen
el Platzhalter (dbf-Feldnamen) voluntad todavía una vez überprüft
entonces el entsprechende RTF-Línea con el Daten de el dbf ersetzt
Ausdruck a el vorgesehenen Position.
el RTF gelöscht
nächster dbf Datensatz
el blanko.rtf se geladen
usw.
así debería lo eigentlich ir. Leider sólo en el 1. Página.
 
Gruß Thomas
Windows XP SP2, XProfan X2
20.08.2008  
 




Jörg
Sellmeyer
Daieter ha Recht con NextPage: [...]  [...] 
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
20.08.2008  
 




Thomas
Freier
@ Jörg, dass Si es usted el ausbuddeln würdest war me klar.
Aber, hier erweitert con Daten, ergibt el Gewünschte con "nextpage".
KompilierenMarcaSeparación
DEMO DRAWRICHTEXT GRÖSSENABFRAGE
 $H Windows.ph
 $H Messages.ph
 $H RichEdit.ph
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 $I Listview_Funktionen.inc
var lvdll&=usedll("Listview.dll")
Declare bereich#,bytes&,Label_view&,x&,y&,z&,x%
Declare listview&, text$
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Def GetSysColor(1) !"USER32","GetSysColor"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

proc DrawRichText2---------------------------------------------------------DrawRichText2

    parameters RTF&,PosX%,PosY%,MaxX%,MaxY%--Position + Grösse in Pixeln!
    declare PrinterDpiX%,PrinterDpiY%
    declare WindowDpiX%,WindowDpiY%
    declare fx!,fy!

    if %printing--Bei Druck: %HDC2 = %HDC = &PDC

        ~SetMapMode(%hdc2,1)
        ~SetWindowExtEx(%hdc2,1,1,0)
        ~SetViewPortExtEx(%hdc2,1,1,0)
        PosX%=PosX%+30--Korrektur ???
        PosY%=PosY%+30--Korrektur ???

    endif

    PrinterDpiX%=~GetDeviceCaps(%hdc2,~LOGPIXELSX)--dpi X des Druckers
    PrinterDpiY%=~GetDeviceCaps(%hdc2,~LOGPIXELSY)--dpi X des Druckers
    WindowDpiX%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSX)--dpi X des Bildschirms (!)
    WindowDpiY%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSY)--dpi Y des Bildschirms (!)
    PosX%=int(PosX%/WindowDpiX%*1440)
    PosY%=int(PosY%/WindowDpiX%*1440)
    MaxX%=int(MaxX%/WindowDpiX%*1440)
    MaxY%=int(MaxY%/WindowDpiX%*1440)
    declare Range#
    dim Range#,48
    clear Range#
    long Range#, 0=%hdc2,%hdc2
    long Range#, 8=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
    long Range#,24=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
    long Range#,44=-1
    sendmessage(RTF&,~EM_FORMATRANGE,1,Range#)

    if %printing

        fx!=~GetDeviceCaps(%hdc2,~LOGPIXELSX)/300
        fy!=~GetDeviceCaps(%hdc2,~LOGPIXELSY)/300
        ~SetMapMode(%hdc2,~MM_ANISOTROPIC)
        ~SetWindowExtEx(%hdc2,6400,9600,0)
        ~SetViewPortExtEx(%hdc2,int(2200*fx!),int(3300*fy!),0)

    endif

    dispose Range#
    casenot %printing:repaint
    endproc---------------------------------------------------------------------------------

    Proc ErsetzeMultiLine

        Parameters REdit&,Line&
        Declare Index&,Index1&
        Index& = ~sendMessage(REdit&,~EM_LINEINDEX,Line&-1,0)
        Index1& = ~sendMessage(REdit&,~EM_LINEINDEX,Line&,0)
        ~sendmessage(REdit&,~EM_SETSEL,Index&,Index1&)
        ~sendmessage(REdit&,~EM_REPLACESEL,0,addr(c$)) Ersetzt den markierten Text
        Endproc----------------------------------------------------------------------------------
        WINDOWSTYLE 543512+8+2
        Windowtitle "CSV Daten für Adresslabel"
        window 0,0 - 900,600
        AppendMenuBar 3,"   Adresslabel   "
        x&=MixRGBs(GetSysColor(15),$00ffffff)
        listview&=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
        text$="Pliete.csv"
        bytes&=@FileSize(text$)

        If bytes&>0

            Dim bereich#,bytes&
            ReadFileQuick(addr(text$),bereich#,0,bytes&)
            x&=SetColumnsFromMem(listview&,bereich#,addr(y&))
            CsvToListview(listview&,(bereich#+y&),(bytes&-y&),x&)

        EndIf

        AutoSortListview listview&,1,1,1,1,2,2
        ShowListView(listview&,100,32,754,456)
        Print "Bitte warten, der Druck wird vorbereitet!"
        var hFont% = @Create("Font","Arial",20,12,0,0,0)
        declare RtfDll&,REdit&
        RtfDll&=usedll("RichEd20.dll")
        REdit&=control("RichEdit20A","Test",$500050c4,0,0,0,0,%hwnd,5000,0)
        RTF("LoadRTF",REdit&,"Aufkleber Brief.rtf")
        x%=3
        declare c$
        declare Breite%,Höhe%
        Breite%= 800
        Höhe%= 400
        var    y1%=0
        var    x1%=0
        startprint
        y&=0

        While y& < 226  ....einfach einmal auf zwei Seiten drucken

            c$="Herrn"+"
            "
            ErsetzeMultiLine(REdit&,4)Zeile ersetzen
            GetItemText(listview&,bereich#,1,y&)
            c$=String$(bereich#,0)
            GetItemText(listview&,bereich#,2,y&)
            c$=c$ + " " + String$(bereich#,0) + "
            "
            ErsetzeMultiLine(REdit&,5)Zeile ersetzen
            GetItemText(listview&,bereich#,11,y&)
            c$=String$(bereich#,0) + "
            "
            ErsetzeMultiLine(REdit&,6)Zeile ersetzen
            GetItemText(listview&,bereich#,9,y&)
            c$=String$(bereich#,0)
            GetItemText(listview&,bereich#,10,y&)
            c$=c$ + " " + String$(bereich#,0) + "
            "
            ErsetzeMultiLine(REdit&,8)Zeile ersetzen
            DrawRichText2 REdit&,(y1%*4.40),(x1%*4.40),400,200
            inc y&
            y1%=y1% + 105

            if y1%>105

                y1%=0
                x1%=x1%+43

                IF x1%>290

                    x1%=0
                    NEXTPAGE

                endif

            endif

        wend

        endprint
        WaitInput
        destroywindow(REdit&)
        dispose bereich#
        destroywindow(%hWnd)
        /../../funcion-referencias/XProfan/freedll/'>freedll lvdll&
         $I Listview_Dispose.inc

Posesiones aber todavía una code gefunden:
KompilierenMarcaSeparación
StartDoc(PrinterDC&,DocInfo#)

Sinestar encargado O(iTextOut& >= iTextLength&,itextOut& = -1)

    StartPage(PrinterDC&)
    Largo FormatRange#,44 = -1
    iTextOut& = SendMessage(RichEdit&, 1081, 1, FormatRange#)
    Largo FormatRange#,40 = iTextOut&
    SendMessage(RichEdit&,1075,0,cRect#)
    EndPage(PrinterDC&)

Wend

EndDoc(PrinterDC&)

el Yo ausprobieren voluntad.
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.08.2008  
 




Thomas
Freier
@Jörg, Yo hoffe mein Kommentar war no a hart. Aber UseFont darf eigentlich en el Font en el RTF auch beim Drucken oder erzwungenem Seitenwechsel no Einfluß nehmen. Obwohl, en XProfan es el no gewiss. Un A5 RTF se beim Guardar a uno A4 RTF. ¿Por qué??? Genaues probablemente sólo Roland wissen.
Sombrero no uno una Tip, como una Seitenwechsel erzwungen se, außer Druckersteuerzeichen a senden?
 
Gruß Thomas
Windows XP SP2, XProfan X2
22.08.2008  
 



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

1.426 Views

Untitledvor 0 min.
Uwe Lang20.06.2023
Member 361000501.12.2022
H.Brill08.02.2022
RudiB.06.11.2021
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