Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi OnClick vom MenuItem, während der Laufzeit erzeugt, Sender = nil ? (https://www.delphipraxis.net/158725-onclick-vom-menuitem-waehrend-der-laufzeit-erzeugt-sender-%3D-nil.html)

stho 28. Feb 2011 13:48

OnClick vom MenuItem, während der Laufzeit erzeugt, Sender = nil ?
 
Ich erzeuge zur Laufzeit mehrere Items und übernehme diese in ein Popup.
Soweit so gut, das zugewiesene OnClick-Event wird auch aufgerufen, jedoch ist
sender immer nil...
Woran kann das liegen?

P.S.
Es handelt sich hierbei um einen Konsolenanwendung OHNE jegliche Form.
Das Popup wird über das TrayIcon dargestellt.


Delphi-Quellcode:
  aItem           := TMenuItem.Create(nil);
  aItem.Name      := 'Item_Test';
  aItem.Caption   := 'Test';
  aItem.Tag       := 1;
  @aItem.OnClick  := @OnMyClick;
  aPopup.Items.Add(aItem);
---

Delphi-Quellcode:
procedure OnMyClick(Sender: TObject);
begin
  if sender = nil then // HIER springt er immer rein...
    exit;
 
  case TMenuItem(Sender).Tag of
    0: begin // 

    end;
    1: begin // 

    end;
    2: begin // 

    end;
  end;
end;

DeddyH 28. Feb 2011 13:54

AW: OnClick vom MenuItem, während der Laufzeit erzeugt, Sender = nil ?
 
OnClick ist vom Typ TNotifyEvent, also darf es keine reguläre Prozedur, sondern muss eine Methode sein, d.h. zu einer Klasse gehören. Zur Not erstell Dir eine Dummy-Klasse mit dieser Property und weise die dann zu.

hoika 28. Feb 2011 14:17

AW: OnClick vom MenuItem, während der Laufzeit erzeugt, Sender = nil ?
 
Hallo,

da eine Methode immer einen ersten unsichtbaren Parameter hat,
klappt viell.

Delphi-Quellcode:
procedure OnMyClick(Dummy: Pointer; Sender: TObject);

Heiko


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