AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi RichEdit: Problem mit Textfarbe und Markierungsfarbe
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit: Problem mit Textfarbe und Markierungsfarbe

Ein Thema von Helmi · begonnen am 18. Mai 2009 · letzter Beitrag vom 19. Mai 2009
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

RichEdit: Problem mit Textfarbe und Markierungsfarbe

  Alt 18. Mai 2009, 17:05
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:
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;
Ich hab folgendes schon versucht, davor und danach zu definieren, aber ohne Erfolg.

Delphi-Quellcode:
RichEdit_SPL.Font.Color := clBlack;
RichEdit_SPL.SelAttributes.Color := clBlack;
Weiss jemand was mein Problem sein könnte?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe

  Alt 18. Mai 2009, 17:49
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
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe

  Alt 18. Mai 2009, 17:57
Hallo,

geladen wird ganz einfach:

Delphi-Quellcode:
  //Datei-Namen auf Variable speichern
  S := OpenDialog.FileName;

  //SPL-Programm in RichEdit laden
  RichEdit_SPL.Lines.LoadFromFile(S);
[Edit] Ich hab mal vor dem Laden folgendes ausprobiert:

Delphi-Quellcode:
  RichEdit_SPL.SelStart := 0;
  RichEdit_SPL.SelLength := length(RichEdit_SPL.Text);
  RichEdit_SPL.SelAttributes.Color := clBlack;
  RichEdit_SPL.SelAttributes.Style := [];
  RichEdit_SPL.SelStart := 0;
Aber das bringt leider auch nichts...
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe

  Alt 18. Mai 2009, 20:21
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:
http://www.swissdelphicenter.ch/de/showcode.php?id=843

Vielleicht entdeckst du darin noch irgendwas, was dafür
verwantwortlich ist.

Gruß
Jürgen
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#5

Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe

  Alt 18. Mai 2009, 23:02
Hallo,

liegt der Text im RTF-Format vor?

setz mal vor LoadFromFile die Zeile:
RichEdit1.Clear;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe

  Alt 19. Mai 2009, 11:13
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
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

Re: RichEdit: Problem mit Textfarbe und Markierungsfarbe

  Alt 19. Mai 2009, 15:17
Hallo,

ich hab mir jetzt mal den Text im RTF-Format ausgeben lassen.

Vor dem ersten Laden bekomm ich dieses Format ausgegeben:

Zitat:
---------------------------
SPL Light
---------------------------
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl {\f0\fnil Courier New;}}
\viewkind4\uc1\pard\f0\fs20
\par }

---------------------------
OK
---------------------------

Vor dem zweiten Laden bekomm ich folgendes Format.

Zitat:
---------------------------
SPL Light
---------------------------
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl {\f0\fnil Courier New;}}
{\colortbl ;\red255\green0\blue0;}
\viewkind4\uc1\pard\cf1\f0\fs20
\par }

---------------------------
OK
---------------------------
(Alle Zitate wurden aus ShowMessage-Texte rauskopiert)

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:
  RichEdit_SPL.DefAttributes.Color := clBlack; und jetzt funktionierts
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
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