Autor Beitrag
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mo 14.07.03 14:33 
Für ein Programm will ich in meinem RichEdit-Fenster eine bestimmte Zeile markieren. Das sollte in der Art von Delphi und z.B. Haltepunkt sein. Dabei ist die Zeile (bei mir) rot hinterlegt. Ok, sowas kompliziertes muß es nicht sein, auch will ich nicht eine andere Komponente als RichEdit nutzen, aber in irgendeiner Form will ich eine bestimmte Zeile hervorheben. Das es da Möglichkeiten gibt ist mir klar, nur wollte ich mal fragen welche ihr kennt, die nicht so viel Zeit benötigen. Sonderliche Erfahrungen hab ich mit RichEdit bis jetzt nicht gehabt, d.h die besonderen Funktionen hab ich nie angewendet. Für den Fall, daß einer eine feine Funktion hat, würde ich mich freuen. Ansonsten natürlich über jeden Tip wie ich sowas schnell hinkriege. Ich fange schon mal an zu progen. Falls einer mir mit Tip oder Code aushelfen kann, bitte melden.

_________________
Popov
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Mo 14.07.03 15:14 
Hallo!
Wenn du das meinst(hab jetzt einfach die Farbe ändern lassen, kannst ja noch Ändern :wink:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure HighLight(zeile: integer; farbe: TColor; edit: TRichEdit);
var Start, Ende, OldSelStart:integer;
begin
zeile:= zeile-1;                            //damit Zeile 1 auch Zeile 1 ist
OldSelStart:= edit.SelStart;                //um später wieder zurückzugehen
Start:= Pos(edit.Lines[zeile],edit.text) -1;//Anfang der Zeile
Ende:= Length(edit.Lines[zeile]);           //Ende der Zeile

edit.SelStart:= Start;                      //ANFANG Setzen
edit.SelLength:=Ende;                       //Bis wohin
edit.SelAttributes.Color:= farbe;           //Färben

edit.SelLength:=0;                         //wieder-
edit.SelStart:= OldSelStart;               //herstellen
edit.SetFocus;                             //des Normals


end;


Und Aufgerufen wirds mit:
ausblenden Delphi-Quelltext
1:
HighLight(2,clBlue,RichEdit1);					

Färbt die zweite Zeile im RichEdit RichEdit1 blau.

Hoffe konte helfen
Stefan

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
Popov Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mo 14.07.03 15:20 
Ok, hat sich erledigt. Hab mir selbst was geschrieben. Wem was besseres einfällt, der kann sich melden. Wen's interresiert, hier der Code um eine Zeile zu markieren:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure RichEdit_SelectLine(RichEdit: TRichEdit; LineNr: Word);
begin
  with Richedit do begin
    if (LineNr = 0or (LineNr > Lines.Count) then begin
      SetFocus;
      Exit;
    end;
    LineNr := LineNr - 1;

    SelStart := Perform(EM_LINEINDEX, LineNr, 0); //CursorPosition setzen
    SelLength := Length(Lines[LineNr]); //Länge festlegen
    SetFocus;
    //Application.ProcessMessages; //Individuell einsätzen
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  RichEdit_SelectLine(RichEdit1, 1);
end;

_________________
Popov
Popov Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mo 14.07.03 15:27 
Hallo StefanH, auch nicht schlecht. Hab es gerade ausprobiert. Mal gucken was ich nehme. Auf jeden Fall Danke erstmal.

_________________
Popov
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Di 15.07.03 21:16 
Mir fällt grad ein, dass wenn es zwei gleiche Zeilen gibt, dass dann nur die immer die erste Gefärbt wird :oops:

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
bayou
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88


D6 PE
BeitragVerfasst: Di 14.06.05 21:10 
Genau das habe ich seit Tagen gesucht.

Vielen Dank

Ich hab da aber noch ein Problem. Habe erst angefangen mit Delphi zu arbeiten. Wie kann ich denn zur Laufzeit eine (Lines) erstellen?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
 begin
  if k.line[1] <> '' then begin
     RichEdit_SelectLine(m, 1);
     m.Lines[0]:=k.line[1];
  end;
  if k.line[2] <> '' then begin
     RichEdit_SelectLine(m, 2);
     m.Lines[1]:=k.line[2];
  end;
  if k.line[3] <> '' then begin
    RichEdit_SelectLine(m, 3);
    m.Lines[2]:=k.line[3];
  end;

usw.

Wenn ich den Text nicht vorher mit der Anzahl der Lines gespeichert habe, wird nur die erste Zeile angezeigt.

Gehört nicht hier her, ich schreibs mal in einen neuen Beitrag. :oops:

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.