Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
21. Okt 2017
Keine Ahnung, ob ich das richtig verstanden habe, aber kannst du der Methode X nicht einen zusätzlichen Parameter mitgeben, der das Popupmenü angibt? Im OnSelectItem übergibst du einfach nil und im OnPopup dann (Sender as TPopupMenu). Kannst du dir gesamte Mimik mit WndProc und geerbten Klassen dann nicht einfach sparen?
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
21. Okt 2017
Prüf doch mal die Reihenfolge der Aufrufe im Debugger. Eventuell kommt die WM_INITMENUPOPUP Message ja erst nach dem DoPopup.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
20. Okt 2017
Nur so 'ne Idee: Du könntest auch in der WndProc auf WM_INITMENUPOPUP (Sent when a drop-down menu or submenu is about to become active.) reagieren und das aktuelle PopupMenu anhand des Handles suchen. Dann sparst du dir die Ableitung von TPopupMenu ganz:
case message.msg of
WM_INITMENUPOPUP:
begin
for I := 0 to Count - 1 do begin
if TPopupMenu(Items).Handle =...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
20. Okt 2017
procedure TPopupMenu.Popup(X, Y: Integer);
begin
// TPopupListEx(PopupList).PopupMenu := Sender as TPopupMenu; // wie komme ich hier an den Sender?
TPopupListEx(PopupList).PopupMenu := Self; // So! Schau mal in den Original-Code von TPopupMenu.Popup...
inherited;
end;