Autor Beitrag
chaoslion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


Delphi 2k6 Prof,C,C#,Delphi
BeitragVerfasst: Fr 21.04.06 13:29 
Wie ihr der Überschrift entnehmen könnt, suche ich eine Methode, im in einm SynMemo
eine Zeile einzufärben. Dabei bin ich bei der IDEDemo schon auf
ausblenden Delphi-Quelltext
1:
2:
SpecialLineColors(Sender: TObject; Line: Integer;
  var Special: Boolean; var FG, BG: TColor);

gestoßen. Jedoch hab ich kein schimmer wo ich jetzt ansetzen soll.
Benedikt
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 21.04.06 13:53 
Hallo,

dann schau dir mal die Events der SynEdit/SynMemo-Kompo an, dabei findest du auch das OnSpecialLineColors-Event,
welches du ja auch schon gepostet hast.
Mit diesem kannst du ganz einfach die Farben für die Zeile festlegen.

Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.SynMemo1SpecialLineColors(Sender: TObject; Line: Integer; var Special: Boolean; var FG, BG: TColor);
begin
   //Das Event wird für jede Zeile abgerufen, also Line abfragen
   if (Line=2then
   begin
        //Special True oder False legt fest ob trotz Farbe der Highlighter genutzt werden soll
        Special:=FALSE;
        
        //BG bestimmt die Hintergrundfarbe der Zeile (hier rot), FG die Vordergrundfarbe
        BG:=clRed;
  end;
end;


Mit diesem Beispiel wird die zweite Zeile rot eingefärbt.

Grüße
Benedikt Loepp
chaoslion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


Delphi 2k6 Prof,C,C#,Delphi
BeitragVerfasst: Fr 21.04.06 14:09 
Danke das bringt mich schonmal weiter. Aber kann es sein das dies nur funktioniert
wenn ActiveLineColor <> clNone ist?
Benedikt
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 21.04.06 14:15 
Also eigentlich ist die zweite Zeile in diesem Beispiel dann immer rot, egal welchen Wert ActiveLineColor hat. Und wenn die aktive Zeile auch die zweite ist, bleibt diese hier trotzdem rot, ActiveLineColor überschreibt diesen dann nicht.
Dass müsstest du dann über eine zusätzliche Abfrage realisieren im OnSpecialLineColors-Event.