AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Selstart SelLength

Ein Thema von The Re@l · begonnen am 2. Jan 2003 · letzter Beitrag vom 10. Aug 2003
Antwort Antwort
Seite 2 von 2     12   
The Re@l

Registriert seit: 2. Jan 2003
77 Beiträge
 
#11
  Alt 2. Jan 2003, 19: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
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#12
  Alt 2. Jan 2003, 19: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
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
The Re@l

Registriert seit: 2. Jan 2003
77 Beiträge
 
#13
  Alt 2. Jan 2003, 20:34
Vielen Vielen Dank!

Hat super geklappt genauso wie ich mir das vorgestellt Hatte.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#14

Re: Selstart SelLength

  Alt 10. Aug 2003, 22:51
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?

  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Selstart SelLength

  Alt 10. Aug 2003, 23:40
Moin F.W.,

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.

RichEdit1.SelStart := SendMessage(RichEdit1.Handle,EM_LINEINDEX,RichEdit1.Lines.Count-1,0); Mit anderen Worten:
Du lässt einfach diese Zeile weg

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:00 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