Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Selstart SelLength (https://www.delphipraxis.net/2002-selstart-sellength.html)

The Re@l 2. Jan 2003 18:30

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

Mirilin 2. Jan 2003 18:58

hi, könntest es, wenn ich dich richtig verstanden habe, zum Beispiel so machen.

Code:
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;
Mirilin

The Re@l 2. Jan 2003 19:34

Vielen Vielen Dank!

Hat super geklappt genauso wie ich mir das vorgestellt Hatte.

F.W. 10. Aug 2003 21:51

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:
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;
Durch einen ColorDialog wird die Farbe von Label1 auf die gewünschte Farbe eingestellt.

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:

Christian Seehase 10. Aug 2003 22:40

Re: Selstart SelLength
 
Moin F.W.,

Zitat:

Zitat von F.W.
kann es damit zusammen hängen, dass die Zeile erst hinzugefügt wird, wenn die eigentliche Arbeit schon zu ende ist?

Das hängt damit zusammen, dass SelStart nicht die Zeilennummer, sondern die Zeichenposition (nullbasiert) enthalten muss.
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:
RichEdit1.SelStart := SendMessage(RichEdit1.Handle,EM_LINEINDEX,RichEdit1.Lines.Count-1,0);
Mit anderen Worten:
Du lässt einfach diese Zeile weg

Delphi-Quellcode:
MyLines := RichEdit1.Lines.Count; //Zeilen zählen
und tauscht die SelStart Zeile durch die oben genannte aus.

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.
Seite 2 von 2     12   

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