Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Eine Zeile (nicht Absatz) in RichEdit hervorheben
Popov - Mo 14.07.03 14:33
Titel: Eine Zeile (nicht Absatz) in RichEdit hervorheben
Für ein Programm will ich in meinem RichEdit-Fenster eine bestimmte Zeile markieren. Das sollte in der Art von Delphi und z.B. Haltepunkt sein. Dabei ist die Zeile (bei mir) rot hinterlegt. Ok, sowas kompliziertes muß es nicht sein, auch will ich nicht eine andere Komponente als RichEdit nutzen, aber in irgendeiner Form will ich eine bestimmte Zeile hervorheben. Das es da Möglichkeiten gibt ist mir klar, nur wollte ich mal fragen welche ihr kennt, die nicht so viel Zeit benötigen. Sonderliche Erfahrungen hab ich mit RichEdit bis jetzt nicht gehabt, d.h die besonderen Funktionen hab ich nie angewendet. Für den Fall, daß einer eine feine Funktion hat, würde ich mich freuen. Ansonsten natürlich über jeden Tip wie ich sowas schnell hinkriege. Ich fange schon mal an zu progen. Falls einer mir mit Tip oder Code aushelfen kann, bitte melden.
StefanH - Mo 14.07.03 15:14
Hallo!
Wenn du das meinst(hab jetzt einfach die Farbe ändern lassen, kannst ja noch Ändern :wink:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure HighLight(zeile: integer; farbe: TColor; edit: TRichEdit); var Start, Ende, OldSelStart:integer; begin zeile:= zeile-1; OldSelStart:= edit.SelStart; Start:= Pos(edit.Lines[zeile],edit.text) -1;Ende:= Length(edit.Lines[zeile]); edit.SelStart:= Start; edit.SelLength:=Ende; edit.SelAttributes.Color:= farbe; edit.SelLength:=0; edit.SelStart:= OldSelStart; edit.SetFocus;
end; |
Und Aufgerufen wirds mit:
Delphi-Quelltext
1:
| HighLight(2,clBlue,RichEdit1); |
Färbt die zweite Zeile im
RichEdit RichEdit1 blau.
Hoffe konte helfen
Stefan
Popov - Mo 14.07.03 15:20
Ok, hat sich erledigt. Hab mir selbst was geschrieben. Wem was besseres einfällt, der kann sich melden. Wen's interresiert, hier der Code um eine Zeile zu markieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure RichEdit_SelectLine(RichEdit: TRichEdit; LineNr: Word); begin with Richedit do begin if (LineNr = 0) or (LineNr > Lines.Count) then begin SetFocus; Exit; end; LineNr := LineNr - 1;
SelStart := Perform(EM_LINEINDEX, LineNr, 0); SelLength := Length(Lines[LineNr]); SetFocus; end; end;
procedure TForm1.Button3Click(Sender: TObject); begin RichEdit_SelectLine(RichEdit1, 1); end; |
Popov - Mo 14.07.03 15:27
Hallo StefanH, auch nicht schlecht. Hab es gerade ausprobiert. Mal gucken was ich nehme. Auf jeden Fall Danke erstmal.
StefanH - Di 15.07.03 21:16
Mir fällt grad ein, dass wenn es zwei gleiche Zeilen gibt, dass dann nur die immer die erste Gefärbt wird :oops:
bayou - Di 14.06.05 21:10
Genau das habe ich seit Tagen gesucht.
Vielen Dank
Ich hab da aber noch ein Problem. Habe erst angefangen mit Delphi zu arbeiten. Wie kann ich denn zur Laufzeit eine (Lines) erstellen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| begin if k.line[1] <> '' then begin RichEdit_SelectLine(m, 1); m.Lines[0]:=k.line[1]; end; if k.line[2] <> '' then begin RichEdit_SelectLine(m, 2); m.Lines[1]:=k.line[2]; end; if k.line[3] <> '' then begin RichEdit_SelectLine(m, 3); m.Lines[2]:=k.line[3]; end; |
usw.
Wenn ich den Text nicht vorher mit der Anzahl der Lines gespeichert habe, wird nur die erste Zeile angezeigt.
Gehört nicht hier her, ich schreibs mal in einen neuen Beitrag. :oops:
Moderiert von
Tino: Delphi-Tags hinzugefügt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!