Podswietlic linijke

0

Jak moge podswietlic jedna linijke (albo i wiecej) w Synedit albo Richedit?

0

Co rozumiesz przez "podświetlić" ..chodzi o zaznaczyć?

0

Chyba chodzi o takie podświetlenie jak na przykład UltraEdit robi albo Delphi 2005, albo SharpDevelop. Że linijka w której aktualnie jest kursor ma inne tło.

Lazarus to potrafi? Mam wrażenie że tak, można by zajrzeć do jego źrodełek, bo on na SynEdicie chodzi.

0

http://4programmers.net/file.php?id=1854

Tu masz zmodyfikowany przeze mnie RichEdit, który takie coś posiada.

0

dzieki,zaraz wyprobuje, ale moge to jakos przeniesc na Synedit?

0

Nie, ale w SynEdit też na pewno się jakoś da, ale inaczej.

0

Ja to sprawdzilem, i jednak nie calkiem o to mi chodzi.
"Ktos" mial raczej racje.
W wiekszosci edytorow jest taka funkcja....

0

Jakbyś znalazł to umieść to gdzieś tutaj na forum, nam (projekt GeminiR) też by się to przydało w najbliższym czasie :)

0

Ehh, przecież ja podałem przykład JAK takie coś zrobić - teraz musisz tylko to wykorzystać, żeby działało u Ciebie.

0

Tak, ale to nie to.
U Ciebie bedzie

  1. zaznaczony tylko tekst
  2. mozna zaznaczyc wiecej linijek

A chodi mi o cos takiego, co maja inne edytory, ze cala linijka ma inny kolor itd...

0

Ehh, poświęcę sie i zamieszczę screena z SharpDevelop: http://www.republika.pl/kyler1/linijka.PNG (61 KB). Tam zaznaczone o co chodzi :) Po prostu tam gdzie jest kursor to to ma inne tło...

0

Dokladnie! :)

0

Hmm, nie za łatwo będzie to zrobić - zdaje się, że nie ma gotowego komunikatu .. trzeba będzie pokombinować z tym kodem:

uses RichEdit;

procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  CF: TCharFormat2;
  lineindex: Integer;
begin
  FillChar(CF, SizeOf(CF), 0);
  CF.cbSize := SizeOf(CF);
  CF.dwMask := CFM_BACKCOLOR;
  CF.crBackColor := ColorToRGB(clYellow);
  lineindex := RichEdit1.perform( EM_EXLINEFROMCHAR, 0, RichEdit1.SelStart);
  RichEdit1.SelStart  := richEdit1.perform( EM_LINEINDEX, lineindex, 0 );
  RichEdit1.SelLength := RichEdit1.perform( EM_LINEINDEX, lineindex + 1, 0 ) - RichEdit1.SelStart;
  RichEdit1.Perform(EM_SETCHARFORMAT, SCF_SELECTION, lParam(@CF));
  RichEdit1.SelLength := 0;
end;

Trzeba dodać jeszcze sprawdzenie czy aktualna linia jest różna od poprzedniej zaznaczonej - jeśli tak to ustawić kolor tła na biały w poprzedniej. Do tego warunku dodać jeszcze czy tekst nie jest zaznaczany - bo jeśli tak, to wtedy kolorowanie ma nie działać (user jest w trakcie zaznaczania)

0

Dzieki za dobre checi, ale to i tak nie to. Zobacz, jak to wygladaw delphi, i porownaj...

0

W przykładach dostarczonych razem z SynEdit jest taki niby-debugger z podświetlaniem linii jak w edytorze Delphi.

0

WRESZCIE!!! Dopiero w 3. niemieckim forum znalazlem odpowiedz!

A odpowiedz byla tak blisko!

Po prostu ActiveLineColor w Synedicie :)

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