Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 29-06-2012
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 22
movorack Va camino a la famamovorack Va camino a la fama
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 [-]
..

//Agregué el tipo de dato a la unidad
TKplProc = procedure (Sender : TObject) of object; //Lo de KPL es solo por el estandar de la empresa

..

//En la unidad agregué una variable para el ejercicio
FStTonteria : String; //En el OnCreate asigné a esta variable el valor 'Tonteria'

..

//Agregué un botón que hace una tonteria
procedure TFrmTestPlanEjecD5.BtnTontoClick(Sender: TObject);
begin
  ShowMessage(FStTonteria);
end;

//Y por ultimo agregué este codigo en otro boton donde alfin obtuve el nombre del procedimiento.
procedure TFrmTestPlanEjecD5.BtnProcClick(Sender: TObject);
  var
    lProc : TKplProc;
begin  
  lProc := BtnTontoClick;
  FStTonteria := MethodName(@lProc);
  lProc(BtnTonto); //Esto me llama el otro procedimiento y el resultado es un mensaje diciendo BtnTontoClick
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; //Esto lo publique solo para hacer pruebas en el aplicativo
  end;

  ..

  procedure TKPlAccionItem.SetEvento(const Value: TKPlAccionProc);
  begin
    FEvento := Value;
    FNomEve := MethodName(@Value); //Aquí el codigo tal cual lo hago en el programa de pruebas
  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; //Aquí efectivamente llama al SetEvento del componente y aunque ejecuta el MethodName no devuelve el nombre
  lNomEve := MethodName(@lAccion.Evento); //En cambio este MethodName si obtiene el nombre del procedure
  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".
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
String a Cadena de Bytes a cadena Hexadecimal ruedabeat2003 Varios 2 11-01-2012 02:04:06
Convertir cadena aleatoria en cadena de N caracteres DANY OOP 3 12-03-2009 20:49:21
Funcion para borrar la cadena que aparesca repetida dentro de otra cadena flystar Varios 1 02-07-2007 23:51:10
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Buscar cadena dentro de otra cadena doverzhoff Varios 4 27-01-2004 05:27:15


La franja horaria es GMT +2. Ahora son las 14:45:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi