![]() |
Rechtsklick auf Listbox öffnet PopUp "ohne Linksklick&q
Hallöchen,
ich habe im Forum schon gesucht, aber leider nichts Passendens/Funktionierendes gefunden. Wenn ich auch meine Listbox rechtsklicke, soll das unter der Maus liegende Item markiert und das PopUpMenu geöffnet werden. Das wurde ![]() Es soll quasi so aussehen:
Delphi-Quellcode:
Das Problem kann nicht so schwer zu beheben sein, schätze ich, aber ich komm nicht drauf, was man da machen könnte :oops:
procedure TForm1.Listbox1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button=mbRight then begin //Markiere unter dar Maus befindliches Listbox-Item (Knackpunkt) Showmessage(''); end; end; Liebe Grüße Aike |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Du könntest es einfah markieren. So eine Art selected.
Beispiel:
Delphi-Quellcode:
Du musst es anpassen. TxtFolder = StaticText.
var mp3file : string;
begin mp3File := Concat(txtFolder.Caption, playlist.Items.Strings[playlist.ItemIndex]); |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Delphi-Hilfe:
"Die Funktion [Concat] verknüpft mehrere Strings zu einem einzigen String." Ich sehe nicht, wie mir eine Verknüpfung zweier Strings weiterhelfen sollte. |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Zitat:
|
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Hai Aike,
versuche es doch mal so:
Delphi-Quellcode:
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; |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Perfekt. Vielen Dank! :cheers:
|
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Geht der Code auch, wenn die Listbox mehr EInträge hat, sodass man sie scrollen kann?
Ich habe mir das ein wenig anders geschrieben und musste TopItem mit einbauen(zeigt beim runterscrollen das oberste Element an) Oder macht die ItemAtPoint Prozedur das eigenständig? |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Hai CLRS530,
Zitat:
Aber ich kann es ja auch sagen. -> Jup es geht. ItemAtPos benutzt intern nämlich auch wieder TopIndex zur Berechnung. |
Ja, das hat gut funktioniert, aber jetzt wird's noch 'n bisschen komplizierter:
Das selbe soll jetzt auch funktionieren, wenn ich eine Datei auf die Listbox droppe. Da muss zwar kein PopUp kommen, sondern nur 'ne showmessage(), in WMDropFiles() kann ich leider deine Funktion nicht benutzen (hat zumindest bei mir nicht geklappt). Es muss eigentlich nur wieder auf das Item "geklickt" werden. Ah, ich werd noch zum Hirsch. Weder OnDragOver, OnDropDown, noch OnEndDrop liefern mir was Anständiges. :pale: |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Wenn du da was reindroppst, dann wird das doch an die letze stelle eingefügt oder?
|
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Ich will nicht, dass es der Liste hinzugefügt wird, sondern dass der Name des Eintrages, der sich unter der Maus befindet, in einer showmessage() zum Vorschein kommt.
|
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Zitat:
nur um es zu verstehen: Du hast also eine Listbox in der steht:
Wenn Du nun vom Explorer aus eine Datei über z.B. "meow" ziehst und droppst soll in einer MessageBox das "meow" stehen? Wenn ja: Was soll den mit der Datei passieren? |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
hihi, ok, dann ausführlich:
In der Listbox stehen einige Einträge, hinter denen sich Programm(pfad)e verbergen. Das über die Listbox gezogene Item soll nun mit dem Programm gestartet werden, über dem es fallen gelassen wurde. "Wenn Du nun vom Explorer aus eine Datei über z.B. "meow" ziehst und droppst soll in einer MessageBox das "meow" stehen?" - Quasi, ja :-) Den Rest schaffe ich (hoffentlich) alleine. |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Liste der Anhänge anzeigen (Anzahl: 1)
Guckst Du im Anhang ;-)
|
Zitat:
Dafür musst du dne Code nur leicht modifizieren, denn bei Drag Over hast du X und Y, jedoch kein mrright, welches du auch garnicht brauchst
Delphi-Quellcode:
Das müsste das sein was du willst.
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); var cursorpos : TPoint; ndx : integer; begin cursorpos.X := X; cursorpos.Y := y; ndx := ListBox1.ItemAtPos(cursorpos,true); // Item unter dem Cursor if (ndx <> -1) then ShowMessage(Listbox1.Items[ndx]) end; Wobei dämlich ist, da an diese Stelle ne SHowmessage auszuführen, aber das kannst du ja ändern, was auch immer du da hinwillst. EDIT: da war ich wohl zu langsam, ich lasse das hier aber trotzdem mal stehen :) |
Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:13 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-2025 by Thomas Breitkreuz