Listbox i Focus Rect

0

W listbox po kompilacji jak zaznaczymy jakis wiersz z listy jest on otoczony taką rameczką z kresek przerywanych (Focus rect się to chyba nazywa)... jak to usunąć?? (chodzi mi jak to zrobic w Builderze 6) z gory dzieki za pomoc

0

Przede wszystkim lista musi byc OwnerDraw. W metodzie OnDrawItem dajesz cos takiego:


TCanvas *pCanvas;
pCanvas = ((TListBox *)Control)->Canvas;
pCanvas->FillRect(Rect);

......

if(State.Contains(odFocused))
  pCanvas->DrawFocusRect(Rect); 

0

Taaa, a to już zmiana stylu na LBS_NOSEL (czy coś w stylu Selection:None ?) nie wystarczy??

Eppers: chcesz w ogóle nie mieć zaznaczenia, czy tylko nie mieć zaznaczenia na początku??

0

w programie podswietlane sa 3 linie jednoczesnie ale wewnatrz tego podswietlenia granatowego obramowanie otacza tylko 1 linie a nie wysztskie 3 co daje paskudny efekt :/

0

zrobiłem tak jak mowiłes i on wpierw dziala ale potem zamalowuje tekst caly i go zaslania tym :/

0

Taaa, a to już zmiana stylu na LBS_NOSEL (czy coś w stylu Selection:None ?) nie wystarczy??

Nie wystarczy, bo tu chodzilo o focus a nie o zaznaczenie! Dlatego trzeba uzyc DrawFocusRect. Zreszta w winapi tez jest taka funkcja i podobnie dziala: kolejne wywolania funkcji powoduja rysowanie i usuwanie focusa (funkcja XOR).
Wlasnie dlatego trzeba sprawdzic czy focus jest aktualnie wyswietlany i jezeli tak, to wywolac ta funkcje. No a zeby sprawdzic, to musi byc OwnerDraw, innego sposobu nie znam.

Eppers: Jezeli dobrze zrozumialem, to chodzi o zrobienie takiej listy jak ja zrobilem w moim playerze, robilem to dokladnie w taki sposob jak ci napisalem ... zreszta mozesz pociagnac go z www.SuperPlayer.prv.pl i zobaczyc czy o to ci chodzilo.

0

wydaje mi sie ze wlasnie o to chodzilo bo nie widze focus rect na tej liscie zeby bylo
wiec wlasnie jak taka rzecz zrobic? bo wpisalem tak jak to mowisz ale on to zarysowuje jak juz wspomnialem :/

0

No to styl OwnerDraw, a kod ci podalem wyzej (a wlasciwie podalem ta czesc ktora odpowiada za usuwanie focusa, bo calosc bylaby za dluga). A jezeli masz jeszcze jakies watpliwosci to w pomocy do BCB jest przyklad kodu jak uzywa sie ListBox-ów w trybie OwnerDraw.

//dopisane
No pewnie ze ci zamalowuje bo to nie jest caly kod (widziales te kropki ... ?). Zajrzyj do helpa BCB, tam masz gotowy przyklad jak uzywa sie stylow OwnerDraw, a na koniec linijka z DrawFocusRect - to tyle w tym temacie...

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