Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - RichEdit hat alles gleiche Farbe!


Andi1982KA - Di 19.11.02 22:16
Titel: RichEdit hat alles gleiche Farbe!
Hallo,
ich habe in einem Chat einen Record in dem Username, Farbe des Users und Sein eingegebener Text steht. All das wird in eine Datei geschrieben. Diese wird dann in ein RichEdit eingelesen.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
        FOR i := 1 TO DsxDatei.LastInput DO
          BEGIN
            EingLang := length( DeCode( DsxDatei.Inputs[ i ].User ) + ' (' + DeCode( DsxDatei.Inputs[ i ].Time ) + '): ' + DeCode( DsxDatei.Inputs[ i ].Comment ) );

            RichEdit1.Lines.Add( DeCode( DsxDatei.Inputs[ i ].User ) + ' (' + DeCode( DsxDatei.Inputs[ i ].Time ) + '): ' + DeCode( DsxDatei.Inputs[ i ].Comment ) );
            Richedit1.SelStart := Position;
            Richedit1.SelLength := EingLang;
            Faerben;
            Position := Position + EingLang + 2;
          END;


Die Procedure Faerben sieht so aus:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
PROCEDURE TForm1.Faerben;
BEGIN
     case DsxDatei.Inputs[ DsxDatei.LastInput ].Farbe of
        1: Richedit1.SelAttributes.Color:=clBlack;
        2: Richedit1.SelAttributes.Color:=clMaroon;
        3: Richedit1.SelAttributes.Color:=clGreen;
        4: Richedit1.SelAttributes.Color:=clOlive;
        5: Richedit1.SelAttributes.Color:=clNavy;
        6: Richedit1.SelAttributes.Color:=clPurple;
        7: Richedit1.SelAttributes.Color:=clTeal;
        8: Richedit1.SelAttributes.Color:=clSilver;
        9: Richedit1.SelAttributes.Color:=clGray;
        10: Richedit1.SelAttributes.Color:=clRed;
        11: Richedit1.SelAttributes.Color:=clLime;
        12: Richedit1.SelAttributes.Color:=clYellow;
        13: Richedit1.SelAttributes.Color:=clBlue;
        14: Richedit1.SelAttributes.Color:=clFuchsia;
        15: Richedit1.SelAttributes.Color:=clAqua;
        16: Richedit1.SelAttributes.Color:=clWhite;
      end;
END;


Aber wenn die For-Schleife zu Ende ist hat der gesamte Inhalt von RichEdit1 die Farbe vom letzten Datensatz, warum ist das so, normalerweise ist doch nur der neue Text Selektiert!

Bitte helft mir,

Grüße Andi


Michael Stenzel - Mi 20.11.02 02:03

Hallo!

In deiner Procedure Faerben benutzt Du

Quelltext
1:
DsxDatei.LastInput                    

als Index. Ich kann aber nicht feststellen, das der Index sich verändert!

Wenn der Index immer gleich bleibt, dann kann sich die Farbe nicht verändern!


Andi1982 - Mi 20.11.02 08:08

Oh ne,
Danke! Und an so einem blöden Fehler hock ich stundenlang rum und überlege!

Ich bin halt fest davon ausgegangen dass es daran liegt dass ich Lines Adde und dann färbe und dann wieder Adde.

Vielen Dank nochmal!