| |
|
|
Christof Neuß | Hallo,
jetzt knabbere ich schon wieder eine Ewigkeit an etwas (vermutlich) ganz leichtem herum. Folgendes: Ich habe ein Richedit mit formatiertem Text. Alles prima. Dort möchte ich jetzt eine neue Zeile an-/einfügen. Funktioniert auch. Diese Zeile bzw. einen Teil davon, möchte ich fett drucken. Dazu brauche ich die Sequenzen \b und \b0 zum ein-/ausschalten. Alle Versuche, einen passenden String zur Verfügung zu stellen sind bisher gescheitert.
Set("Escape",0)
Re_Text$ = "\b Bankleitzahl: \b0"+Chr$(9)+Trim$(GetText$(Te_Stamm_01&))+Chr$(10)
SendMessage(Re_AGK_01&, 177, $FFFF, $FFFF)' EM_SETSEL
SendMessage(Re_AGK_01&, 194, 0, Addr(Re_Text$))' EM_REPLACESEL
RTF("SaveRTF",Re_AGK_01&,"Test.rtf")
RTFPrn(Re_AGK_01&)
Set("Escape",1)
Bei dieser Variante erhalte ich in einer Messagebox eine richtige Anzeige mit einfachen Backslashes. Also: \b Bankleitzahl: \b0... Drucke ich das Richedit, wird das auch genauso gedruckt Kein Wechsel zum Fettdruck.
Das Richeditelement muss hier eigentlich nicht gespeichert werden. Damit will ich nur die Einträge prüfen. Gehe also anschließend hin und öffne die RTF-Datei mit dem Editor. Und was sehe ich da?
Wer erklärt mir das? Und was muss ich tun, um auf "BOLD" umzuschalten? Wieder mal ein gaaaaanz großes DANKESCHÖN für jede Unterstützung. |
|
|
| |
|
|
|
Jörg Sellmeyer | Wenn Dueinen Backslash anzeigen willst, mußt Du ihn doppelt schreiben:
"\\" ergibt als Ausgabe "\" "\\b" müßte also als Ausgabe "\b" ergeben. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 05.01.2011 ▲ |
|
|
|
|
Peter Max Müller | Versuch mal Wordpad zu öffnen. Schreibe darin deinen fetten Text. Abspeichern als rtf. Diese Datei nun mit dem Editor öffnen und du siehst was da alles für Steuerzeichen gebraucht werden.
Gruß |
|
|
| |
|
|
|
Christof Neuß | Sorry Leute. Ich habe ja nicht zu wenig Backslashes sondern zu viele. Es kommen IMMER 2, auch wenn ich Set("Escape",0) mache. Ich habe die RTF-Datei ja schon mit dem Editor geöffnet. Ich weiß, dass ich \b und \b0 brauche (s.o.). Das "komische" ist ja, dass ich den String mit einer Messagebox richtig anzeigen kann. Bei der Message an Re_AGK_01& erscheint dann dort aber die falsche Zeile.
Langsam verzweifle ich. Hab' schon gedacht, dass vielleicht RTF("SaveRTF"... der Übeltäter ist. Ist er nicht! Wenn ich das Richedit anzeige, erscheint die eingefügte Zeile. Aber eben nicht richtig. Grrrrr.... |
|
|
| |
|
|
|
ByteAttack | Geht das mit chr$(92) ?
Beispiel:
|
|
|
| |
|
|
|
Christof Neuß | Nein, leider nicht. Habe ich auch schon ausprobiert. Es landet trotzdem "\\" im Richedit. |
|
|
| |
|
|
|
Dieter Zornow | Um etwas fett in einem Richedit darzustellen gibt es doch genügend Quellcodes. Der ist glaube ich von Pascal
window 50,50-500,400
settruecolor 1
usefont "ms sans serif",15,7,0,0,0
setdialogfont 1
declare Edit&,dll&,Test1%,Test2%,Test3%
'dim rtf#,60
dll&=usedll("riched32.dll")
Edit&=control("RichEdit","",$54315004,180,10,300,200,%hwnd,100,%hinstance,$200)
settext Edit&,"Test: LaberLaberLaber"
'sendmessage(Edit&,1087,0,1)'----------EM_HIDESELECTION => none
proc rtf-SetFormat'-----------------------------------------------------------------SetFormat
parameters d%
declare a%,rtf#
dim rtf#,60
long rtf#,0=60
long rtf#,4=31
sendmessage(Edit&,$043A,1,rtf#)'-EM_GETCHARFORMAT
a%=byte(rtf#,8)
if testbit(a%,d%)
byte rtf#,8=setbit(a%,d%,0)
long rtf#,4=setbit(a%,d%,1)
else
byte rtf#,8=setbit(a%,d%,1)
long rtf#,4=setbit(a%,d%,1)
endif
sendmessage(Edit&,1092,1,rtf#)'-EM_SETCHARFORMAT
dispose rtf#
setfocus(Edit&)
endproc'------------------------------------------------------------------------ ------------
sendmessage(Edit&,$00B1,0,11)'markieren
rtf-SetFormat 0
sendmessage(Edit&,$00B1,0,0)'demarkieren
while 1
waitinput
endwhile
destroywindow(Edit&)
case dll&:freedll dll&
oder verstehe ich etwas falsch ? |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 05.01.2011 ▲ |
|
|
|
|
Christof Neuß | Ja, das funktioniert auch. Aber die Vorgehensweise ist ja dann eine andere. Ich habe schon Text im Richedit, muss dann wissen, was ich wo markieren und anschl. fett setzen muss. Wäre eine Möglichkeit.
Ich wollte es einfacher haben und schon beim Einfügen des Textes die Formatierung mitgeben. In den RTF-Dateien ist das ja nichts anderes als eine Kombination von "\" und entsprechenden Zeichen. Ich krieg's halt einfach nur nicht hin, diesen Backslash EINZELN in das Richedit zu integrieren. Der Clou ist, wenn ich Escape auf 0 setze und dann \\ angebe. Dann tauchen im Richedit sogar 4 (!) Backslashes auf. |
|
|
| |
|
|
|
Dieter Zornow | Du müsstest dann wohl den Quelltext eines Richedits direkt bearbeiten, denn beim Einfügen wird ja Text eingefügt und keine Steuerzeichen. Steuerzeichen werden durch die Formatmessages dann in den Quelltext eingefügt. Schau dir mal den Quellcode eines Richedits an und versuche es mit Blockwrite
So sieht Text aus wo das mittlere Test fett ist mit 2 Zeilen. Du müsstest also deinen Text mit Blockwrite immer hinter den letzten schreiben also das \par Test\b Test\b0 Test aber vor dem }
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 ;}} {\colortbl ;\red0\green0\blue160;} \viewkind4\uc1\pard\cf1\f0\fs24 Test\b Test\b0 Test \par Test\b Test\b0 Test \par \par } |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 06.01.2011 ▲ |
|
|
|
|
RGH | Hallo, also XProfan scheint hier nicht schuld zu sein.
Es sieht so aus, als ob mit den genutzten Messages eben nur ein Ersetzen von Text ohne Formatierungen möglich ist.Und damit dann Dein "\b" auch im RichEdit so angezeigt wird, sorgt halt das RichEdit selbst dafür, dass der Backslash "maskiert" wird (also mit einem weiteren Backslash ergänzt wird) und somit auch "korrekt" angezeigt wird. Das RichEdit will also exakt das anzeigen, was Du ihm übermittelst.
Mein Vorschlag: Den Text vor dem Einlesen in das RichEdit verändern.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 06.01.2011 ▲ |
|
|
|
|
Christof Neuß | Hallo Dieter, hallo Roland,
ich wusste, dass ich es mit Hilfe aus dem Forum hinkriege. DANKE!
@Roland: Ja, dass scheint wohl so zu sein. Ist ja auch logisch, dass das Richedit hier meinen Text wiedergeben möchte. Habe halt immer versucht, das Ding auszutricksen. Geht aber nicht. Hab' mal wieder an der falschen Stelle rumgebastelt.
@Dieter: Der Quelltext hat geholfen. Ich schalte jetzt einfach Fettdruck ein, schiebe dann meinen Text durch die Leitung und schalte dann Fettdruck wieder aus. Der Umweg über die Datei ist hier nicht sinnvoll. Die Texte liegen anschl. in einer Access-Datenbank. Das Richedit wird nur angezeigt bzw. gedruckt. Nicht gespeichert. Wenn ich in einer Zeile Fett- und Normaldruck habe, muss ich jetzt halt mindestens zweimal Messages mit Text verschicken. Ich dachte, ich könnte das durch Einbinden der Formatierungszeichen in einem Rutsch erledigen.
Mit den Messages und mit den Bereichsvariablen und mit so einigen anderen "Spezialitäten" habe ich noch meine Probleme. Aber es macht riesigen Spaß, mit XProfan zu arbeiten. Ich werde dranbleiben... |
|
|
| |
|
|