![]() |
Hi ich muß noch mal stören
Code:
richedit1.Text := edit3.text + edit1.Text + edit5.Text;
So das Problem das ich es mit Selstart und Sellength nich geht da ich nich bedacht hatte das die einträge unterschiedliche längen haben. Wie könnte mann es noch machen das im Richedit1.text der eintrag vom edit3 Blau vom edit1 meinetwegen Rot und edit5 Gelb dargestellt wird. Sorry ich noch blutiger anfänger und in dem Buch was ich besitze steht nichts darüber. Ich würde mich freuen wenn mir einer Helfen könnte |
hi, könntest es, wenn ich dich richtig verstanden habe, zum Beispiel so machen.
Code:
Mirilin
procedure TMainForm.ButtonCClick(Sender: TObject);
var l1,l2,l3 : Integer; s1,s2,s3 : String; const c1 : TColor = clRed; c2 : TColor = clGreen; c3 : TColor = clBlue; begin RichEdit.Lines.Clear; s1 := Edit1.Text; s2 := Edit2.Text; s3 := Edit3.Text; l1 := length(s1); l2 := length(s2); l3 := length(s3); RichEdit.Text := s1+s2+s3; RichEdit.SelStart := 0; RichEdit.SelLength := l1; RichEdit.SelAttributes.Color := c1; RichEdit.SelStart := l1; RichEdit.SelLength := l2; RichEdit.SelAttributes.Color := c2; RichEdit.SelStart := l1+l2; RichEdit.SelLength := l3; RichEdit.SelAttributes.Color := c3; end; |
Vielen Vielen Dank!
Hat super geklappt genauso wie ich mir das vorgestellt Hatte. |
Re: Selstart SelLength
Hallo Leute!
Ich habe auch das Problem auch. Ich schreibe momentan ein Chatprogramm und da wird durch einen Druck auf >Enter< eine Zeile zu RichEdit hinzugefügt und dann soll sie eingefärbt werden. Mein Quelltext sieht so aus:
Delphi-Quellcode:
Durch einen ColorDialog wird die Farbe von Label1 auf die gewünschte Farbe eingestellt.
var
MyLines: Integer; begin with RichEdit1 do MyLines := RichEdit1.Lines.Count; //Zeilen zählen RichEdit1.Lines.Add(Edit1.Text); //Edit1.Text hinzufügen RichEdit1.SelStart := Mylines; //Start der Markierung festlegen RichEdit1.SelLength := Length(Edit1.Text); //Länge festlegen RichEdit1.SelAttributes.Color := Label1.Font.Color; //Farbe ändern Edit1.Clear; end; Ich habe das mal durchgechecked(im Quelltexteditor den Punkt vor die Linie gesetzt), nachdem ich das Projekt nach der letzten Zeile Quelltext weiter laufen lassen habe, wird die Zeile hinzugefügt, kann es damit zusammen hängen, dass die Zeile erst hinzugefügt wird, wenn die eigentliche Arbeit schon zu ende ist? :freak: |
Re: Selstart SelLength
Moin F.W.,
Zitat:
Dazu könntest Du jetzt, vor dem hinzufügen der neuen Zeile, in einer Schleife die ganzen Zeilenlängen zusammenaddieren (nicht zu vergessen +2 je Zeile, da die nicht sichtbaren Zeilenendezeichen #13#10 hierbei mitzählen). Eine andere Variante SelStart zu ermitteln wäre die Message EM_LINEINDEX. Diese muss allerdings nach dem hinzufügen der neuen Zeile an das RichEdit gesendet werden.
Delphi-Quellcode:
Mit anderen Worten:
RichEdit1.SelStart := SendMessage(RichEdit1.Handle,EM_LINEINDEX,RichEdit1.Lines.Count-1,0);
Du lässt einfach diese Zeile weg
Delphi-Quellcode:
und tauscht die SelStart Zeile durch die oben genannte aus.
MyLines := RichEdit1.Lines.Count; //Zeilen zählen
Vielleicht solltest Du SelLength am Schluss auch noch wieder auf 0 setzen, damit die Markierung verschwindet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 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