FAQ VCL
Компоненты\SynEdit\SynEdit

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как выделить другим цветом текущую строку (под кареткой)?

procedure TForm1.SynEdit1SpecialLineColors(Sender: TObject; Line: Integer;
  var Special: Boolean; var FG, BG: TColor);
begin
  if Line = TSynEdit(Sender).CaretY then
  begin
    Special := True;
    BG := clInfoBk;
  end;
end;

// Или чуть более сложный вариант
interface

type
  TSynEdit = class(SynEdit.TSynEdit)
  protected
    procedure SetCaretXY(const Value: TBufferCoord); override;
    procedure SetCaretXYEx(CallEnsureCursorPos: Boolean; Value: TBufferCoord); override;
  end;

implementation

procedure TForm1.SynEdit1SpecialLineColors(Sender: TObject; Line: Integer;
  var Special: Boolean; var FG, BG: TColor);
begin
  if Line = TSynEdit(Sender).CaretY then
  begin
    Special := True;
    BG := clInfoBk;
  end;
end;

{ TSynEdit }

procedure TSynEdit.SetCaretXY(const Value: TBufferCoord);
begin
  inherited;
  Repaint;
end;

procedure TSynEdit.SetCaretXYEx(CallEnsureCursorPos: Boolean;
  Value: TBufferCoord);
begin
  inherited;
  Repaint;
end;

При использовании материала - ссылка на сайт обязательна