Muchas gracias por tu respuesta.
Estoy haciendo pruebas para poder implementar en el componente lo que llegué a conseguir con los datos que me haz pasado.
Código Delphi
[-]
..
TKplProc = procedure (Sender : TObject) of object;
..
FStTonteria : String;
..
procedure TFrmTestPlanEjecD5.BtnTontoClick(Sender: TObject);
begin
ShowMessage(FStTonteria);
end;
procedure TFrmTestPlanEjecD5.BtnProcClick(Sender: TObject);
var
lProc : TKplProc;
begin
lProc := BtnTontoClick;
FStTonteria := MethodName(@lProc);
lProc(BtnTonto); end;
..
Hasta ahora, en el programa de pruebas funciona. pero cuando aplico el mismo código en el componente no funciona.
Código Delphi
[-]
TKPlAccionProc = procedure(Sender : TObject) of object;
TKPlAccionItem = class(TCollectionItem)
private
FNombre : String;
FForma : TForm;
FEvento : TKPlAccionProc;
FNomEve : string;
procedure SetNombre(const Value: String);
procedure SetEvento(const Value: TKPlAccionProc);
procedure SetForma(const Value: TForm);
function GetForma: TForm;
protected
function GetDisplayName : String; override;
public
procedure Assign(Source: TPersistent); override;
published
property Nombre : String read FNombre write SetNombre;
property Forma : TForm read GetForma write SetForma;
property Evento : TKPlAccionProc read FEvento write SetEvento;
property NomEve : string read FNomEve write FNomEve; end;
..
procedure TKPlAccionItem.SetEvento(const Value: TKPlAccionProc);
begin
FEvento := Value;
FNomEve := MethodName(@Value); end;
..
Y en el programa de pruebas tengo
Código Delphi
[-]
procedure TFrmTestPlanEjecD5.BtnAddAccionClick(Sender: TObject);
var
lAccion : TKplAccionItem;
lNomEve : string;
begin
lAccion := KPlGenDefi.Acciones.Add;
lAccion.Nombre := 'AccionTonta';
lAccion.Evento := BtnTontoClick; lNomEve := MethodName(@lAccion.Evento); ShowMessage(Format('lAccion.NomEve : %s -- lNomEve : %s',
[QuotedStr(lAccion.NomEve),
QuotedStr(lNomEve)]));
end;
La verdad no se que estoy pasando por alto al implementar en el componente pero no logro obtener el resultado desde la variable del componente pero la variable local
lNomEve si muestra el nombre correspondiente "BtnTontoClick".