RichEdit Formatierung (fett,kursiv,usw)
-
hi zusammen.
ich code grade an nen kleinen texteditor....
dieser hat natürlich auch ToolButtons zum fett/kursiv/unterstrichen machen...
nach längeren googlen weiß ich nu schonma wie ich denn markierten text so formatieren kann:void __fastcall TForm1::ToolButton_FettClick(TObject *Sender) { Richedit::CHARFORMAT2 cfm; SendMessage( RichEdit1->Handle, EM_GETCHARFORMAT, ( WPARAM)SCF_SELECTION, (LPARAM)&cfm ); cfm.cbSize = sizeof(cfm); cfm.dwMask = CFM_PROTECTED | CFM_BOLD; cfm.dwEffects = CFE_BOLD; SendMessage( RichEdit1->Handle, EM_SETCHARFORMAT, ( WPARAM)SCF_SELECTION, (LPARAM)&cfm ); }soa, gut und schön....nur wie bekomm ich ihn nu soweit dass der text, wenn er schon fett ist, wieder normal dargestellt wird?
hab mit vielen if else abfragen rumprobiert..aber nich wirklich zum ergebnis gekommen.ok, es gäbe auchnoch ne andere möglichkeit den fett zu machen...
RichEdit1->SelAttributes->Style = TFontStyles() << fsBold;bzw. um fett wieder weg zu machen
RichEdit1->SelAttributes->Style = TFontStyles() >> fsBold;nur auch hier verzweifel ich an der if else abfrage

danke schonmal im voraus
Over
-
TForm, SendMessage, RichEdit,...?
Wo gibts denn im C++-Standard solche SachenIm RICHTIGEN Sub-Forum könnte man sogar mit Hilfe rechnen.
-
Oh, stimmt, sorry :o
bin noch ganz neu hier und so...
dann bitte ins VCL forum verschieben....kommt nicht wieder vor. ^^
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL (C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
dank tipp aus nem anderen forum bin ich nu so weit:
void __fastcall TForm1::ToolButton_FettClick(TObject *Sender) { Richedit::CHARFORMAT2 cfm; SendMessage( RichEdit1->Handle, EM_GETCHARFORMAT, ( WPARAM)SCF_SELECTION, (LPARAM)&cfm ); cfm.cbSize = sizeof(cfm); cfm.dwMask = CFM_PROTECTED | CFM_BOLD; if( (cfm.dwEffects & CFE_BOLD) == CFE_BOLD) cfm.dwEffects = cfm.dwEffects & ~CFM_BOLD; else cfm.dwEffects = cfm.dwEffects & CFM_BOLD; SendMessage( RichEdit1->Handle, EM_SETCHARFORMAT, ( WPARAM)SCF_SELECTION, (LPARAM)&cfm ); }nu is nurnoch das problem dass er IMMER in den if block springt und nie in den else block, heißt also er nimmt immer an dass (cfm.dwEffects & CFE_BOLD) == CFE_BOLD
...
wie kann ich das nu beheben?
-
Beim BCB sind Beispiele dabei.
Guck dir mal das an.
\Programme\Borland\CBuilder5\Examples\Apps\RichEdit