![]() |
RichEdit: Problem mit Textfarbe und Markierungsfarbe
Hallo,
ich bin seit gestern am verzweifeln (gibts eigentlich einen DP-Psychiater?) Ich habe ein RichEdit in dem ein Text geladen wird. Die RichEdit hat im OI voreingestellt bei Font.Color = clBlack. Mittels folgender Procedure suche ich nach bestimmten Vorraussetzungen in den einzelnen RichEdit-Zeilen und mache dann diese Teil des Textes farbig. Soweit so gut - das funktioniert alles bestens. Wenn ich nun einen neuen Text in das RichEdit lade, so hat der komplette Text nicht mehr die Textfarbe schwarz sondern die die in der Procedure zuvor genutzt wurde.
Delphi-Quellcode:
Ich hab folgendes schon versucht, davor und danach zu definieren, aber ohne Erfolg.
procedure TMainForm.RunAndColor(RichEdit: TRichEdit; Farbe: TColor);
var i : Integer; Pos_Such : Integer; RichEdit_Zeile: Integer; S_RichEdit : String; S_Kommentar : String; begin with RichEdit do begin for i := 0 to Pred(lines.Count) do begin //Line-Text auslesen S_RichEdit := lines.Strings[i]; //Position des Semikolons rausfinden Pos_Such := Pos(const_Semikolon, S_RichEdit); //wenn kein Semikolon vorhanden ist, dann neuer Schleifendurchgang If Pos_Such = 0 then continue; //RichEdit-Zeile auslesen RichEdit_Zeile := Perform(EM_LINEINDEX , i, 0); //Kommentar-Text aus Zeile rauskopieren S_Kommentar := Copy(S_RichEdit, Pred(Pos_Such), length(S_RichEdit)); //Zeile + Position = Markierungsstart SelStart := RichEdit_Zeile + Pred(Pos_Such); //Markierungslänge SelLength := Length(S_Kommentar); //Farbe setzen SelAttributes.Color := Farbe; SelLength := 0; end; end; end;
Delphi-Quellcode:
Weiss jemand was mein Problem sein könnte?
RichEdit_SPL.Font.Color := clBlack;
RichEdit_SPL.SelAttributes.Color := clBlack; |
Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe
hallo Helmi,
leider zeigst Du nicht wie Du den neuen Text lädst. Da das RichEdit aber eine Microsoft-Komponete ist, vermute ich, daß von der letzten Attributzuweisung noch ein Rest übrig geblieben ist ("die letzte Absatzmarke") daher wird die letzte Formatierung übernommen. Wenn ich die Hilfe richtig interpretiere, reicht es das erste Zeichen zu selektieren und die gewünschten Attribute zu setzen. Das sollte es gewesen sein. Gruß K-H |
Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe
Hallo,
geladen wird ganz einfach:
Delphi-Quellcode:
[Edit] Ich hab mal vor dem Laden folgendes ausprobiert:
//Datei-Namen auf Variable speichern
S := OpenDialog.FileName; //SPL-Programm in RichEdit laden RichEdit_SPL.Lines.LoadFromFile(S);
Delphi-Quellcode:
Aber das bringt leider auch nichts...
RichEdit_SPL.SelStart := 0;
RichEdit_SPL.SelLength := length(RichEdit_SPL.Text); RichEdit_SPL.SelAttributes.Color := clBlack; RichEdit_SPL.SelAttributes.Style := []; RichEdit_SPL.SelStart := 0; |
Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe
Hallo Helmi,
das ist aber ein merkwürdiges Verhalten... Du könntest ja mal den reinen Formatierungs-Code auslesen, hier gibt es so eine Funktion dafür: ![]() Vielleicht entdeckst du darin noch irgendwas, was dafür verwantwortlich ist. Gruß Jürgen |
Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe
Hallo,
liegt der Text im RTF-Format vor? setz mal vor LoadFromFile die Zeile:
Delphi-Quellcode:
RichEdit1.Clear;
|
Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe
Hallo Helmi,
ich hab einmal versucht, das Verhalten was Du beschrieben hast, nachzustellen, war aber nicht so erfolgreich. Text der über RichEdit.Text geladen wurde war schwarz und Text der über .Lines.LoadfromFile geladen wurde (RTF-Datei) hatte genau die in der Datei gespeicherten Attribute. Gruß K-H |
Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe
Hallo,
ich hab mir jetzt mal den Text im RTF-Format ausgeben lassen. Vor dem ersten Laden bekomm ich dieses Format ausgegeben: Zitat:
Vor dem zweiten Laden bekomm ich folgendes Format. Zitat:
Dort sieht man ganz klar, dass die Farbe Rot aktiv ist. Aber nur warum? Ein RichEdit.Clear bringt nichts, hatte ich zuvor schon drin. [Edit] Ich setz jetzt vor dem Laden folgende Farbe:
Delphi-Quellcode:
und jetzt funktionierts
RichEdit_SPL.DefAttributes.Color := clBlack;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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