Forum | | | | - 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. |
| | | | |
| | | | - 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 |
| | | | | |
| | | 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) |
| | | | |
| | Thomas Freier | He, sieht bei dem ersten Test schon gut aus. Danke für die Hilfe. Werde heute mal ausloten wo die Grenzen sind. |
| | | | |
| | 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 |
| | | | |
| | 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. |
| | | | |
| | 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 |
| | | | |
| | 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. |
| | | | |
| | | 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] |
| | | | |
| | 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 |
| | | | |
| | 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. |
| | | | |
| | 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 |
| | | | |
| | 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. |
| | | | |
| | 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 |
| | | | |
|
AntwortenThemenoptionen | 10.365 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |