How can events be added to frames?

I want to add an OnFileClick event, that reacts on an click into a
listbox in the frame. The new event is typed as
  TOnFileClick = procedure(Sender: TMyFrame; p,d: string) of object;
and the handler in the frame provides the strings and calls the assigned
FOnFileClick handler.

How do I make this new event appear in the Object Inspector?


Since the event is not available in the OI, I assign an handler in code.
Now I get an crash on entry of the handler. The code in the frame, which
calls the handler, is never executed. Instead the original event
(listbox1.OnClick) seems to call the user handler immediately[1], with a
wrong argument list (without the added strings) - boom :-(

The latter problem can be cured by removing and adding the frame to the
form again, but this is not a practical workaround, because then all
property settings of the frames are lost.


[1] Since I have two such frames in my form, I inspected the form.lfm for the not removed/added frame, and find explicit Nil assignments to the events in the frame (OnClick, OnDblClick), where the frame installs its own handlers! Removing these entries from the lfm makes that frame work as expected, even without removing and adding to the form again.


Should I create one or more bug reports?

DoDi


--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to