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 Generelle Code-Frage zu ListBox/Markierung etc (https://www.delphipraxis.net/99701-generelle-code-frage-zu-listbox-markierung-etc.html)

Tommy1988 16. Sep 2007 11:23


Generelle Code-Frage zu ListBox/Markierung etc
 
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 :?

marabu 16. Sep 2007 17:22

Re: Generelle Code-Frage zu ListBox/Markierung etc
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Tommy,

Zitat:

Zitat von Tommy1988
... Ich hab eine ListBox, dort popt ein PopUpmenu bei Rechtsklick mit diversen
Informationen enthalten auf. z.B. u.a. der TEXT der aktuellen Eintrags. ...

ein PopupMenu ist ein Kentextmenü und soll dem Benutzer die für das verknüpfte Objekt genau die verfügbaren Aktionen anbieten - Informationen gehören da nicht hin, die kannst du in der Eigenschaft Hint der ListBox unterbringen.

Zitat:

Zitat von Tommy1988
... Ich habe dann ein paar Zeilen Code hinzugeschrieben, damit man die Einträge ganz bequem nach OBEN und UNTEN verschieben kann (via PopUpmenu). ...

Bequem fände ich es, wenn man einen Eintrag direkt mit Maus oder Tastatur verschieben könnte.

Zitat:

Zitat von Tommy1988
... So, klicke ich aber Rechtsklick auf einen Eintrag, so ist der Focus ja NICHT mehr
auf dem Eintrag (keine selektierung) sondern auf dem PopUpmenu. ...

Der Benutzer markiert üblicherweise zuerst ein Item mit Maus oder Tastatur, bevor er es verschiebt. Oder möchtest du das Selektieren mit der rechten Maustaste erledigen lassen?

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 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