AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Rechtsklick auf Listbox öffnet PopUp "ohne Linksklick"
Thema durchsuchen
Ansicht
Themen-Optionen

Rechtsklick auf Listbox öffnet PopUp "ohne Linksklick"

Ein Thema von Aike · begonnen am 2. Aug 2005 · letzter Beitrag vom 4. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#1

Rechtsklick auf Listbox öffnet PopUp "ohne Linksklick&q

  Alt 2. Aug 2005, 10:21
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 hier schonmal angesprochen, aber leider keine Lösung gefunden. Das Problem ist, dass, egal wo ich auf der Listbox rechtsklicke, das PopUpMenu immer zum letzten Eintrag gehört, der linksgeklickt wurde. (Ich hoffe, das war verständlich )
Es soll quasi so aussehen:
Delphi-Quellcode:
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;
Das Problem kann nicht so schwer zu beheben sein, schätze ich, aber ich komm nicht drauf, was man da machen könnte

Liebe Grüße
Aike
Achim
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#2

Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli

  Alt 2. Aug 2005, 10:25
Du könntest es einfah markieren. So eine Art selected.
Beispiel:
Delphi-Quellcode:
var mp3file : string;
begin
  mp3File := Concat(txtFolder.Caption, playlist.Items.Strings[playlist.ItemIndex]);
Du musst es anpassen. TxtFolder = StaticText.
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#3

Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli

  Alt 2. Aug 2005, 10:33
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.
Achim
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#4

Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli

  Alt 2. Aug 2005, 10:36
Zitat von Nils_13:
Du könntest es einfah markieren. So eine Art selected.
Du musst es anpassen. TxtFolder = StaticText.
Du musst es ja auch anpassen, wie du es brauchst txtFolder kannst du dir sparen. Evtl. kannst du auch etwas mit integer Werten anfangen.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli

  Alt 2. Aug 2005, 10:39
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#6

Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli

  Alt 2. Aug 2005, 10:44
Perfekt. Vielen Dank!
Achim
  Mit Zitat antworten Zitat
CLRS530

Registriert seit: 27. Jun 2005
Ort: Hamburg
39 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli

  Alt 3. Aug 2005, 14:03
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?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli

  Alt 3. Aug 2005, 16:59
Hai CLRS530,

Zitat von CLRS530:
Geht der Code auch, wenn die Listbox mehr EInträge hat,...
Ich könnte jetzt ja sagen : "Versuche es doch einfacht"
Aber ich kann es ja auch sagen. -> Jup es geht. ItemAtPos benutzt intern nämlich auch wieder TopIndex zur Berechnung.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#9
  Alt 4. Aug 2005, 09:09
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.
Achim
  Mit Zitat antworten Zitat
CLRS530

Registriert seit: 27. Jun 2005
Ort: Hamburg
39 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Rechtsklick auf Listbox öffnet PopUp "ohne Linkskli

  Alt 4. Aug 2005, 09:50
Wenn du da was reindroppst, dann wird das doch an die letze stelle eingefügt oder?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.
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