Also, zur Vorsache:
Ich hab eine ListBox, dort popt ein PopUpmenu bei Rechtsklick mit diversen
Informationen enthalten auf. z.B. u.a. der TEXT der aktuellen Eintrags.
Ich habe dann ein paar Zeilen Code hinzugeschrieben, damit man die Einträge
ganz bequem nach OBEN und UNTEN verschieben kann (via PopUpmenu).
So, klicke ich aber Rechtsklick auf einen Eintrag, so ist der Focus ja NICHT mehr
auf dem Eintrag (keine selektierung) sondern auf dem PopUpmenu.
So habe ich es gelöst, dass das PopUpMenu auftaucht und der Eintrag trotzdem markiert wird.
Ich hoffe der Code ist nicht allzu eckelhaft.
Delphi-Quellcode:
procedure TForm1.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
{var
P: TPoint;} // weggenommen, da oben ja MousePos steht
begin
ListBox1.Perform(WM_LBUTTONDOWN,0,0); // Auf Eintrag klicken (simulieren)
ListBox1.Perform(WM_LBUTTONUP,0,0); // loslassen
GetCursorPos(MousePos); // Cursorposition emritteln
PopUpMenu1.Popup(MousePos.X,MousePos.Y); // und schließlich PopUpMenu genau wo die Maus ist anzeigen
end;
Jedoch hat das alles einen Nachteil:
Das PopUpmenu verschwindet nicht mehr wenn man einen Eintrag geklickt hat