Daje 3 browce (do wyboru, zakladajac ze kazdy nie bedzie mial objetosci > 0,5l :P; odbior w trojmiescie, ew. na jakims zlocie, na ktorym bede ;]) temu, kto wyduma jak wywalic te glupie kropeczki wokol itema w listboksie/listview (ograniczmy sie do listboksa) gdy jest on zaznaczony. Ladnie sobie rysuje na nim canvasem, a te kropeczki mi psuja caly efekt :). Mordowalem sie z tym ladne pare tygodni, szukalem doslownie wszedzie i zadnej wzmianki nie znalazlem, zas komponenty ktore tego ustrojstwa nie posiadaja, sa bez zrodel (nie, nie chce sie na nie przesiasc :P). ClearSelection nie pomaga (przynajmniej tam, gdzie je umieszczalem), ba! - dostawalem w zamian Stack Overflow :D.
Glupim kropeczkom zaznaczenia mowimy NIE :D
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
Hm.. Jeśli chodzi ci o te kropeczki wokół zaznaczonego itema, to możesz przecież zrobic w OwnerDraw i dać Rectangle <ort>wokuł </ort>itema, tylko zmienić Canvas.Brush.Style na bsNone i wyświetlić na tym wszystkm jeszcze text i <ort>bedzie </ort>spoko :)
- Rejestracja: dni
- Ostatnio: dni
if odSelected in state then
begin
listbox1.canvas.brush.color :=clskyblue;
listbox1.canvas.FillRect(Rect);
listbox1.canvas.Brush.Color := clskyblue;
listbox1.canvas.FrameRect(Rect);
listbox1.Canvas.Font.Color:= clblack;
listbox1.Canvas.Brush.Style:=bsClear;
listbox1.Canvas.TextRect(rect,rect.Left+1,rect.Top+1,Listbox1.Items.Strings[index]);
end;
Jak chcesz rysować obrazek obok itema to narysuj go na samym końcu. Już widzę te 3 zimne bronki.
[browar]
- Rejestracja: dni
- Ostatnio: dni
CYMES: myślę, że za bardzo się pospieszyłeś z odpowiedzią. Niestety te kropeczki są malowane na samym końcu i to chyba przez windowsa. Jak na razie, jedynym rozwiązaniem, które okazało się skuteczne, jest ustawienie focusa na coś innego, kiedy listbox gop przejmie. No, chyba, ze potrzebujesz focusa...
- Rejestracja: dni
- Ostatnio: dni
Hm.. Może windows, ma w jakimś dllku funkcjie DisableKropeczki32 ? albo co.. :p Nie wiem... Ale jeszcze myśle :)
- Rejestracja: dni
- Ostatnio: dni
Witam.
Nie chcę żadnego browara bo nie piję, ale podpowiem.
Dla ListBox'a: czy ustawiłeś Style na lbOwnerDrawVariable lub lbOwnerDrawFixed?
Po przestawieniu tryb OwnerDraw zadziała tak jak chcesz - bez tych kropeczek. Przynajmniej u mnie działa. Resztę napisz sam.
Pozdrawiam
Rav
- Rejestracja: dni
- Ostatnio: dni
Pregusia, Cymes: probowalem tak juz ladne pare dni temu, efekt jednak nijaki - tak jak napisal thenkles, niezaleznie co sobie tam namaluje, kropki i tak beda :(.
Rav: Tak, ustawilem na lbOwnerDrawVariable, inaczej nie zabardzo bym mogl po nim rysowac ;). Niestety, niezaleznie od tego, czy jest to bOwnerDrawVariable, czy bOwnerDrawVariable kropeczki i tak sie pojawiaja...
- Rejestracja: dni
- Ostatnio: dni
Miałem ten sam problem :) a rozwiązałem to ustawiając karetke listboxa przy każdym wciśnięciu buttona myszki w dół:
SendMessage(Handle, LB_SETCARETINDEX, -2, 0);
Wcześniej kombinowałem też z DrawFocusRect(), ale róznie z tym bywało, raz działało, raz nie. Fokus windows zdaje się rysuje tak samo jak DrawFocusRect() (o ile się nie mylę), czyli xoruje kolory. Pomyślałem więc, że narysuje to jeszcze raz i w rezultacie nie będzie żadnego efektu, no ale... tu właśnie teoria mija się z praktyką. No chyba, że robiłem coś źle :-P
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
Jejq - ale Wy macie problemy... też bym takie chciał mieć....
Ponieważ to nie pierwsze pytanie o usunięcie "kropeczek" więc napisałem specjalnie na tę okazję komponent. Kod źródłowy zarówno w BCB jak i Delphi więc każdy zrozumie.
http://4programmers.net/view_file.php?id=1408
A te Wasze rozwiązania... z całym szacunkiem - jeśli tak wyglądają wszystkie Wasze programy...
Pozdrawiam.
[<font color="blue">dopisane</span>]
Kasę za te 3 browce przekaż jakiemuś stowarzyszeniu charytatywnemu na rzecz głodujących dzieci.
- Rejestracja: dni
- Ostatnio: dni
Nie wiem, dlaczego u was nie działa, bo u mnie działa... Oto przykład:
