Yo! Może odgrzewam stary kotlet, ale wydaje mi się że to dobry temat na mój problem:)
Z rysowaniem radzę sobie bez problemu, ale mam problem z dodatkowym przyciskiem(w tym temacie to jest ta ikonka po prawej stronie).
Jakim sposobem mogę do niego przypisać jakieś zdarzenie czy coś w tym stylu? Myślałem coś o sprawdzeniu w jakim miejscu jest kursor na itemie itp.. ale nawet nie wiem jak to wykonać;D

- Rejestracja:ponad 22 lata
- Ostatnio:ponad 9 lat
- Postów:1668
listbox ma cos takiego jak ItemAtPos() i ItemRect().
majac xy klikniecia masz index item'u. mozesz sobie wyliczyc w ktorym miejcu na itemie kliknięto.
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var index:integer;
r:TRect;
begin
index:=listbox1.ItemAtPos(point(x,y), true);
if index<0
then exit; //nie kliknieto na zadnego itema.
r:=listbox1.ItemRect(index);
x:=x-r.Left;
y:=y-r.Top;
//teraz x i y to wspolrzedne klikniecia na itemie a index to index
caption:=inttostr(x)+','+inttostr(y)+' - item: '+inttostr(index);
end;
tak samo mozesz zrobic w mousemove i zmieniac kursor listboxa - po najechaniu na "przycisk" kursor bedzie sie zmienial np na crHandPoint.

- Rejestracja:prawie 15 lat
- Ostatnio:około 5 lat
Ja sie jeszcze wtrace... Wlasnie ukonczylem pierwsza wersje swojego komunikatora, tez na TEasyGG i tez mialem problem z lista kontaktow. Moim zdaniem prosciej i chyba ładniej jest uzyc scrollbox'a i na nim tworzyc dynamicznie panele z dynamicznymi kompomentami. Jako tag panelu daje nr gg, pozniej w onclick odwolujesz sie przez TPanel(sender).tag i z glowy. Tak ja to rozwiazalem, ale jeszcze malo wiem wiec Wasz wybor ;)

- Rejestracja:ponad 22 lata
- Ostatnio:ponad 9 lat
- Postów:1668
jesli dobrze pamietam to kiedys juz byla na forum dyskusja na ten temat. nie wiem nawet czy sam nie wspomnialem o takim rozwiazaniu.
ale to ma pewne wady: jesli "kontaktow" bedzie naprawde duzo to czas utworzenia paneli i przyciskow na nich bedzie naprawde spory. listbox jest duzo szybszy, jest wiec bardziej uniwersalny. poza tym,listbox daje chyba wieksze mozliwosci graficzne i obsluge z klawiatury.

- Rejestracja:prawie 15 lat
- Ostatnio:około 5 lat
Racja, czas tworzenia okolo 120 paneli na moim 2rdzeniowym procku jest spory(przynajmniej zauwazalny czyli jakas sekunda). Jednak jest to tylko jednorazowe przy uruchomieniu programu, nastepnie liste odswiezam przez edycje istniejacych paneli, co 3s. Ogolnie nie jest zle ;). Jak cos to pisac na pw, jezeli bede potrafil to pomoge.
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.