Przypianie zdarzenia do dynamicznie tworzonego komponentu

0

Chciałem przypisać zdarzenie dla komponentu tworzonego dynamicznie:

Najpierw array of TLabel:

var
  ObjLabArr : array[1..20] of TLabel;

for i:=  0 to 4 do
begin
  ObjLabArr[i]:=TLabel.Create(Form2);
  ObjLabArr[i].OnMouseEnter:= JakasProcedura; 
end;

a potem pojedynczy komponent,

Obj:=TLabel.Create(Form2);
Obj.OnMouseEnter:= jakasProcedura;

W obu przypadkach kompilator zgłasza ten sam błąd:

[DCC Error] Unit2.pas(59): E2009 Incompatible types: 'method pointer and regular procedure'

Co trzeba zmienić???
Jak naprawić?

0

Aby móc wykonać poniższe przypisanie:

Obj.OnMouseEnter:= jakasProcedura;

ta jakasProcedura musi po pierwsze być metodą klasy, a po drugie, musi posiadać jeden parametr typu TObject (czyli być parametrowo zgodna z typem TNotifyEvent). Tak więc zadeklaruj sobie w klasie odpowiednią metodę:

private
  procedure MyOnMouseEvent(Sender: TObject);

i przypisz ją do zdarzenia:

Obj.OnMouseEnter := MyOnMouseEnter;
0

Coś mi się kojarzy, że jeszcze małpa jest potrzebna.

0

@babubabu: w Delphi nie, we Free Pascalu tak (ten wymaga jawnego adresu metody).

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