[SynEdit] kolor wybaranej linii

0

Nie wiem jak podświetlić kolor wybranej przeze mnie lini w synedit. Przeczesałem forum 4p i nie widze rozwiązania tego problemu.

Z góry dzieki za pomoc
Michał

0

A czy w demach nie było przypadkiem czegoś takiego? (Jak nie, to nie bić, bo nie jestem pewien :P)

0

A czy w demach nie było przypadkiem czegoś takiego? (Jak nie, to nie bić, bo nie jestem pewien :P)

Jest coś takiego w Domo wersjach a dokładniej w folderze D4Demo

0

Niestety akurat ten przykład mi się nie kompiluje (SynExporterHTML1.HTMLFontSize: property HTMLFontSize does not exist :( ) A analiza kodu z plików pas niewiele mi mówi (jestem początkujący w delphi) Czy mógłby ktoś podać jakiś gotowy przykład, albo przynajmniej powiedzcie mi jakiego hasła szukać na googlu

Pozdrawiam Michał

0

ehh, posiedziałem nad tymi żródłami i chyba znalazłem:

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  p: TBufferCoord;
  Mark: TSynEditMark;
  i: boolean;
begin
 with SynEditor do begin
    p := CaretXY;
 //   ShowMessage(IntToStr(p.char));
    Marks.ClearLine(p.Line);
    if (Sender as TSpeedButton).Down then begin
      Mark := TSynEditMark.Create(SynEditor);
      with Mark do begin
        Line := p.Line;
        Char := p.Char;
        ImageIndex := (Sender as TSpeedButton).Tag;
        Visible := TRUE;
        InternalImage := BookMarkOptions.BookMarkImages = nil;
      end;
      Marks.Place(Mark);
    end;
  end;
end;

problem w tym że to nie chce działać :(. Wydawało mi sie że powinno zaznaczać linie w której jest kursor (p.line) ale tak nie jest. Ktoś wie co trzeba zrobić żeby działało?

Michał

0

Ja to mam tak:

procedure TFormMain.EditorSpecialLineColors(Sender: TObject; Line: Integer;
  var Special: Boolean; var FG, BG: TColor);
begin
  BG := clRed;
  FG := clWhite;
  if Line = ErrorLine then begin
    Special := True;
  end;
end;

Gdzie ErrorLine jest linia do podkreslenia

A wykorzystuje to tak:

procedure SelectLine(RE: TSynEdit; const Line: Integer);
begin
  FormMain.ErrorLine := Line;
  RE.Invalidate;
  if (Line > 0) and (RE.CaretY <> Line) then RE.CaretY := Line;
  RE.InvalidateLine(Line);
  RE.SetFocus;
end;

Wiec proscizna ;)

0

za tępy jestem, nie potrafie tego zrobić, może ktoś wysłać przykładowe źródła jak to ma wyglądać na [email protected] ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1