Dlaczego w TMenuItem.OnClick, parametr Sender jest nilem?

0

Witam,
Nie mogę zrozumieć dlaczego po kliknięciu w MenuItem Sender jest przekazany nil?
Powinna być pozycja z menu, to jest potrzebne do stwierdzenia kto ją wywołał.
Dziękuje za wskazówkę i pozdrawiam
Piotr

2

skąd taki wniosek że Sender=nil ?
sprawdziłem prostym kodem i Sender jest obiektem klasy TmenuItem

 if assigned(Sender) then
    if Sender IS TMenuItem then
      showmessage('Sender is TmenuItem ..');
0

Jeśli w dfm masz poprawnie podpięte zdarzenie onClick do TMenuItem, a w danym itemie masz taki kod:

procedure TForm1.DUPA1Click(Sender: TObject);
begin
    ShowMessage(Sender.ClassName);
end;

To musi Ci się pokazać TMenuItem. Jednakże jeśli masz to zrobione w ten sposób:

procedure TForm1.Button1Click(Sender: TObject);
begin
   DUPA1Click(nil);
end;

czyli ręcznie wywołujesz zdarzenie (a dokładnie procedurę pod zdarzeniem) to oczywiście Sender będzie nil. Innego wytłumaczenia nie ma jak to, że nie podpiąłeś pod event tylko ręcznie wywołujesz prockę. Niestety bez kodu to niewiele więcej mogę podpowiedzieć.

0

Dziękować! sprawdzałem w pracy krokowej i po najechaniu na zmienną widziałem Sender ().

1 użytkowników online, w tym zalogowanych: 0, gości: 1