Delphi-PRAXiS

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 PopUpMenu bei Listbox (https://www.delphipraxis.net/81304-popupmenu-bei-listbox.html)

Jay15688 24. Nov 2006 15:21


PopUpMenu bei Listbox
 
Hallo Leute!

Bin sowohl hier im Forum, als auch in Delphi generell absoluter Neuling...

Bin im Moment ein eigenes Programm am entwickeln, das eine Listbox enthält! Würde gerne ein Rechtsklick-Menü in die ListBox einbauen! Habe also in Delphi folgenden Code in die ListBox geschrieben:

Zitat:

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
cursorpos : TPoint;
ndx : integer;
begin
if Button=mbRight then
begin
cursorpos.X := X;
cursorpos.Y := y;
ndx := ListBox1.ItemAtPos(cursorpos,true); // Item unter dem Cursor
if (ndx <> -1) then
begin
with (Sender As TListBox) do
begin
Selected[ndx] := True;
cursorpos := ClientToScreen(cursorpos); // Positionsanpassung
PopupMenu1.Popup(cursorpos.x + Left,cursorpos.Y + Top);
end;
end;
end;
end;

Allerdings kommt immer wieder der Fehler: Undeclared Identifier: PopUpMenu1

Habe auch versucht oben unter "type" PopupMenu1: TPopupMenu; zu schreiben, was aber auch nichts bringt..dann kommt eine Meldung, dass er keinen "corresponding component" hat...

Würde mich freuen, wenn mir da einer so helfen kann, dass es auch ein blutiger Noob wie ich hinbekommt :)

Thx im Vorraus


MfG Jay

oschulz 24. Nov 2006 16:09

Re: PopUpMenu bei Listbox
 
Die Listbox hat doch bereits eine Property PopupMenu! Dort brauchst du dir doch nur das Popup zuzweisen.
Oder hast damit was besonderes vor?

Jay15688 24. Nov 2006 16:11

Re: PopUpMenu bei Listbox
 
Zitat:

Zitat von oschulz
Die Listbox hat doch bereits eine Property PopupMenu! Dort brauchst du dir doch nur das Popup zuzweisen.
Oder hast damit was besonderes vor?

Ich will ein stinknormales Popup-Menu für die Listbox haben. Wenn das einfacher geht, soll mir das nur Recht sein :)

Könntest du mir das mit dem eigenen Property PopupMenu erklären?

Danke ;)

oschulz 24. Nov 2006 16:28

Re: PopUpMenu bei Listbox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Aber gerne doch ;)
Du legst dir die Kompo Popupmenu aufs Form, das füllen wirst du sicherlich schon hinbekommen haben. Dann Lisbox anklicken und den Propertys (Liste mit den Einstellungen für die Listbox). Dort gibt es einen Punkt Popupmenu. Im normalfall ist das ne rote Schrift(zumindest bei mir :D). Wenn du dann daneben auf den Pfeil nach unten klickst (Pulldownbox), bekommst du eine Liste mit den Popups auf deinem Form. Das richtige auswählen, anklicken, fertig. Oder du trägst den Namen des Popups dort direkt per Hand ein. (Siehe Anhang)

Jay15688 24. Nov 2006 16:32

Re: PopUpMenu bei Listbox
 
Ja, das klappt jetzt soweit alles! Vielen Dank! Habe schon ein kleines Menü mit einer "Löschen" Funktion zum laufen bekommen!

Aber was ich mir jetzt noch vorstellen würde ist, dass beim Rechtsklick der Eintrag unter dem Cursor selektiert wird und die Befehle im Menü dann nur für den selektierten Eintrag gelten. In dem Fall, dass nur der eine Eintrag gelöscht wird und nicht der gesamte ListBox-Inhalt!

Ist das auch mehr oder weniger einfach umsetzbar? :P

Habe leider nocht nicht sooo viel Ahnung =)


Vielen Dank schonmal!

gmc616 24. Nov 2006 18:22

Re: PopUpMenu bei Listbox
 
Zitat:

Zitat von Jay15688
... die Befehle im Menü dann nur für den selektierten Eintrag gelten

Dazu musst du im OnClick des Menüeintrags den selectierten Eintrag des ListBox ermitteln. z.B. so:
Delphi-Quellcode:
procedure TForm1.LschenClick(Sender: TObject);
var
  LB : TListbox;
begin
  lB := Popupmenu1.PopupComponent as TListBox;
  if lb.ItemIndex >=0   then
    LoeschEs ();
EDTI: Listview mit Listbox verwechselt

Jay15688 25. Nov 2006 10:56

Re: PopUpMenu bei Listbox
 
Vielen Dank!

Soweit klappt nun das Popupmenü, sodass auch der Eintrag unter dem Cursor makiert wird.

Aber meine nächste und wohl auch zu diesem Thema letzte Frage wäre jetzt, wie ich hinkriege, dass z.B eine Funktion wie "Löschen" nur für den selektierten Eintrag gilt und nicht für die ganze ListBox! Momentan wird dann der gesamte ListBox Inhalt gelöscht...


Danke im Vorraus!


MfG Jay

_frank_ 25. Nov 2006 11:12

Re: PopUpMenu bei Listbox
 
du machst sicherlich ein lb(.items).clear, oder? nehm mal lb.items.delete(lb.ItemIndex);

hth Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr.

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