PopupMenu dla odpowiedniego ListView

0

Mam 3 ListView i chce reagowac jednym PopupMenu na dane z nich wszytkich - innymi slowy po kliknieciu na dowolny z trzech ListView prawa nozka wyskakiwalo jedno menu Popup. Chce jednak zeby Popup pobieral dane z wywolujacego ListView'a w nastepujacej formie:

dane.Caption:=listview{tu odpowiedni list view}.Items[listview{tu odpowiedni list view}.ItemIndex].SubItems[0];

Ale jak okreslic z ktorego ListView ma pobierac ta informacje? Pewnie Sender'em ale nie wiem jak to przerobic zeby to bylo czytelne?

0

dane.Caption:=(Sender as TListView).Items[(Sender as TListView).ItemIndex].SubItems[0];

0

Wyskakuje 'Invalid class typecast' :( (wszystko jest umieszczone w OnPopup w PopupMenu) Dokladny kod:

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
dane.Caption:=(Sender as TListView).Items[(Sender as TListView).ItemIndex].SubItems[0];
end;

Nie dziala :|

0

Zaproponuję ci trochę nietypowy sposób, jednakże działający. Do rozpoznania, na którym ListView zostało wywołane PopupMenu można wykorzystać właściwość Tag.

W OnMouseUp ListView wpisujesz:

 if Button = mbRight then
      begin
        PopupMenu.Tag := Integer(Sender);
        PopupMenu.Popup((Sender as TListView).ClientToScreen(Point(X, Y)).X,
                         (Sender as TListView).ClientToScreen(Point(X, Y)).Y);
      end;

Następnie w OnPopup menu:

dane.Caption:=TListView(PopupMenu.Tag).Items[TListView(PopupMenu.Tag).ItemIndex].SubItems[0];

I jeszcze jedno. Nie przypisuj PopupMenu dla ListView w OI.

0

Wyskakuje 'Invalid class typecast' :(

Sorry, moja wina.

Dajesz to w OnContextPopup ListView (podpinajac pod wszystkie ListView). Senderem OnPopup jest PopupMenu. Senderem OnContextPopup jest odpowiedni komponent.

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