Deutsch
Forum

Escape an/aus hilft nicht für Zeile in Richedit

 

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?
\par
.....
\par
\par
\par
\par \\b Bankleitzahl: \\b0\tab 212223
\par

\par }


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.
 
Win10 16 GB RAM
05.01.2011  
 




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ß
 
XProfan X3, X4ß, Win 10.1
05.01.2011  
 




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....
 
Win10 16 GB RAM
05.01.2011  
 




ByteAttack
Geht das mit chr$(92) ?

Beispiel:
Re_Text$ = chr$(92)+"b Bankleitzahl: "+chr$(92)+"b0"+Chr$(9)+Trim$(GetText$(Te_Stamm_01&))+Chr$(10)
 
Website:  [...] 
Facebook:  [...] 
05.01.2011  
 




Christof
Neuß
Nein, leider nicht. Habe ich auch schon ausprobiert. Es landet trotzdem "\\" im Richedit.
 
Win10 16 GB RAM
05.01.2011  
 




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.
 
Win10 16 GB RAM
06.01.2011  
 




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...
 
Win10 16 GB RAM
06.01.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.741 Betrachtungen

Unbenanntvor 0 min.
Sven Bader19.11.2023
RudiB.28.08.2021
Matthias Arlt22.06.2020
Andreas Koch05.06.2019
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