![]() |
Bei einem Text in RichEdit bestimmte Wörter formatieren
Hi,
Wie kann man in einer RichEdit bestimmte Wörter z.B. Dick, kursiv oder andere Farbe machen ? MFG Äfan |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Ja, dazu ist das RichEdit da.
Hier ein Beispiel aus der Hilfe:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin with RichEdit1.SelAttributes do begin Color := clRed; Height := Height + 5; end; RichEdit1.Lines.Add('Diese Textzeile wird rot.'); end; procedure TForm1.Button2Click(Sender: TObject); begin RichEdit1.DefAttributes.Color := clBlue; RichEdit1.DefAttributes.Style := [fsBold, fsItalic]; end; Bzw.: Es gibt auch eine Demo zum RichEdit! Am besten da schauen. |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Gut, nur:
Ich will net das ein farbiger Text hinzugefügt wird sondern, wenn ich auf den Button klicke soll das Wort "Scheiße", das schon in der RichEdit drin ist rot und Fett formatiert werde. |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
|
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Habt ihr kein beispiel ? :cry:
|
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Hi!
Hast du mal in der Hilfe gesucht? Pos gibt dir die Stelle zurück an der das Wort steht. Die Länge kennst du auch, wo ist dann das Problem? Weitere Stichwörter ![]() ![]() ![]() Ciao Frederic |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Ja ich schaue immer erst in der hilfe, nur ich kann mir da keinen Reim drauf bilden. Mit einem Beispiel würde ichs besser verstehen :roll:
|
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
oh mann :roll:
Delphi-Quellcode:
kapiert?
while pos('Scheisse')>0 do
begin RichEdit1.SelStart:=pos('Scheisse'); RichEdit1.SelLength:=8; RichEdit1.SelAttrbutes.Color:=clred; RichEdit1.SelAttrbutes.Style:=[saBold]; end; |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
@glkgereon
Das wird zur Endlos-Schleife wenn das Wort auch nur einmal im Text vorkommt. |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Zitat:
Zitat:
Zitat:
MFG |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Hi!
Dann schau mal, was Pos für Paramter erwartet --> F1 Ciao Frederic |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Zitat:
RichEdit1.SelStart:=pos('Scheisse',NochIrgendWas); PS: Das mit der Endlosschleife is tatsächlich, dass programm wurde paar mal komplett blockiert. und die attribute werden auch nicht gesetzt. |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Hi!
Da steht doch alles deutlich: Zitat:
Delphi-Quellcode:
und dann das von oben
if Pos(gesuchtes_wort,text) > 0 then
Ciao Frederic |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Überleg doch mal... woher soll pos() wissen, in welchem Text nach "scheisse" gesucht werden soll :zwinker:
Induktiver Ansatz: Pos('Welt', 'Hallo, Welt!') liefert 8. |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Gut das weiß ich inzwischen auch. Also das prog läuft, nur wenn ich auf denn button klicke hängt sich das prog auf. Hier mal der Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin while pos('Scheisse',RichEdit1.Text) > 0 do begin RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text); RichEdit1.SelLength:=8; RichEdit1.SelAttributes.Color := clBlue; RichEdit1.SelAttributes.Style := [fsBold, fsItalic]; end; end; |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
weil das ne endlosschleife gibt, weil der das erste Scheisse immer wieder findet. Wenn ersetzt wurde erst weiter hinten wieder anfangen.
|
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Hi!
Es wurde doch schon geschrieben, dass es mit while schief geht. Deswegen musst du es z.B. mit if machen (siehe meinen Post von oben) Ciao Frederic |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
mann ich bin heut müde....also, nächster versuch:
Delphi-Quellcode:
oder?
procedure TForm1.Button1Click(Sender: TObject);
var temp: integer; begin while PosEx('Scheisse',RichEdit1.Text,temp) > 0 do begin RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text); RichEdit1.SelLength:=8; RichEdit1.SelAttributes.Color := clBlue; RichEdit1.SelAttributes.Style := [fsBold, fsItalic]; temp:=RichEdit1.SelStart; end; end; |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
PosEx ist Undefinierter Bezeichner.
Also ich habe es jetzt so gemacht:
Delphi-Quellcode:
Nur etwas blöd ist, das nicht Scheisse komplett blau wird sondern Scheisse und immer nur das erste Scheisse blau gemacht wird, die anderen werden ignoriert.
procedure TForm1.Button1Click(Sender: TObject);
begin if pos('Scheisse',RichEdit1.Text) > 0 then RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text); RichEdit1.SelLength:=8; RichEdit1.SelAttributes.Color := clBlue; RichEdit1.SelAttributes.Style := [fsBold]; end; |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Hi!
Ja, das mit mehr als einmal geht nur PosEx. Und wenn du mal in der OH gesucht hättest, dann hättest du gesehen, dass in der Unit StrUtils deklariert ist. Er macht doch das Wort ganz blau. Was gefällt dir da nicht. Ciao Frederic |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Zitat:
Zitat:
|
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Hi!
Aha, dann hatte ich das S übersehen. Dann mach eben beim Selstart noch ein -1 dazu. Und was PosEx angeht: Dann binde StrUtils bei den Uses ein und dann gibt es auch keinen undefinierten Bezeichner mehr. Ciao Frederic |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Probiers mal so:
Delphi-Quellcode:
if pos('Scheisse',RichEdit1.Text) > 0 then
RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text)-1; //-1 nicht vergessen ;-) RichEdit1.SelLength:=8; RichEdit1.SelAttributes.Color := clBlue; RichEdit1.SelAttributes.Style := [fsBold]; |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
nein, so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var temp: integer; begin while PosEx('Scheisse',RichEdit1.Text,temp) > 0 do begin RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text)-1; RichEdit1.SelLength:=8; RichEdit1.SelAttributes.Color := clBlue; RichEdit1.SelAttributes.Style := [fsBold, fsItalic]; temp:=RichEdit1.SelStart; end; end; |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
Zwei beiträge höher !
Ok Also:
Delphi-Quellcode:
Das programm startet, doch das Wort Scheisse wird nicht verändert.
procedure TForm1.Button1Click(Sender: TObject);
var temp: integer; begin while PosEx('Scheisse',RichEdit1.Text,temp) > 0 do begin RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text); RichEdit1.SelLength:=8; RichEdit1.SelAttributes.Color := clBlue; RichEdit1.SelAttributes.Style := [fsBold, fsItalic]; temp:=RichEdit1.SelStart; end; end;
Delphi-Quellcode:
So gehts, aber nur das erste Scheisse.
if pos('Scheisse',RichEdit1.Text) > 0 then
RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text)-1; //-1 nicht vergessen ;-) RichEdit1.SelLength:=8; RichEdit1.SelAttributes.Color := clBlue; RichEdit1.SelAttributes.Style := [fsBold]; |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
:wall: :wall: :wall:
temp:=0... lokale variablen müssen initialisiert werden :( |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
@glkgereon: So passiert garnichts ! Bzw. es hängt sich auf :?
|
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
so, getestet und funzt!!!
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var temp: integer; begin temp:=0; RichEdit1.SelStart:=0; while PosEx('Scheisse',RichEdit1.Text,temp) > 0 do begin RichEdit1.SelStart:=PosEx('Scheisse',RichEdit1.Text,temp)-1; RichEdit1.SelLength:=8; RichEdit1.SelAttributes.Color := clBlue; RichEdit1.SelAttributes.Style := [fsBold, fsItalic]; temp:=RichEdit1.SelStart+RichEdit1.SelLength; end; end; |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
JAAAAA *in die luft springt* Danke. Boaaa war das ne schwere geburt :-D
thx Äfan Ich bin Anfänger, bitte schlagt mich nicht :nerd: :freak: |
Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
nee, tu ich nicht, ich bin noch dabei mich selkber zu prügeln ;)
bei den fehlern :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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-2025 by Thomas Breitkreuz