Sorry, but I'm not sure I understand your comment. What do you mean by one/two pointer types? The problem I see is an incompatibility between (static) class methods and callback variables. Thanks for the further explanations.
There are multiple callbacks types. e.g.
type
TAProcedureCallback = procedure (parameter:TParametertype);
and
TAMethodCallback = procedure (parameter:TParametertype) OF OBJECT;
A VCL callback like onclick is a TAMethodCallback kind of callback and implemented internally with TWO pointers. One for the address of the code (method) to call, and one for the object reference.
While the documented static method compatibility is only with the TAProcedure kind, which is ONE pointer internally. (the address of the code (procedure or static method) to call.
In this nomenclature, a method is a procedure that is not static within an object e.g.
Type
type TBLa = class
procedure thisisamethod;
end;