![]() |
RichEdit:Bestimmte Wörter färben
Hallo,
ich bins mal wieder ;) Ihr werdet mich in Zukunft öfter hier "fragen" sehen^^ Nach langem, und leider Erfolglosem Suchen habe ich mich entschieden, hier zu fragen, da ja sicher eine gute Antwort kommen wird. Und ich hbae auch gelernt, immer ein neues Thema aufzumachen :D Nun zu meiner Frage: Ich will in einen RichEdit1 einen Text laden, dabei soll jedes "!SETZE_HAUS" farbig markiert werden, sagen wir mal rot! Beispiel:
Delphi-Quellcode:
Das !SETZE_HAUS steht immer am anfang der zeile. Die Zahlen dahinter sollen "verschont" bleiben.
!SETZE_HAUS 10 20 304 53
!SETZE_HAUS 35 63 634 64 Falls fragen aufkommen, es dient als kleiner "Texteditor" für ein Spiel :D Danke im Vorraus für die Antworten. Wenn ihr weitere informationen bracuht, fragt mich ruhig^^ |
Re: RichEdit:Bestimmte Wörter färben
Ich würde dir ein SynEdit mit dem UniSynHighlighter vorschlagen
ist einfach zu bedienen und ein eigenes syntax-highlighting ist ein sch*arbeit :???: ![]() ![]() Falls du zu dem Fragen hast... Ich hab den schon mal benutzt. Zwar nicht so exzessiv, aber dafür sollte es reichen ;-) |
Re: RichEdit:Bestimmte Wörter färben
Hallo
Zitat:
Frag bitte nicht, was der folgende Code nun genau bedeutet. :mrgreen: Es hat eine Weile gebraucht, bis ich diesen zusammen hatte, aber bei mir funktioniert es so. Diese seltsamen Strings enthalten die Farbeigenschaften und ähnliches im rtf-Format:
Delphi-Quellcode:
procedure TForm1.HighlightMyText;
begin // replace line breaks with rtf ones RichEdit1.Text := StringReplace(RichEdit1.Text, #13#10, '\par', [rfReplaceAll]); // replace '!SETZE_HAUS' with a highlighted rtf version RichEdit1.Text := StringReplace(RichEdit1.Text, '!SETZE_HAUS', '\cf1 !SETZE_HAUS\cf0 ', [rfReplaceAll]); // here you can highlight other strings, too // add rtf specifications RichEdit1.Text := '{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\colortbl ;\red255\green0\blue0;}' + RichEdit1.Text + '}'; end; |
Re: RichEdit:Bestimmte Wörter färben
Hey, danke, funst perfekt!
Hab da aber noch Fragen: Wie kriege ich es hin, das (zB) !SETZTE_HAUS rot und !SETZE_STRAßE zb blau ist? Und kann ich diese dick erscheinen lassen? Wie dem auch sei, trotzdem danke für die Hilfe! PS.: Wenn ich die procedure unter RichEdit1KeyUp setze, dann springt das Eingabezeichen während der eingabe immer wieder zum anfang zurück. ich möchte aber, das WÄRHEND des schreibenst der text geändert wird... OnChange funst auch nicht, dann kommt eine fehlermeldung?? Vielen Dank :D |
Re: RichEdit:Bestimmte Wörter färben
Zitat:
Aber wie benutze ich ihn? Da benötige ich dann doch bitte deine Hilfe ;) |
Re: RichEdit:Bestimmte Wörter färben
Zitat:
Aber bei einem RichEdit kann man das auch immer mit SelStart und Sellength und dann Farbe ändern machen. Was du sonst noch so willst. Also verändern während des Tippens, dazu musst du dich mal in Multithreadanwendeungen einlesen. Sowas wird ganz gerne in einem separaten Thread gemacht. Ansonsten einfahc die Cursorpoition merken und hinterher wieder setzen. |
Re: RichEdit:Bestimmte Wörter färben
Zitat:
Dann im FormCreate oder so:
Delphi-Quellcode:
var SynSymbGrp: TSynSymbolGroup;
begin with FUniHighlighter do begin MainRules.Reset; //Erstmal leeren SynSymbGrp:=TSynSymbolGroup.Create('',TSynHighlighterAttributes.Create('dummy')); SynSymbGrp.KeywordsList.Add('!SETZE_HAUS'); SynSymbGrp.Attribs.Foreground:=clRed; //rot MainRules.AddSymbolGroup(SynSymbGrp); SynSymbGrp:=TSynSymbolGroup.Create('',TSynHighlighterAttributes.Create('dummy')); SynSymbGrp.KeywordsList.Add('!SETZE_STRAßE'); SynSymbGrp.Attribs.Foreground:=clBlue; //blau MainRules.AddSymbolGroup(SynSymbGrp); end; |
Re: RichEdit:Bestimmte Wörter färben
Ja, das ist natürlich eine Möglichkeit.
Aber ist es nicht einfacher, eine selbst erstellte *.hgl-Datei zu importieren? Ich habe UniEdit.exe verwendet und "neue Schrift" gemacht, kann man die nicht irgendwie importieren? Sonst wäre das Tool ja umsonst, oder? :D |
Re: RichEdit:Bestimmte Wörter färben
Zitat:
|
Re: RichEdit:Bestimmte Wörter färben
Grr,
ich finde im gesamten I-Net keine Lösung. Vllt weiß ein anderer hier aus diesem Forum, wie das funktioniert. Ich wäre für die Hilfe sehr dankbar! :spin: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz