Jak moge podswietlic jedna linijke (albo i wiecej) w Synedit albo Richedit?
Co rozumiesz przez "podświetlić" ..chodzi o zaznaczyć?
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.
http://4programmers.net/file.php?id=1854
Tu masz zmodyfikowany przeze mnie RichEdit, który takie coś posiada.
dzieki,zaraz wyprobuje, ale moge to jakos przeniesc na Synedit?
Nie, ale w SynEdit też na pewno się jakoś da, ale inaczej.
Ja to sprawdzilem, i jednak nie calkiem o to mi chodzi.
"Ktos" mial raczej racje.
W wiekszosci edytorow jest taka funkcja....
Jakbyś znalazł to umieść to gdzieś tutaj na forum, nam (projekt GeminiR) też by się to przydało w najbliższym czasie :)
Ehh, przecież ja podałem przykład JAK takie coś zrobić - teraz musisz tylko to wykorzystać, żeby działało u Ciebie.
Tak, ale to nie to.
U Ciebie bedzie
- zaznaczony tylko tekst
- mozna zaznaczyc wiecej linijek
A chodi mi o cos takiego, co maja inne edytory, ze cala linijka ma inny kolor itd...
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...
Dokladnie! :)
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)
Dzieki za dobre checi, ale to i tak nie to. Zobacz, jak to wygladaw delphi, i porownaj...
W przykładach dostarczonych razem z SynEdit jest taki niby-debugger z podświetlaniem linii jak w edytorze Delphi.
WRESZCIE!!! Dopiero w 3. niemieckim forum znalazlem odpowiedz!
A odpowiedz byla tak blisko!
Po prostu ActiveLineColor w Synedicie :)