Club Delphi  
    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


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2004
keglevich keglevich is offline
Registrado
 
Registrado: Oct 2003
Posts: 9
Poder: 0
keglevich Va por buen camino
Controlar eventos de una clase propia

Ante todo saludos a todos y gracias por leer mi duda.
Ésta es la siguiente, a ver si me explico bien:
Tengo una clase en cuyo estado tengo una variable de tipo TImage, por ejemplo:

miclase:Class
private
nombre:String;
imagen:TImage;
(...)

De esta clase instanciaré un número indeterminado de objetos, los destruiré y demás en tiempo de ejecución. Mi problema es que necesito tratar los eventos propios de la clase TImage, hablando con mas propiedad, necesito mover la imagen por la pantalla con el ratón y para ello usaré los eventos onmousemove,up,down.
Al crear el objeto, creo tambien la imagen de la siguiente manera:
(...)
Img:=TImage.Create(self);
Img.Parent:=self;
Img.Picture.Bitmap.PixelFormat:=pf24bit;
img.Picture.LoadFromFile(imagen.bmp');
Img.Transparent:=true;
img.Stretch:=true;
img.Top:=350;
img.Left:=300;
img.Visible:=true;

¿Cómo hago para tratar los eventos de la variable TImage contenida en mi clase? ¿Tengo que crear métodos para esta clase que traten especificamente estos eventos?¿Se puede hacer?...estoy un poco perdido, la verdad...


"minolles" de gracias....

Responder Con Cita
  #2  
Antiguo 14-09-2004
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: 15.670
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Crea un procedimiento con los mismos parámetros del evento y cuando creas un objeto le asignas al evento esa rutina.


Código Delphi [-]
(...) 
Img:=TImage.Create(self);
Img.Parent:=self;
Img.Picture.Bitmap.PixelFormat:=pf24bit;
img.Picture.LoadFromFile(imagen.bmp');
Img.Transparent:=true;
img.Stretch:=true;
img.Top:=350;
img.Left:=300;
img.Visible:=true;
// Capturar evento de Doble click
img.OnDblClick := _MyImagenClick;

y el procedimiento lo habrás definido en la parte privada de ésta forma, por ejemplo:

Código Delphi [-]
procedure _MyImagenClick(Sender: TObject);

Para saber los parámetros del procedimiento ten en cuenta que deben ser los mismos del evento que quieres "capturar".
Puedes asignar a varios eventos/componentes el mismo procedimiento.
__________________
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 15-09-2004
keglevich keglevich is offline
Registrado
 
Registrado: Oct 2003
Posts: 9
Poder: 0
keglevich Va por buen camino
MUCHAS GRACIAS.....y pequeña duda añadida

¡¡Neftali macho, muchas gracias por tu inestimable ayuda!!
Ahora a raiz de esto me ha salido otra duda...
Cuando hago el

imagen:=TImage.create(self);

al estar dentro de una clase mia, me dice que no es de tipo TComponent bla bla bla.
Si hago que herede de ella, miclase(TComponent) , en el constructor, que tendrá esta pinta:

constructor miclase.create(n:String);
begin
nombre:=n;
im:=TImage.Create(self);
(...)

peta con un acces violation...pensé que tenía que llamar al constructor de la clase padre con inherited create(self) ...pero me sigue petando...
¿qué estoy haciendo mal, muy mal...rematadamente mal?

"cienes de minolles" de gracias...
Responder Con Cita
  #4  
Antiguo 15-09-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: May 2003
Posts: 7.424
Poder: 23
Lepe Va por buen camino
Simplemente pasa del tema. Dile que nadie se encargará de destruir el objeto pasandole el parámetro nil y asegurate de destruirlo tu a mano.

Código Delphi [-]
// en el  constructor de tu clase
img := Timage.Create(nil);


destructor Miclase( ...);
begin

  try 
  (....)
  finally
    Freeandnil(img);
  end;
end;

Última edición por Lepe fecha: 15-09-2004 a las 13:38:08.
Responder Con Cita
  #5  
Antiguo 15-09-2004
keglevich keglevich is offline
Registrado
 
Registrado: Oct 2003
Posts: 9
Poder: 0
keglevich Va por buen camino
Ok

¡¡¡Muchas gracias Lepe, funciona perfectamente!!!!
Responder Con Cita
Respuesta


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


La franja horaria es GMT +2. Ahora son las 22:18:06.


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