Ver Mensaje Individual
  #5  
Antiguo 03-07-2012
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 22
movorack Va camino a la famamovorack Va camino a la fama
Bueno... a la final no encontré una forma de obtener el nombre dentro del componente y pues agregué al componente un procedimiento para procesar los nombres de las acciones dentro del formulario. Que ahí si funcionaba el obtener el nombre a partir del TNotifyEvent.

En el componente:
Código Delphi [-]
type
  ..
  TKplOnGetNomAcciones = procedure(Sender : TObject; var Acciones : TKPlAccionList) of object;
  ..
  
  TKPlGenDefi = class(TComponent)
  private
    ..
    FAcciones: TKPlAccionList;
    FOnGetNomAcciones: TKplOnGetNomAcciones;
    procedure SetOnGetNomAcciones(const Value: TKplOnGetNomAcciones);
    ..
  published
    ..
    property OnGetNomAcciones : TKplOnGetNomAcciones read FOnGetNomAcciones write SetOnGetNomAcciones;
    ..
  end;

..
Implementation
..

procedure TKPlGenDefi.GenerarDefinicion;
begin
  ..
  //Para obtener el nombre de la acción se debe estar en la unidad
  //donde se encuentra definido ya que desde el componente no
  //se obtiene el nombre.
  if Assigned(FOnGetNomAcciones) then
    FOnGetNomAcciones(Self, FAcciones);
  ..
end;

y en el programa de pruebas:
Código Delphi [-]
procedure TFrmTestPlanEjecD5.KPlGenDefiGetNomAcciones(Sender: TObject; var Acciones: TKPlAccionList);
  var
    i : Integer;
begin
  for i := 0 to Acciones.Count - 1 do
  begin
    if Assigned(Acciones.Items[i].Evento) then
      Acciones.Items[i].NomEve := MethodName(@Acciones.Items[i].Evento);
  end;
end;

De esta manera, ya tengo el nombre de la acción y la podré llevar al XML como lo he intentado desde la semana pasada.

Muchas gracias Lepe por tu colaboración.

Me queda la duda porque desde el componente nunca pude obtener el nombre.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita