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 27-02-2009
astwin astwin is offline
Miembro
 
Registrado: feb 2009
Posts: 21
Poder: 0
astwin Va por buen camino
Clase que contiene una Timage

Hola, tengo un pequeño problema. Tengo una clase, la cual posee un objeto del tipo Timagen. Cuando un objeto de la clase que me e definido le asigno como parent un panel a la imagen para que se muestre en el. El problema reside en cuando pulso con el raton encima de la imagen, y es que el sender resulta ser el Timage y quiero poder acceder al objeto el cual contiene esta Timage.

Código Delphi [-]
// Mi clase que contiene un objeto Timage
type TgraphBlock=class(Tpersistent)
  public
    image: Timage;
    dato:integer;
end;
//...

// Funcion que le asigno al evento onMouseDown del Timagen
procedure TgraphBlock.ImageMouseDown(Sender: TObject; Button:TMouseButton;  Shift: TShiftState; X, Y: Integer);

begin
  if Button = mbLeft then
    with Sender as TImage do
    begin
      // Cómo podría acceder ahora al dato si tengo una referencia al Timage, no al objeto del tipo TgraphBlock

    end;
 
end;

Si pudieran ayudarme les estaria muy agradecido
Responder Con Cita
  #2  
Antiguo 27-02-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cuando creas el TImage asígnale como owner tu objetoTGraphBlock

Código Delphi [-]
  ...
  image := TImage.Create(Self);

Cuando quieras acceder al objeto contenedor, basta con que accedas a esa propiedad.

Código Delphi [-]
var
  gb:TGrapkBlock;
begin
...
with Sender as TImage do begin
  // Cómo podría acceder ahora al dato si tengo una referencia 
  // al Timage, no al objeto del tipo TgraphBlock
  if (TImage(Sender) is TgraphBlock) then
    gb := TGraphBlock(TImage(Sender).Owner;
    ...
  end;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 27-02-2009
astwin astwin is offline
Miembro
 
Registrado: feb 2009
Posts: 21
Poder: 0
astwin Va por buen camino
No puedo realizar eso, ya lo he intentado.

Código Delphi [-]
  image:=TImage.Create(self); // Propietario seria el TgraphBlock 
  image.parent:=Panel1; // pertenece al panel

Me da un error "[DCC Error] BloquesGraficos.pas(248): E2010 Incompatible types: 'TComponent' and 'TgraphBlock'"
Responder Con Cita
  #4  
Antiguo 27-02-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Puedes hacer este cambio?

Código Delphi [-]
type TgraphBlock=class(TComponent)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 27-02-2009
astwin astwin is offline
Miembro
 
Registrado: feb 2009
Posts: 21
Poder: 0
astwin Va por buen camino
Pues en principio creo q no, ya que la tengo declarada como que hereda de Tpersistent

Código Delphi [-]
type TgraphBlock=class(Tpersistent)

¿alguna sugerencia mas?

Por cierto, muchas gracias por toda la ayuda y por tu interes.
Responder Con Cita
  #6  
Antiguo 27-02-2009
astwin astwin is offline
Miembro
 
Registrado: feb 2009
Posts: 21
Poder: 0
astwin Va por buen camino
Ya esta resuelto. Como el metodo TgraphBlock.ImageMouseDown se lo asigno al evento onMouseDown de la imagen, dentro de este metodo self se refiere al objeto del tipo TgrahBlock, y sender hace referencia a la imagen.
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
clase que contiene otra clase definida de forma posterior astwin OOP 5 20-02-2009 11:26:55
como Hacer que un TImage siga a un Timage? j_flores3000 OOP 8 27-03-2008 18:47:50
Copiar Bitmap de un TImage a otro TImage quinqui Gráficos 2 24-01-2008 15:22:30
reconocer que un campo contiene datos enecumene Conexión con bases de datos 15 22-09-2007 08:44:19
como combinar 2 Timage en un tercer Timage JefeNet Gráficos 10 02-09-2004 16:51:35


La franja horaria es GMT +2. Ahora son las 03:41:20.


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