Glupim kropeczkom zaznaczenia mowimy NIE :D

0

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.

0

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 :)

0
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]

0

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...

0

Hm.. Może windows, ma w jakimś dllku funkcjie DisableKropeczki32 ? albo co.. :p Nie wiem... Ale jeszcze myśle :)

0

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

0

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...

0

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

0

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.

0

Nie wiem, dlaczego u was nie działa, bo u mnie działa... Oto przykład:

user image

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