Deutsch
Forum

Drei RTF ausdrucken

 
- Seite 1 -



Thomas
Freier
Alle Eigenversuche schlugen fehl. Hat einer einen Vorschlag, wie zwei RTFs fester Größe und eine Dritte beliebig lang ausgedruckt werden können.
Analog eines Beispiel von Uwe 'Pascal' wird hier nur eine Seite gedruckt. Aber wie geht's weiter?
KompilierenMarkierenSeparieren
 $H Windows.ph
 $H RichEdit.ph
 $U RTFHandling.pcu = R_'RTF-PCU einbinden
 $U objects.pcu = R_

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

window 0,0-%maxX,800
var rtf_dll& =  R_INTITFORCREATERTF()'DLL laden mit PCU
var _RichEdit& = R_CREATERICHEDIT(%hwnd,"",70,0,350,100,9000)' Richedit erstellen mit PCU
RTF("LoadRTF",_RichEdit&,"Bootsplatz.rtf")
var __RichEdit& = R_CREATERICHEDIT(%hwnd,"",480,0,280,100,9000)' Richedit erstellen mit PCU
RTF("LoadRTF",__RichEdit&,"Label 105x42.rtf")
var RichEdit& = R_CREATERICHEDIT(%hwnd,"",0,102,800,400,9000)' Richedit erstellen mit PCU
var rtf_hdc& = R_PREPAREFORLINEBREAK(RichEdit&)' Device Context erzeugen mit PCU
R_Init_object(RichEdit&)'Zum Bildempfang vorbereiten
RTF("LoadRTF",RichEdit&,"Bilder-Album.rtf")
startprint "*xx"
DrawRichText2 _RichEdit&,80,10,400,150
DrawRichText2 __RichEdit&,500,10,250,150
DrawRichText2 RichEdit&,0,150,800,14900
endprint
waitkey
R_DEINITRTF(RichEdit&,rtf_hdc&,rtf_dll&)'RTF-Aufräumen
R_DEINITRTF(_RichEdit&,rtf_hdc&,rtf_dll&)
R_DEINITRTF(__RichEdit&,rtf_hdc&,rtf_dll&)
R_DeInit_object()'RTF-Aufräumen
End

Rest in der zip.

394 kB
Hochgeladen:12.10.2010
Ladeanzahl89
Herunterladen
 
Gruß Thomas
Windows XP SP2, XProfan X2
12.10.2010  
 



 
- Seite 2 -


« Dieser Beitrag wurde als Lösung gekennzeichnet. »

- Seite 2 -



Uwe
''Pascal''
Niemeier
Hi Thomas!

Also ist "RTF in RTF per OLE" für's Ausdrucken schon mal OK?
Und es scheitert daran, daß die eingebetteten RTFs (die zusammen ja so 'ne Art Briefkopf bilden) nicht bearbeitet werden können, wenn kein Word vorhanden ist?

Habe das mit dem Drucken mal getestet; allerdings nur im MS Image Writer, weil ich momentan keinen "echten" Drucker zur Verfügung habe. Sieht exakt so aus wie per Wordpad ausgedruckt. Sollte also brauchbar sein. Siehe Anhang.

Mit dem Bearbeiten ohne Word: Mal sehen...

Noch ein Wort zu dem Code am Anfang dieses Threads: Der wurde ursprünglich entwickelt, um ein Bild während des Druckens in ein Dokument ohne OLE-Unterstützung einzublenden. Darum finden sich darin verschiedene APIs zur Größenanpassung, die zum Drucken reiner Dokumente (mit OLE) nicht nötig sind (hoffe ich zumindest).

SeeYou
Pascal

346 kB
Version:1
Kurzbeschreibung: Drucken RTF
Hochgeladen:15.10.2010
Ladeanzahl71
Herunterladen
 
15.10.2010  
 



Hab was hinbekommen, druckt bei mir korrekt auf der 1. Seite 3 RTFs und auf weiteren Seiten nur 1 RTF:

(hab dispose fr# in der Funktion vergessen, bitte nachtragen)

941 kB
Hochgeladen:13.10.2010
Ladeanzahl5
Herunterladen
 
13.10.2010  
 




Thomas
Freier
He, sieht bei dem ersten Test schon gut aus. Danke für die Hilfe. Werde heute mal ausloten wo die Grenzen sind.
 
Gruß Thomas
Windows XP SP2, XProfan X2
14.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!


Hintergrund ist, wenn MS Word auf dem System ist, kann mann weitere RTFs in die Haupt-RTF einbetten und sie auch bearbeiten und dann auch alles drucken


Das geht auch unter Profan mit OLE-Unterstützung von Dieter oder mir! Ist vielleicht noch einfacher als das Übereinanderlegen mehrerer Dateien im Drucker-DC?

Falls nicht, wirst du wahrscheinlich zwei Druckroutinen brauchen; eine für die 1. Seite mit Overlays und eine mit Schleife für die Folgeseiten ohne Overlays. Es muß eben nur gewährleistet sein. das Routine 2 da anfängt zu drucken, wo Routine 1 aufgehört hat (eben der Wechsel von Seite 1 zu 2).

SeeYou
Pascal
 
14.10.2010  
 




Thomas
Freier
He Pascal,

wir reden hier natürlich von XProfan und deiner, bzw. Dieters, OLE-Objekten.
Wenn MS-Office nicht vorhanden ist, wollte ich auf eine Scoll-area die Haupt-RTF und zwei weitere auf die Haupt-RTF als Subproc-Element legen.
Im Moment bin ich noch auf der Suche, wie erfahre ich, welches Objekt in der RTF der Anwender angeklickt hat. Habe noch nichts gefunden und auch keine Idee.
 
Gruß Thomas
Windows XP SP2, XProfan X2
14.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Also ist "RTF in RTF per OLE" für's Ausdrucken schon mal OK?
Und es scheitert daran, daß die eingebetteten RTFs (die zusammen ja so 'ne Art Briefkopf bilden) nicht bearbeitet werden können, wenn kein Word vorhanden ist?

Habe das mit dem Drucken mal getestet; allerdings nur im MS Image Writer, weil ich momentan keinen "echten" Drucker zur Verfügung habe. Sieht exakt so aus wie per Wordpad ausgedruckt. Sollte also brauchbar sein. Siehe Anhang.

Mit dem Bearbeiten ohne Word: Mal sehen...

Noch ein Wort zu dem Code am Anfang dieses Threads: Der wurde ursprünglich entwickelt, um ein Bild während des Druckens in ein Dokument ohne OLE-Unterstützung einzublenden. Darum finden sich darin verschiedene APIs zur Größenanpassung, die zum Drucken reiner Dokumente (mit OLE) nicht nötig sind (hoffe ich zumindest).

SeeYou
Pascal

346 kB
Version:1
Kurzbeschreibung: Drucken RTF
Hochgeladen:15.10.2010
Ladeanzahl71
Herunterladen
 
15.10.2010  
 




Thomas
Freier
He Pascal,


Mit dem Bearbeiten ohne Word: Mal sehen...


wenn das mit Xprofan möglich wäre, ist das der Hammer.
Habe mal ein Minibeispiel zusammengestellt. Hier bleibt natürlich nur die Möglichkeit alles (Ziel & Lage) in eine INI zu packen um die drei erstellten und gespeicherten RTFs wieder neu zu laden. Ist natürlich nicht für eine Weitergabe geeignet.
KompilierenMarkierenSeparieren
 $H Include/Windows.ph
 $H Include/Messages.ph
 $H Include/commctrl.ph
 $H Include/RichEdit.ph
' NUR mit der RTF.PCU ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ für Bilder und OLE-Objekte aktivieren
 $U Include/RTFHANDLING.PCU=R_
 $U Include/OBJECTS.PCU=R_
var pcu_dll& =  R_INTITFORCREATERTF()'DLL laden mit PCU
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
declare __cfObj&,__cf0&,__cf1&,__cf2&,__cf3&,__cf4&,__cf5&,__cf6&,__cf7&,__cf8&,__cf9&,__cfS_10&,__cf11&,__cf12&,__cf13&,__cf14&,__cf15&,__cf16&,__cf17&,__cf18&,__cf19&,__cf20&,__cf21&,__cf22&,__cf23&,__cf24&,__cf25&,__cf26&,__cf27&,__cfS_28&,__cfS_29&,__cfS_30&,__cfS_31&,__cfS_32&,__cfS_33&,__cfS_34&,__cfS_35&,__cfS_36&,__cfS_37&,__cfS_38&,__cfS_39&,__cfS_40&,__cfS_41&,__cf42&,__cfS_43&,__cfS_44&,__cf45&,__cf46&
var __cfMode&=0
var __cfdll1&=USEDLL("WINMM.DLL")
def __cf1(2) !"KERNEL32","GetProcAddress"
def __cf2(1) !"KERNEL32","GetModuleHandleA"
__cf0&=0
__cf1&=__cf1(__cf2("KERNEL32"),"GlobalAlloc")
__cf2&=__cf1(__cf2("KERNEL32"),"GlobalFree")
__cf3&=__cf1(__cf2("KERNEL32"),"GlobalSize")
__cf4&=0
__cf5&=__cf1(__cf2("WINMM"),"timeGetTime")
__cf6&=__cf1(__cf2("KERNEL32"),"RtlMoveMemory")
__cf7&=__cf1(__cf2("KERNEL32"),"ExitProcess")
__cf8&=0 : CASE __cfMode& : __cf8&=__cf3("__xeEOP")
__cf9&=__cf1(__cf2("USER32"),"MessageBoxA")
__cfS_10&=__cfStaticS("")
__cf11&=__cf1(__cf2("KERNEL32"),"Sleep")
__cf12&=0
__cf13&=__cf1(__cf2("USER32"),"IsWindow")
__cf14&=__cf1(__cf2("NTDLL"),"RtlRandom")
__cf15&=call(__cf1&,64,4)
long __cf15&,0=&getTickCount
__cf16&=0 : CASE __cfMode& : __cf16&=__cf3("__xeIMP")
__cf17&=0
__cf18&=0
__cf19&=0
__cf20&=0
__cf21&=%hInstance
__cf22&=__cf1(__cf2("USER32"),"GetDesktopWindow")
__cf23&=__cf1(__cf2("USER32"),"GetWindowRect")
__cf24&=__cf1(__cf2("USER32"),"GetClientRect")
__cf25&=__cf1(__cf2("USER32"),"ClientToScreen")
__cf26&=__cf1(__cf2("USER32"),"GetCursorPos")
__cf27&=__cf1(__cf2("USER32"),"GetAsyncKeyState")
__cfS_28&=__cfStaticS("d. MMMM yyyy")
__cfS_29&=__cfStaticS("dddd, 'd'e'r' d'.' MMMM yyyy")
__cfS_30&=__cfStaticS("yyyyMMdd")
__cfS_31&=__cfStaticS("SunMonTueWedThuFriSat")
__cfS_32&=__cfStaticS("JanFebMarAprMayJunJulAugSepOctNovDec")
__cfS_33&=__cfStaticS("HH':'mm':'ss ")
__cfS_34&=__cfStaticS(", ")
__cfS_35&=__cfStaticS(" ")
__cfS_36&=__cfStaticS("+")
__cfS_37&=__cfStaticS("0")
__cfS_38&=__cfStaticS("00")
__cfS_39&=__cfStaticS("HH':'mm")
__cfS_40&=__cfStaticS("ss")
__cfS_41&=__cfStaticS(".")
__cf42&=__cf1(__cf2("USER32"),"SendMessageA")
__cfS_43&=__cfStaticS("LISTBOX")
__cfS_44&=__cfStaticS("DIALOG")
__cf45&=__cf1(__cf2("gdi32.dll"),"SetMapMode")
__cf46&=__cf1(__cf2("gdi32.dll"),"GetDeviceCaps")

proc __cfEOP

    parameters exitcode&
    FREEDLL __cfdll1&
    case %pcount=1 : end exitcode&
    end

endproc

proc __cfStaticS

    parameters s$
    var a&=__cfArgS(s$)
    long a&,-8=-1
    return a&

endproc

proc __cfArgS

    parameters s$
    s$=s$+" "
    var a&=addr(s$)
    var l&=long(a&,-4)-1
    var h&=call(__cf1&,64,l&+13)
    case l& : call(__cf6&,h&+8,a&,l&)
    long h&,0=1
    long h&,4=l&
    return h&+8

endproc

proc PRINTRTFS

    PARAMETERS WND1&,WND2&,WND3&
    call(__cf45&,&pdc,1)
    VAR IWIDTHTWIPS&=INT((call(__cf46&,&pdc,8)/call(__cf46&,&pdc,88)))*1440
    VAR IHEIGHTTWIPS&=INT((call(__cf46&,&pdc,10)/call(__cf46&,&pdc,90)))*1440
    DECLARE FR#
    DIM FR#,48
    LONG FR#,0=&PDC,&PDC,call(__cf46&,&pdc,112),call(__cf46&,&pdc,113),IWIDTHTWIPS&,IHEIGHTTWIPS&
    DECLARE FR2#
    DIM FR2#,48
    LONG FR2#,0=&PDC,&PDC,call(__cf46&,&pdc,112)+IWIDTHTWIPS&*(d1x!/720),call(__cf46&,&pdc,113),IWIDTHTWIPS&*0.5,IHEIGHTTWIPS&*0.1
    DECLARE FR3#
    DIM FR3#,48
    LONG FR3#,0=&PDC,&PDC,call(__cf46&,&pdc,112)+IWIDTHTWIPS&*(d2x!/720),call(__cf46&,&pdc,113),IWIDTHTWIPS&,IHEIGHTTWIPS&*0.1
    SENDMESSAGE(WND1&,$00B1,0,-1)
    SENDMESSAGE(WND1&,$0400 + 52,0,ADDR(FR#)+40)
    VAR CPMIN&=0
    VAR PG&=0

    WHILE 1

        INC PG&

        IF PG&=2

            LONG FR#,12=call(__cf46&,&pdc,113)

        ENDIF

        CPMIN&=SENDMESSAGE(WND1&,$0400 + 57,1,ADDR(FR#))

        IF PG&=1

            SENDMESSAGE(WND2&,$00B1,0,-1)
            SENDMESSAGE(WND2&,$0400 + 52,0,ADDR(FR2#)+40)
            SENDMESSAGE(WND3&,$00B1,0,-1)
            SENDMESSAGE(WND3&,$0400 + 52,0,ADDR(FR3#)+40)
            SENDMESSAGE(WND2&,$0400 + 57,1,ADDR(FR2#))
            SENDMESSAGE(WND3&,$0400 + 57,1,ADDR(FR3#))

        ENDIF

        IF CPMIN&>=LONG(FR#,44)

            BREAK

        ENDIF

        LONG FR#,40=CPMIN&
        NEXTPAGE
        call(__cf45&,&pdc,1)

    ENDWHILE

    SENDMESSAGE(WND1&,$0400 + 57,0,0)
    SENDMESSAGE(WND2&,$0400 + 57,0,0)
    SENDMESSAGE(WND3&,$0400 + 57,0,0)

endproc

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
declare a#
dim a#,8'--POINT-Struktur
def Redraw(1) ~RedrawWindow(&(1),0,0,~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_ERASE)
def SetWndPos(3) ~SetWindowPos(&(1),0,%(2),%(3),0,0,~SWP_NOSIZE | ~SWP_NOZORDER)
window 50,50-900,700
settruecolor 1
usefont "ms sans serif",15,7,0,0,0
setdialogfont 1
usermessages 16
var font&=CreateFont("Verdana",14,0,0,0,0)
declare rtf&,dll&
dll&=usedll("riched20.dll")
rtf&=control("RichEdit20A",mkstr$("noch ne Zeile\n",50),$54301044,80,10,780,560,%hwnd,1234,0,$200)
sendmessage(rtf&,~EM_HIDESELECTION,0,1)
var d1x!=120
declare Dummy1&,Dummy2&
Dummy1&=control("RichEdit20A",mkstr$("Titel\n",2),$54301044,d1x!,0,450,100,rtf&,1234,0,$200)
sendmessage(dummy1&,~EM_HIDESELECTION,0,1)
var d2x!=600
Dummy2&=control("RichEdit20A",mkstr$("Adresse\n",4),$54301044,d2x!,0,150,100,rtf&,1234,0,$200)
sendmessage(dummy2&,~EM_HIDESELECTION,0,1)
var Print&=CreateButton(%hWnd,"Drucken",700,600,80,20)
SetFont print&,font&
' NUR mit der RTF.PCU ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var rtf_hdc& = R_PREPAREFORLINEBREAK(rtf&)' Device Context erzeugen mit PCU
R_Init_object(rtf&)'Zum Bildempfang vorbereiten
MCls 100,100 ,RGB(0,0,255)
StartPaint -1
UseFont "Arial",16,0,0,0,0
DrawText 20,50,"mein Logo"
Endpaint
var bmp1&=Create("hPic",0,"&MEMBMP" )
SavePic "Test.jpg", bmp1&, 100
R_GotoStart(rtf&)
R_RTFLOADPICTURE(rtf&, "Test.jpg")
SendString(rtf&,"^{ENTER}")
SendString(rtf&,"^{ENTER}")
SendString(rtf&,"^{ENTER}")
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

while 1

    sendmessage( rtf&,(~WM_USER+221),0,a# )
    SetWndPos( Dummy1&,d1x!,0-long(a#,4) )
    SetWndPos( Dummy2&,d2x!,0-long(a#,4) )
    Redraw(rtf&)
    locate 0,0
    waitinput
    case %umessage=16:break
    case GetFocus(dummy2&):print "3.rtf"
    case GetFocus(dummy1&):print "2.rtf"
    case GetFocus(rtf&): print "1.rtf"

    If GetFocus(Print&)

        STARTPRINT "*xx"
        PRINTRTFS(RTF&,Dummy1&,Dummy2&)
        ENDPRINT

    EndIf

endwhile

' NUR mit der RTF.PCU ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
R_DEINITRTF(rtf&,RTF_HDC&,PCU_DLL&)
R_DEINIT_OBJECT()
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DeleteObject font&
destroywindow(rtf&)
destroywindow(dummy1&)
destroywindow(dummy2&)
destroywindow(%hwnd)
case dll&:freedll dll&

Bin mir auch noch nicht sicher, ob der Faktor (d1x! / 720) endgültig ist. Vielleicht kann iF dazu etwas sagen.

 
Gruß Thomas
Windows XP SP2, XProfan X2
16.10.2010  
 



720 habe ich imho nicht geschrieben - habe mit 0.5 gerechnet um jedenfalls die Mitte zu bestimmen. ^^

[offtopic]Die ENH eher gedacht wie die PRC-Dateien oder OBJ-Dateien für optimale Maschinenlesbarkeit statt damit zu wörkeln - ist ja sonst ein bisl wie mit Notepad ne Exe bearbeiten. ^^[/offtopic]
 
16.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Äh... hast du dir meine Demo mal angeschaut? Und auch die beigefügte RTF mal mit Word oder Wordpad geöffnet? Da kommt ja ein ganz anderes Verfahren zum Einsatz.
Oder zeigt dein Beispiel nur, wie das Ganze im Prinzip aussehen soll?

Und wie steht's mit dem Ausdrucken über meine Demo? Wie gesagt, ich konnte es nicht allzu gründlich testen.

Was das mit dem Bearbeiten von eingebettetem RTF betrifft:
Wenn das klappt, wird's wohl so laufen, daß der eingebettete Text irgendwie extrahiert wird und dann z.B in einem eigenen Dialogfenster bearbeitet werden kann. Besondere Formatierungsfunktionen mußt du bei Bedarf dann natürlich selbst einbauen.

So ganz einfach ist das allerdings nicht; kann also etwas dauern.

SeeYou
Pascal
 
16.10.2010  
 




Thomas
Freier
He Pascal,


Und wie steht's mit dem Ausdrucken über meine Demo? Wie gesagt, ich konnte es nicht allzu gründlich testen.


erste Test ohne Problem mit dem Dokumentenende wie bei iF.
Gehört aber im Prinzip zu : RTF und Ausdrucken


Äh... hast du dir meine Demo mal angeschaut? Und auch die beigefügte RTF mal mit Word oder Wordpad geöffnet? Da kommt ja ein ganz anderes Verfahren zum Einsatz.
Oder zeigt dein Beispiel nur, wie das Ganze im Prinzip aussehen soll?


Ja, mein Beispiel ist nur Prinzip.
Ob ein Text-Objekt ohne Word bzw. OpenOffice realisierbar ist, willst du tesen?
Das sich ein externer Editor oder an der Stelle ein Edit-Feld nach Doppelklick öffnet ist sicher egal. Entscheident ist das Einbetten in die Haupt-RTF, damit es mindestens in Word, WordPad und XProfan-RTF auch angezeigt wird und bei erneutem Abspeichern über Word oder WordPad nicht verloren geht.
 
Gruß Thomas
Windows XP SP2, XProfan X2
16.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Ich mach's kurz:

1. Das Zieldokument mit WordPad (!) öffnen
2. "Einfügen/Objekt" wählen
3. Option "Neu erstellen" wählen bzw. gewählt lassen
4. Aus der Liste möglicher Typen "WordPad-Dokument" wählen
5. Es erscheint im WordPad-Fenster ein Feld, in den man Text eingeben oder per Clipboard einfügen kann

Das Ergebnis ist ein Dokument mit einem "echten" RTF-Objekt.
Andernfalls (wenn MS Word auf dem Rechner installiert ist und man "Einfügen aus Datei" wählt) kriegt man in Wirklichkeit ein Word (DOC) -Objekt.
Darum kam ich bei meinen Versuchen an den RTF-Quelltext aus einem solchen Objekt nicht dran. Weil keiner da war...

Zur Verwendung in einem Profan-Edit mit OLE-Unterstützung:

Bei Doppelklick auf ein solches Objekt wird WordPad (statt Word) zum Bearbeiten geöffnet.

Ausdrucken des fertigen Dokumentes per FormatRange-Message scheint zu klappen.

Beim Versuch, ein Objekt in WordPad zu verschieben, wird es zu normalem Text. Ist bei Profan nicht der Fall.

Das WordPad-Fenster bei Doppelklick ist so groß wie das Objekt im Edit und umgekehrt.

Änderungen beim Bearbeiten Im WordPad-Fenster werden sofort im Edit angezeigt. Ausnahme: Änderung der Fenstergröße. Die wird erst auf's Objekt angewendet, wenn der Inhalt geändert wird.

Bei Änderung der Größe des Objektes im Edit wird der Inhalt zermatscht. Abhilfe: Zum Bearbeiten doppelklicken und WordPad gleich wieder schließen. (Oder Undo ausführen)

Bitte mal ausprobieren. Damit könnte sich dein Problem erledigt haben

PS: Wie man ein echtes RTF-Objekt unter Profan erzeugt, weiß ich noch nicht. Wird aber auch irgendwie gehen...

SeeYou
Pascal
 
23.10.2010  
 




Thomas
Freier
He Pascal,
find ich schon toll, dass du dich in dieser Richtung versucht hast. Meine Ergebnisse sind genau so wie du beschreibst. Jeder geeignete Editor (Word, OpenOffice) erstellt sein eigenes Textobject, das sie nicht einmal gegenseitig optimal anzeigen oder gar editieren können.

Aber wenn du noch Zeit übrig hast, wie ist es mit einem Beispiel über zum Erstellen einer Tabelle wie mit https://www.sybrex.com/products/gui/ezeepdf/ ?
Da würde aber eine Tabelle mit und ohne Raster reichen. Die wird von allen RTF-Editoren gleich gut dargestellt.

4 kB
Hochgeladen:23.10.2010
Ladeanzahl190
Herunterladen
 
Gruß Thomas
Windows XP SP2, XProfan X2
23.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Thomas!

Tabellen werden vom RTF-Control ja nur indirekt unterstützt. Wüßte auf die Schnelle nicht, wie man die erzeugen könnte. Aber wenn du schon 'ne passende Datei hast, wozu dann neu anlegen? Nimm die doch als Vorlage für neue Dokumente. Möglicherweise  läßt sich noch was finden, um die Tabellen beim Bearbeiten vor unbeabsichtigtem Löschen zu schützen.

PS: Wenn du noch höhere Ansprüche an die Möglichkeiten deines Dokumentes stellst, solltest du doch mal HTML in Erwägung ziehen

SeeYou
Pascal
 
29.10.2010  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

10.365 Betrachtungen

Unbenanntvor 0 min.
Sven Bader18.11.2023
Alibre03.01.2020
kustg14.05.2019
GDL04.01.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie