Es gibt leider ein neues komisches Problem
Wenn man das Popupmenu wie folgt sucht sollte es eigentlich der Variablen zugewiesen werden
Delphi-Quellcode:
WM_INITMENUPOPUP: // PopupMenu anhand des Handles finden
begin
for i := 0 to Count - 1 do
begin
if TPopupMenu(Items[i]).Handle = TWMInitMenuPopup(Message).MenuPopup then
begin
PopupMenu := TPopupMenu(Items[i]);
Break;
end;
end;
end;
Wenn ich in einer anderen
Unit nun etwas teste, bekomme ich 'X' nie zu sehen, obwohl die
Unit korrekt in den uses steht. Stattdessen sehen ich "nil":
Delphi-Quellcode:
// Steht im OnPopup meines PopupMenus
if TPopupListEx(PopupList).PopupMenu = nil then
ShowMessage('nil')
else if TPopupListEx(PopupList).PopupMenu = FrmMain.PopupMenu2 then
showmessage('X');
Selbst mein alter Code mit procedure DoPopup(Sender: TObject); override; funktioniert jetzt nicht mehr und DoPopup wird nie aufgerufen. Das ist mehr als seltsam. Mal funktioniert das, mal nicht, obwohl ich doch nur wissen möchte, welches das aktuell geöffnete PopupMenu ist ...
Noch seltamer: jetzt bekomme ich nicht mal mehr diese Showmessage angezeigt
Delphi-Quellcode:
procedure TForm1.PopupMenu2Popup(Sender: TObject);
begin
showmessage('Popup');
...
end;