Delphi-PRAXiS
Seite 2 von 2     12   

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/)
-   -   Von welcher Komponente kommt popup-Aufruf (https://www.delphipraxis.net/184899-von-welcher-komponente-kommt-popup-aufruf.html)

idefix2 29. Apr 2015 12:16

AW: Von welcher Komponente kommt popup-Aufruf
 
@himitsu
Danke, so funktioniert es.
Wenn man daran denkt, ist es natürlich klar, dass Popupcomponent bei programmgesteuerten Aufruf des Popupmenüs nicht gesetzt sein kann, weil es in dem Fall ja gar keine Komponente gibt, die beim angeklickt werden das Popupmenu "auslöst".

@Sir Rufo
Ja, das wäre noch besser - kommt etwas weiter hinten auf meine to-do-list, jetzt bin ich einmal froh, dass es überhaupt funktioniert.

Sir Rufo 29. Apr 2015 12:48

AW: Von welcher Komponente kommt popup-Aufruf
 
Das ist eigentlich recht simpel
Delphi-Quellcode:
procedure TForm1.ListBox1ContextPopup( Sender: TObject; MousePos: TPoint; var Handled: Boolean );
var
  LIdx: Integer;
begin
  // Item-Index bestimmen
  LIdx := TListBox( Sender ).ItemAtPos( MousePos, True );
 
  if LIdx >= 0 then
  begin
    // ItemIndex setzen
    TListBox( Sender ).ItemIndex := LIdx;
  end
  else
    // kein Popup anzeigen
    Handled := True;
end;

idefix2 29. Apr 2015 14:23

AW: Von welcher Komponente kommt popup-Aufruf
 
Naja, fast so simpel, obwohl du im Prinzip Recht hast. Im den Popupmenüs sind ja neben item-spezifischen Einträgen auch solche, die immer anwählbar sein sollen, auch bei leerer Listbox, und es sind mehrere verschiedene Listboxen mit verschiedenen Einträgen, um die ich mich kümmern muss - in Summe, bis alles gründlich getestet ist, wird wohl eine gute Stunde draufgehen, um das umzustellen.


Im Moment muss ich schauen, dass das Programm so rasch wie möglich als Ganzes funktioniert, und in diesem Bereich verhält es sich jetzt auch in allen Sonderfällen genau, wie es soll. Das rühr ich erst wieder an, wenn ich etwas Luft habe :-D

Sir Rufo 29. Apr 2015 14:39

AW: Von welcher Komponente kommt popup-Aufruf
 
Auch wenn es für später ist:

Ich hoffe du verwendest eine ActionList und hast darüber die MenuItems dem PopupMenu hinzugefügt. Dann geht das recht fix. Die Actions beziehen sich ja immer auf einen Kontext. Wenn du dir jetzt den aktuellen Kontext irgendwo merkst, dann können die Actions das selber auswerten Delphi-Referenz durchsuchenTAction.OnUpdate und dabei ihren Status anpassen (Enabled/Visible) abhängig vom gewählten Kontext.

Das würde natürlich auch bedeuten, dass du nicht einfach nur Strings in der ListBox hast, sondern es zu jedem Eintrag auch eine passende Instanz, eben dieser besagte Kontext.

Dann passiert das alles quasi wie von Geisterhand ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr.
Seite 2 von 2     12   

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