Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-04-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Lightbulb Conocer el componente que lanza un popup

Tengo creado un tScrollBox que contiene varios objetos tjvStaticText, a esos objetos (los tjvStaticText) les asigno un popupmenu que a su vez contiene los menus asociados a Taction, cuando ejecuto el método taction.execute como puedo saber cual de los objetos tjvStaticText lanzó el popup.

OJO: todo esos componentes los creo en tiempo de ejecución.

Pensé que debia usar el (sender) así:

Código Delphi [-]
procedure Tform.AccionExecute(Sender: TObject);
begin
If Sender is tjvStaticText Then
   EjecutarProcedimiento(tjvStaticText(sender).tag);
end;

Pero al probar resulta que "sender" no es tjvStaticText (es un tAction ), como puedo saber dentro el execute de la acción que objeto desplegó el popup

Acepto ideas y sujerencias ya que no tengo la menor idea de como resolver esto, muchas gracias.
__________________
Sitrico

Última edición por sitrico fecha: 11-04-2007 a las 01:45:53.
Responder Con Cita
  #2  
Antiguo 11-04-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Sigo sufriendo...

La clase TAction tiene la propiedad: ActionComponent que segun dice la ayuda de Delphi:

Cita:
Description

Use ActionComponent to discern which client component caused this action to execute. For example, examine ActionComponent from an OnExecute event handler if you need to know what user action triggered this action.

When the user clicks a client control, that client sets ActionComponent before calling the action’s Execute method. After the action executes, the action resets ActionComponent to nil (Delphi) or NULL (C++).
Deberia apuntar al componente que llamó la acción: el TMenuItem !!!!!

Un componente que no puede tener el foco podrá lanzar eventos???
__________________
Sitrico
Responder Con Cita
  #3  
Antiguo 11-04-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
La desesperaciónera tal que buscando en un foro EN RUSO :

http://www.sql.ru/forum/actualthread.aspx?tid=395220

encontré esto:

Código Delphi [-]
TPopupMenu(TMenuItem(TAction(Sender).ActionComponent).GetParentComponent).PopupComponent

Que parece ser el componente que realmente inicio la acción.

Despues de las pruebas de rigor FUNCIONA

Quedó así:

Código Delphi [-]
procedure TfCitas.acEnviarAListaEsperaExecute(Sender: TObject);
begin
If TPopupMenu(TMenuItem(TAction(Sender).ActionComponent).GetParentComponent).PopupComponent is TSNMCCita Then
   Begin
   With TSNMCCita(TPopupMenu(TMenuItem(TAction(Sender).ActionComponent).GetParentComponent).PopupComponent) do
      Lista.EnviarAListadeEspera(IdArea,IdPaciente,IdCita);
   JvClock1Alarm(Sender);
   End;
end;
__________________
Sitrico

Última edición por sitrico fecha: 11-04-2007 a las 05:42:54.
Responder Con Cita
Respuesta



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
Adobe Lanza plataforma de desarrollo nightynvid Noticias 0 08-03-2007 17:38:23
Yahoo lanza un buscador de podcasts y se lanza a competir con itunes Sasuke_Cub Noticias 0 12-10-2005 19:45:11
La v del popup REHome OOP 3 06-10-2005 14:23:17
Opera lanza la versión 8.0 de su navegador marcoszorrilla Noticias 2 26-04-2005 11:10:23
Ventanas PopUp Emergentes??? Rabata Varios 3 05-03-2005 19:02:38


La franja horaria es GMT +2. Ahora son las 06:49:26.


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