Hallo, versuchs doch mal hiermit:
Delphi-Quellcode:
procedure TEditForm.SynEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if farbig then
begin
if Key = VK_DOWN then iOffset := 1;
if (Key = VK_UP) then iOffset := -1;
if ((SynEdit1.CaretY = 1) and (iOffset = -1)) or
((SynEdit1.CaretY = SynEdit1.Lines.Count) and (iOffset = 1)) or
(not (Key in [VK_DOWN,VK_UP])) then iOffset := 0;
SynEdit1.Refresh;
end;
end;
farbig ist dabei eine Boolean-Variable, mit der die Markierung der aktuellen Zeile ein und ausgeschaltet werden kann. iOffset ist eine Integer-Variable.
Weiter geht's:
Delphi-Quellcode:
procedure TEditForm.SynEdit1SpecialLineColors(Sender: TObject;
Line: Integer; var Special: Boolean; var FG, BG: TColor);
begin
if farbig then
begin
if (Line = (SynEdit1.CaretY+iOffset)) then
begin
Special := true;
bg := clYellow;
end;
end
else
Special := False;
end;
Mit bg wird die Farbe festgelegt.
Anzeigen der aktuellen Zeile und Spalte z. B. in einer Statusbar:
Delphi-Quellcode:
procedure TEditForm.SynEdit1StatusChange(Sender: TObject;
Changes: TSynStatusChanges);
begin
if Changes * [scAll, scCaretX, scCaretY] <> [] then
Statusbar1.Panels[1].Caption := Format(' Zeile:%6d, Spalte: %3d',
[SynEdit1.CaretY, SynEdit1.CaretX]);
end;
Hoffe, geholfen zu haben.