![]() |
Popupmenü implementieren
Hallo!
Ich sitze mit Delphi 12.2 an einer Android-App, die ein Popupmenü erhalten soll, das über den Button "BMenu" aufgerufen werden soll, sein Erscheinen aber verweigert. Das Popupmenü erstelle ich in Form.create wie folgt:
Delphi-Quellcode:
Im onClick des Button steht:
var
a:integer; Item:TMenuItem; begin npop1:=TCustomPopupmenu.Create(self); npop1.Parent := BMenu; // auch Form getestet for a := 1 to 3 do begin item := TMenuItem.Create(nPop1); with item do begin name := 'item'+inttostr(a); tag := a; text := inttostr(a); onclick := PopupMenuItemsClick; end; nPop1.AddObject(item); end; //nPop1.Popup(100,100); auskommentiert, da App sonst nicht startet BMenu.PopupMenu := nPop1;
Delphi-Quellcode:
Der Klick auf den Button führt zur Fehlermeldung "Abstrakter Fehler.". Wenn ich "nPop1.Popup(100,100)" auskommentiere bekomme ich keine Fehlermeldung, aber auch sonst tut sich nichts.
nPop1.Popup(100,100); //auch auskommentiert
nPop1.BringToFront; Was muss ich tun? |
AW: Popupmenü implementieren
Delphi-Quellcode:
var
a: Integer; Item: TMenuItem; begin npop1 := TPopupMenu.Create(self); for a := 1 to 3 do begin item := TMenuItem.Create(nPop1); item.Name := 'item' + IntToStr(a); item.Tag := a; item.Caption := IntToStr(a); item.OnClick := PopupMenuItemsClick; nPop1.Items.Add(item); end; end; |
AW: Popupmenü implementieren
Korrekt!
In TCustomPopupMenu ist Popup abstrakt:
Delphi-Quellcode:
TCustomPopupMenu = class(TFmxObject)
private [Weak] FPopupComponent: TComponent; FOnPopup: TNotifyEvent; protected procedure DoPopup; virtual; property OnPopup: TNotifyEvent read FOnPopup write FOnPopup; public procedure Popup(X, Y: Single); virtual; abstract; property PopupComponent: TComponent read FPopupComponent write FPopupComponent; end; |
AW: Popupmenü implementieren
Ist TCustomPopUpMenu überhaupt eine zulässige Klasse auf Android? Ich frage, weil das normale TPopUpMenu dies NICHT ist (und in der Komponentenpalette dementsprechend ausgegraut ist auf Android).
Wenn ich mich nicht irre, gibt es für die mobile Entwicklung nur PopUp-Komponenten, aus denen man sich selbst ein Menü bauen muss. Sollte dem so sein, werfe ich als Alternative mal die TMultiView in den Raum, bei der man die "Mode" auf "PopOver" setzen kann. Diese verwende ich als PopUp-Komponente in meinen Apps, da sie einige nützliche Funktionen mit sich bringt, wie z.B. dass sie automatisch bei der eingestellten Masterkomponente aufpoppt. Es gibt wohl auch TPopup, habe ich aber bisher nicht verwendet. |
AW: Popupmenü implementieren
Zitat:
|
AW: Popupmenü implementieren
Zitat:
|
AW: Popupmenü implementieren
Zitat:
Delphi-Quellcode:
Üblicher ist aber das Hamburger-Menü als Seitenmenü zu verwenden. Das geht mit TMultiView wie von AuronTLG bereits erwähnt (MultiView1.ShowMaster, MultiView1.HideMaster, ...).
Popup1.PlacementTarget := Button1;
Popup1.IsOpen := not Popup1.IsOpen; |
AW: Popupmenü implementieren
Ich danke Euch. Dann werde ich mich mal mit TMultiView versuchen. "Hamburger-Menü" klingt ungesund - Burger, Pommes und zuckrige Cola.
|
AW: Popupmenü implementieren
Zitat:
|
AW: Popupmenü implementieren
Zitat:
Aber im Ernst: Das Wort Hamburger bezieht sich tatsächlich nur auf die Scheiben eines Hamburgers, weil das Symbol zum Aufrufen aus den drei horizontalen Strichen besteht. Hier findest du übrigens Erklärungen und vor allem Screenshots zu den Möglichkeiten der TMultiView: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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