Listview, canvas

0

Witam. Mam dwa pytania odnośnie komponentu ListView.

Pytanie pierwsze:
Mój listview wygląda tak:

http://img143.imageshack.us/my.php?image=screenku2.jpg

Czy dałoby się (i jak? :P ) dodać na tło jeszcze obrazek?
Dodam, że ListView się rozciąga wraz z formą, więc obrazek byłby np. w prawym dolnym rogu ListViewa. (by nie ulegał rozciąganiu, zniekształceniu itp.)

Drugie pytanie:

Mam taki kod w OnDrawItem:

ImageList1.GetIcon(32, Ico);
ListView1.Canvas.Draw(Rect.Rright- 20, Rect.Top + 1, Ico);

Powoduje on przypisanie po PRAWEJ (nie chodzi mi o stronę lewą, gdzie są słoneczka) stronie itemu, obrazka z indexem 32 w ImageList.
Niestety przypisaniu ulegają wszystkie itemy. Jak mogę zrobić, by każdy item miał inny obrazek po prawej stronie?

Z góry dziękuję za pomoc :)

0

Mam taki kod w OnDrawItem:

ImageList1.GetIcon(32, Ico);
ListView1.Canvas.Draw(Rect.Rright- 20, Rect.Top + 1, Ico);

Powoduje on przypisanie po PRAWEJ (nie chodzi mi o stronę lewą, gdzie są słoneczka) stronie itemu, obrazka z indexem 32 w ImageList.
Niestety przypisaniu ulegają wszystkie itemy. Jak mogę zrobić, by każdy item miał inny obrazek po prawej stronie?

Ym... tak samo jak robisz to przy rysowaniu słoneczek po lewej stronie, czyli dla każdego item`a w listview inna ikona.

0
  1. masz przecież Item: TListItem; więc wiesz który item rysujesz
  2. http://www.delphidabbler.com/articles?article=16&part=1#eg1 masz tam kod + przykładziki, które mogą się przydać
0

Ym... tak samo jak robisz to przy rysowaniu słoneczek po lewej stronie, czyli dla każdego item`a w listview inna ikona.

Po lewej stronie to ikonki z imagelist (imageindex)

Z tłem na listviewie już sobie poradziłem :)
zostało jeszcze tylko drugie pytanie

Dziękuję za odpowiedzi

0

Poradziłem już sobie ze wszystkim :) Tylko mam jeszcze jedno pytanie:
Jak można poszerzyć wysokość itema, nie zmieniając wielkości czcionki?

Sorka, ze post pod postem, ale gdybym edytował post, to by nikt tego pewnie nie zauważył ;)

0

możesz wstawić na formę pusty komponent ImageList i ustawić w nim Height na dowolną wartość a width na 0. Jeśli używasz stylu vsReport to ustaw właściwość SmallImages na ImageList1 (czy jak tam go nazwiesz) i masz ustawioną wysokość itema na tyle ile ustawisz w Height komponentu ImageList.

0

hmm sprytne ;) dzięki :P

0

Jeszcze raz przepraszam, że piszę post pod postem, ale chcę by ktoś to zauważył.

Mam jeszcze jedno pytanie (chyba ostatnie). Przyjmijmy, że Align ListViewa mam ustawione na AlClient. Czyli jest on rozciągnięty na całą formę.
Mam itema, który ma bardzo długą nazwę nie mieszczącą się na listviewie, i wychodzi poza obszar formy. Jak można zrobić efekt łamania tekstu? Tak, by podczas rozciągania formy, caption danego itema dostosowywał się do wielkosci listviewa? Jeśli ktoś mnie nie zrozumiał, to chcę uzyskać taki efekt jak w GG, gdy opis nie mieści się w oknie ;) Zostaje on podzielony na kilka linijek.

Z góry dziękuję za pomoc.

0
puchi napisał(a)

możesz wstawić na formę pusty komponent ImageList i ustawić w nim Height na dowolną wartość a width na 0. Jeśli używasz stylu vsReport to ustaw właściwość SmallImages na ImageList1 (czy jak tam go nazwiesz) i masz ustawioną wysokość itema na tyle ile ustawisz w Height komponentu ImageList.

sorka, że post pod postem, ale mam jeszcze jedno małe pytanko.
Czy mogę jakoś ustawić wysokość dla poszczególnych itemów? np 5 itemów będzie miało inną wysokość niż reszta.

0

w ListView to niewiem ale na pewno da się w ListBox masz tam zdarzenie OnMeasureItem w nim możesz napisać odpowiedni kod który będzie ustawiał wysokość itema na taką jaką chcesz.

Z tego co widze to piszesz jakiś komunikator dawałem tu kiedyś kod jak za pomocą listview i listbox zrobić listę kontaktów taką jak w GG. Lista wyświetlała status, nazwę użytkownika i opis a wielkość itema była uzależniona od długości opisu. Poszukaj coś takiego "Lista jak w GG" czy jakoś tam na pewno znajdziesz jeśli cię to interesuje.

0

ListBox też ma OnMeasureItem

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