Listview, canvas

SZ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 6 lat
  • Postów:107
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 :)

mordek
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 14 lat
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.

Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 13 lat
  • Postów:7923
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ć

- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
SZ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 6 lat
  • Postów:107
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

SZ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 6 lat
  • Postów:107
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ł ;)

puchi
  • Rejestracja:prawie 20 lat
  • Ostatnio:ponad 3 lata
  • Postów:411
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.

SZ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 6 lat
  • Postów:107
0

hmm sprytne ;) dzięki :P

SZ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 6 lat
  • Postów:107
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.

SZ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 6 lat
  • Postów:107
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.

puchi
  • Rejestracja:prawie 20 lat
  • Ostatnio:ponad 3 lata
  • Postów:411
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.

Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 13 lat
  • Postów:7923
0

ListBox też ma OnMeasureItem


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.