Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListBox & PopUp: ausgewähltes Item feststellen (https://www.delphipraxis.net/29643-listbox-popup-ausgewaehltes-item-feststellen.html)

Tubos 12. Sep 2004 14:24


ListBox & PopUp: ausgewähltes Item feststellen
 
Hallo;

mit der Eingenschaft PopupMenu einer Listbox kann ich ein Popup-Menü erzeugen, das mit einem rechten Mausklick geöffnet werden kann.
Doch wie kann ich feststellen bei welchem Item rechtsgeklickt wurde?

Tubos

Dax 12. Sep 2004 14:25

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Es gibt zu jedem Delphi-Referenz durchsuchenTMenuItem ein OnClick-Methode. Wenn du die belegst, zusammen mit einer anderen unverwechselbaren Eigenschaft pro Item, findest du's durch checken ganz einfach raus.

Tubos 12. Sep 2004 14:53

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Zitat:

Es gibt zu jedem TMenuItem ein OnClick-Methode. Wenn du die belegst, zusammen mit einer anderen unverwechselbaren Eigenschaft pro Item, findest du's durch checken ganz einfach raus.
Ich meinte nicht das Menü-Item, das gewählt wurde, sondern das Listbox-Item, bei dem das Popupmenü aufgerufen wurde.

Das ganze ist die Userliste in meinem Chat, wenn man da mit der rechten Maustaste auf einen Nick klickt soll ein Popup-Menü aufpoppen wo man auf "Infos" klicken kann und dann Informationen über den User aufgelistet werden.
Nur muss ich dazu wissen wer ausgewählt wurde!
(nur festzustellen, welcher eintrag jetzt gerade markiert ist, nützt überhaupt nichts)

mytar 12. Sep 2004 14:55

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Vermutlich mit Delphi-Referenz durchsuchenTListBox.ItemIndex! :mrgreen:

alcaeus 12. Sep 2004 15:10

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Hi Francis,

Zitat:

Zitat von mytar
Vermutlich mit Delphi-Referenz durchsuchenTListBox.ItemIndex! :mrgreen:

Das muss nicht unbedingt sein. Wenn du rechts auf ein Item klickst, welches nicht ausgewählt war, so ist dieses immer noch nicht ausgewählt. ItemIndex gibt dir zwar den Index des ausgewählten Items, welcher aber nicht unbedingt jenes Item ist, auf das geklickt wurde um das PopupMenu zu öffnen.
Sieh dir dazu TListBox.ItemAtPos und TPopupMenu.PopupPoint an.

Greetz
alcaeus

Tubos 12. Sep 2004 17:43

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Zitat:

Sieh dir dazu TListBox.ItemAtPos und TPopupMenu.PopupPoint an.
Ok, dann muss ich es wohl selbst machen. Dachte es gäbe da eine vorgefertigte Methode.

Und wie kann ich machen dass das Item automatisch markiert wird wenn ich es mit der rechten Maustaste anklicke?
Das würde nämlich besser aussehen, meiner Meinunge nach.
Muss ich das auch selber machen oder gibt es dafür bereits etwas?

alcaeus 12. Sep 2004 18:22

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Hi Lukas,

du müsstest in dem Fall die Zuweisung des PopupMenus aufheben, und im OnMouseUp ItemIndex mit Hilfe von ItemAtPos zuweisen, und anschließend das PopupMenu manuell mit PopupMenu1.Popup öffnen.
Aber vielleicht habe ich auch nur eine Eigenschaft der ListBox übersehen, ich hab hier leider kein Delphi.

Greetz
alcaeus

Tubos 12. Sep 2004 21:49

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Was ist an dem Code falsch?

Delphi-Quellcode:
procedure TForm1.item1Click(Sender: TObject);
begin
 showmessage('Sie haben auf Nr. '+inttostr(userlist.ItemAtPos(popupmenu1.popuppoint,true)) +' geklickt');
end;
item1 ist ein Item des Popup-Menüs.

Es wird ständig -1 angezeigt.

Sharky 13. Sep 2004 05:46

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Hai Tubos,
versuche es mal so:
Delphi-Quellcode:
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  point : TPoint;
  lbpos : TPoint;
begin
  if Button In [mbRight] then
  begin
    point.X := x;
    point.Y := y;
    ListBox1.ItemIndex := ListBox1.ItemAtPos(point,true);
    lbpos.X := Listbox1.Left + self.Left + x;
    lbpos.y := Listbox1.top + self.top + y;
    PopupMenu1.Popup(lbpos.x,lbpos.y);
  end;
end;
Dabei darf das Popup-Menü aber nicht mit der Listbox verknüpft sein.

Tubos 13. Sep 2004 05:53

Re: ListBox & PopUp: ausgewähltes Item feststellen
 
Zitat:

Dabei darf das Popup-Menü aber nicht mit der Listbox verknüpft sein.
Ist es aber :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz