me retracto de lo que dije...
haciendo pruebas, vi que
Código Delphi
[-]AsignaExecute(baSearch, nil, True);
tampoco funciona, y creo saber por que es...
Cuando usas overloading de funciones o procedimientos, para saber cual de todos los AsignaExecute tiene que usar, Delphi busca por cantidad y
tipo de los parametros que le pasas y los compara con la cantidad y tipo de los parametros de las distintas declaraciones de AsignaExecute... y cual es el tipo de
nil ?? bueno, creo que por ahi viene la mano
No estoy seguro de cual es el tipo de nil, porque no lo dice especificamente en la ayuda, solo dice que es una contante que se puede asignar a cualquier puntero, asi que podria ser Pointer, y en ese caso cuando busca que AsignaExecute debe ejecutar, estaria buscando una declaracion mas o menos asi:
Código Delphi
[-]
Procedure AsignaExecute(Param1:TButtonAction; Param2:Pointer); overload;
y no la encuentra, por eso el error.
Esto es una consecuencia de usar overloading de funciones o procedimientos, que no pasaria si el procedimiento no estuviese sobrecargado (overload).
Asi que vas a tener que asignar nil a una variable como le venis haciendo, si queres usarlo de esta forma.
Tambien existe otra alternativa, y es usar valores por defecto en los parametros:
en ves de hacer overloading declaras un solo procedimiento con un valor por defecto para el ultimo parametro:
Código Delphi
[-]Procedure AsignaExecute(MyBtnAction:TButtonAction; MyExecute:TNotifyEvent; bMostrar:Boolean = FALSE);
y lo usas asi:
Código Delphi
[-]
AsignaExecute(baSearch, nil); AsignaExecute(baSearch, nil, True);
MyExecute := Nil;
AsignaExecute(baSearch, MyExecute); AsignaExecute(baSearch, MyExecute, True);
es otra opcion que te puede servir o no, pero te la dejo para que la mires
Saludos