Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi RichEdit:Bestimmte Wörter färben (https://www.delphipraxis.net/88370-richedit-bestimmte-woerter-faerben.html)

Merchator 14. Mär 2007 19:58


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:
!SETZE_HAUS 10 20 304 53
!SETZE_HAUS 35 63 634 64
Das !SETZE_HAUS steht immer am anfang der zeile. Die Zahlen dahinter sollen "verschont" bleiben.
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^^

glkgereon 14. Mär 2007 20:39

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 :???:


SynEdit Download
UniHighlighter Download

Falls du zu dem Fragen hast...
Ich hab den schon mal benutzt. Zwar nicht so exzessiv, aber dafür sollte es reichen ;-)

Matze 14. Mär 2007 21:06

Re: RichEdit:Bestimmte Wörter färben
 
Hallo

Zitat:

Zitat von glkgereon
Ich würde dir ein SynEdit mit dem UniSynHighlighter vorschlagen

Dafür ist das aber leicht übertrieben.

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;

Merchator 15. Mär 2007 13:10

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

Merchator 15. Mär 2007 14:40

Re: RichEdit:Bestimmte Wörter färben
 
Zitat:

Zitat von glkgereon
Ich würde dir ein SynEdit mit dem UniSynHighlighter vorschlagen

ist einfach zu bedienen und ein eigenes syntax-highlighting ist ein sch*arbeit :???:


SynEdit Download
UniHighlighter Download

Falls du zu dem Fragen hast...
Ich hab den schon mal benutzt. Zwar nicht so exzessiv, aber dafür sollte es reichen ;-)

Jetzt habe ich bei mir SynEdit installier, um mal zu gucken...
Aber wie benutze ich ihn? Da benötige ich dann doch bitte deine Hilfe ;)

sirius 15. Mär 2007 15:06

Re: RichEdit:Bestimmte Wörter färben
 
Zitat:

Zitat von Merchator
Wie kriege ich es hin, das (zB) !SETZTE_HAUS rot und !SETZE_STRAßE zb blau ist?
Und kann ich diese dick erscheinen lassen?

Du müsstest die Colortable um deine gwünschte Farbe ergänzen und im Text dann entsprechend \cf2 o.entspr. einsetzen.
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.

glkgereon 15. Mär 2007 15:42

Re: RichEdit:Bestimmte Wörter färben
 
Zitat:

Zitat von Merchator
Zitat:

Zitat von glkgereon
Ich würde dir ein SynEdit mit dem UniSynHighlighter vorschlagen

ist einfach zu bedienen und ein eigenes syntax-highlighting ist ein sch*arbeit :???:


SynEdit Download
UniHighlighter Download

Falls du zu dem Fragen hast...
Ich hab den schon mal benutzt. Zwar nicht so exzessiv, aber dafür sollte es reichen ;-)

Jetzt habe ich bei mir SynEdit installier, um mal zu gucken...
Aber wie benutze ich ihn? Da benötige ich dann doch bitte deine Hilfe ;)

Also einfach ein SynEdit auf die Form, einen UniSynHighlighter dazu und den beim SynEdit als Highlighte setzen.
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;

Merchator 15. Mär 2007 16:57

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

glkgereon 15. Mär 2007 17:04

Re: RichEdit:Bestimmte Wörter färben
 
Zitat:

Zitat von Merchator
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

Keine Ahnung, hab ich nicht ausprobiert *g*

Merchator 15. Mär 2007 17:22

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 02:41 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz