AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Richedit Farbe ?

Ein Thema von Vader · begonnen am 23. Feb 2006 · letzter Beitrag vom 26. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2   
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#1

Richedit Farbe ?

  Alt 23. Feb 2006, 17:40
hallo,

ich möchte das die ersten 2 lines ( zeilen ) bei einen richedit automatisch eine rote schriftfarbe haben,
wenn ich dann einen 4 zeiligen test reinkopiere in der laufzeit des programmes !

ich hab die hilfe durchstöpert ohne erfolg, ich habe immer nur den definerten text mit
der definierten farbe gefunden,ich kopierer dann immer anderen text rein,kann mir jemand helfen ?

mfg vader
  Mit Zitat antworten Zitat
emteg

Registriert seit: 16. Jun 2005
71 Beiträge
 
Delphi 2009 Architect
 
#2

Re: Richedit Farbe ?

  Alt 23. Feb 2006, 18:12
ich hab jetzt nicht ganz genau verstanden was du meinst. Soweit ich das sehe, willst du, wenn ein text in das rich edit geschrieben wird, dass die ersten beiden zeilen des neuen textes rot werden.

Generell geht das so:
Delphi-Quellcode:
RichEdit.SelStart:=StartWert;
RichEdit.SelLength:=LängeDesZuFärbendenBereichs;
RichEdit.SelAttributes.Color:=clRed;
Um das SelStart rauszubekommen, musst du folgendes wissen: das ist die länge vom alten Text im RichEdit (Length(RichEdit.Text)) + für jede Zeile 2. Warum? Weil am ende jeder zeile ein #10#13 (=zeilenumbruch in windows) steht, was bei Length(RichEdit.Text) nicht mitgezählt wird.

Um das SelLength rauszufinden muss du ungefähr so vorgehen: du nimmst die alte anzahl der zeilen und vergleichst sie mit der neuen anzahl. Davon ziehst du 2 ab und du weißt, in welcher line dein neuer text anfängt. SelLength ist dann die länge von dieser zeile.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Richedit Farbe ?

  Alt 23. Feb 2006, 18:13
Na ungefähr so:
Delphi-Quellcode:
procedure TForm.RicheditChange(Sender: TObject);
var
  cp: TPoint;
begin
  cp := Richedit.CaretPos;

  Richedit.selstart := 0;
  Richedit.SelLength :=
      Length(Richedit.Lines[0]) + 2 + // + 2 wegen dem #13#10 hinter einer Zeile
      Length(Richedit.Lines[1]) + 2 + // -"-
      Length(Richedit.Lines[2]) + 2; // -"-
  Richedit.SelAttributes.color := clRed;

  Richedit.selstart := 0;
  Richedit.CaretPos := cp;
  Richedit.SelAttributes.color := Richedit.Font.Color; // Zurücksetzen der Farbe
end;
Da es aber besser wäre die Sache in Paint-Event zu machen ist es besser auch hier eine eigene Klasse abzuleiten...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Richedit Farbe ?

  Alt 23. Feb 2006, 19:13
jawohl, genau das habe ich gesucht,
herzlichen dank !
mfg vader
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#5

Re: Richedit Farbe ?

  Alt 23. Feb 2006, 19:14
@turboPASCAL: Bei mir läuft das nicht, bei mir werden alle Zeilen rot markiert.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Richedit Farbe ?

  Alt 23. Feb 2006, 19:33
Dann hast du was falsch übernommen ?

Das funktioniert nur beim einfügen von Text, bei der Eingabe von Text ist diese Methode nicht geeignet, da es ein wenig flackern wird...

Um die Farbe nach den drei Zeilen wieder zurückzusetzen habe ich oben den Code etwas hinzugefügt.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

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

Re: Richedit Farbe ?

  Alt 23. Feb 2006, 21:47
Hallo,
Zitat von emteg:
...Um das SelStart rauszubekommen, musst du folgendes wissen: das ist die länge vom alten Text im RichEdit (Length(RichEdit.Text)) + für jede Zeile 2. Warum? Weil am ende jeder zeile ein #10#13 (=zeilenumbruch in windows) steht, was bei Length(RichEdit.Text) nicht mitgezählt wird.
das ist falsch, das Gegenteil ist richtig:
Code:
Length(RichEdit1.Text)    = incl. #13#10
Length(Richedit1.Lines[0]) = #13#10 ist nicht enthalten
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Richedit Farbe ?

  Alt 24. Feb 2006, 17:59
hallo turboPASCAL

das mit den ersten zwei zeilen funktioniert, jetzt wollte ich das die zeile 3 und 4 rot wird,
beim reinkopieren, aber das geht nicht, ich hab es so probiert

Delphi-Quellcode:
procedure TForm.RicheditChange(Sender: TObject);
var
  cp: TPoint;
begin
  cp := Richedit.CaretPos;

  Richedit.selstart := 3;
  Richedit.SelLength :=
      Length(Richedit.Lines[3]) + 2 + // + 2 wegen dem #13#10 hinter einer Zeile
      Length(Richedit.Lines[4]) + 2 + // -"-
      Length(Richedit.Lines[5]) + 2; // -"-
  Richedit.SelAttributes.color := clRed;

  Richedit.selstart := 3;
  Richedit.CaretPos := cp;
  
end;
wie muß ich das ändern ?
mfg vader
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Richedit Farbe ?

  Alt 24. Feb 2006, 18:43
Zitat von Vader:
Code:
procedure TForm.RicheditChange(Sender: TObject);
var
  cp: TPoint;
begin
  cp := Richedit.CaretPos;

  Richedit.selstart := 3;
  [color=#ff001f]Richedit.SelLength[/color] :=
      [color=#ff001f]Length(Richedit.Lines[3]) + 2 + [/color]// + 2 wegen dem #13#10 hinter einer Zeile
      [color=#ff001f]Length(Richedit.Lines[4]) + 2 +[/color] //            -"- 
      [color=#ff001f]Length(Richedit.Lines[5]) + 2[/color]; //            -"- 
  Richedit.SelAttributes.color := clRed;

  Richedit.selstart := 3;
  Richedit.CaretPos := cp;
 
end;
???

Richedit.selstart := 3; Anfang der Selection beginnt bei dem drittem Zeichen und nicht Zeile im RE (Richedit) und dann die Zeichenanzahl aus Lines 3,4,5 ?

Alles klar ? Ist sicher ein Denkfehler, Selstart ist der Begin von dem ab plus N Zeichen die ausgewählt werden sollen. Schau dir es nochmal in der OH an...

Code:
Selstart = Lines1+Lines2; // Begin der Selection nach dem letztem Zeichen in Zeile 2
Sellength = length(line3) // Anzahl der Zeichn in Line 3
SelAttributes = Rot
Selstart = ...
...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Richedit Farbe ?

  Alt 24. Feb 2006, 19:18
hallo turboPASCAL,

alles klar, war ein denkfehler, danke nocheinmal
mfg vader
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:10 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