Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-07-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cambiar imagen en tiempo de ejecucíón

Hola:

Tengo un TImage y lo que quiero hacer es que cuando el mouse pase por encima la imagen se cambie por otra.
Tenía pensado almacenar todas las imagenes en un TImageList pero el TImageList no es compatible con un TImage (Creo ).

¿Qué puedo hacer?

Saludos.
Aarón
Responder Con Cita
  #2  
Antiguo 06-07-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puedes almacenarlas en una tabla y elegir la que quieras.
Si no quieres usar bases de datos tienes otras posibilidades, por ejemplo, pones un timage y encima otra timage, cuando pasas el ratón por encima pones arriba la que estaba debajo y cuando sale el ratón vuelves a poner la que estaba antes.
Usando los métodos sendtoback y bringtofront.
Responder Con Cita
  #3  
Antiguo 06-07-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Voy a ver la última opción que propones, bueno a está hora ya no, debo dormir .
Mañana te cuento, aunque en este minuto estoy pensando que se puede hacer insostenible la situación con tres imagenes.

Saludos.
Responder Con Cita
  #4  
Antiguo 06-07-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Si necesitas varias imagenes, puedes usar un arreglo:
Código Delphi [-]
type
  TImagenes = array [Boolean, 0..100] of TImage;
var arr: Timagenes;
En los indices arr[false,0], arr[false,1], cargas todas las imagenes que se muestran por defecto.

En los indices arr[true, 0], arr[true,1] cargas las imagenes que se van a superponer cuando esté el mouse arriba.

Así el índice numérico indica la imagen en cuestion, y el parámetro true/false, si se va a cargar la imagen por defecto, o bien la que está para superponerse.

¿Te sirve algo asi?

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 06-07-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por lucasarts_18
pero el TImageList no es compatible con un TImage (Creo ).
Acabo de hacer una prueba con un ImageList y no he tenido problema. Cargo la imagen inicial con


Código Delphi [-]
ImageList.GetBitmap(0, Image1.Picture.Bitmap);

y al pasar el ratón con


Código Delphi [-]
Image1.Picture.Bitmap := nil;
ImageList.GetBitmap(1, Image1.Picture.Bitmap);

0 y 1 son los índices en el ImageList de las imágenes.

// Saludos
Responder Con Cita
  #6  
Antiguo 06-07-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola Roman:

Gracias por tu ayuda, me resulta como lo indicas tú pero..... al momento de cambiar la otra imagen ésta disminuye bastante el tamaño a pesar que ambas tienen el mismo alto y ancho.

Saludos.
Responder Con Cita
  #7  
Antiguo 13-07-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola Román:

Ya solucioné el problema de los tamaños, era respectivamente el ancho y el alto, qué cosas no ??.

Otra duda,sabes que evento se genera cuando el mouse deja de estar sobre algún objeto ???

Saludos.
Responder Con Cita
  #8  
Antiguo 27-07-2005
Avatar de German
German German is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 133
Poder: 22
German Va por buen camino
Puedes crearte un componente tImage2, igual que el tImage, pero que incluya los eventos onMouseEnter y onMouseLeave (al entrar y al salir el mouse):


Código Delphi [-]
unit Image2;
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;
 
type 
  TEntrarEvent=procedure(Sender:TObject) of object;
  TSalirEvent =procedure(Sender:TObject) of object;
  TImage2 = class(TImage)
  private
    { Private declarations }
    FOnEnter:TEntrarEvent;
    FOnExit :TSalirEvent;
    procedure CMMouseEnter(var msg:TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
    property OnMouseEnter: TEntrarEvent read FOnEnter write FOnEnter;
    property OnMouseLeave: TSalirEvent read FOnExit write FOnExit;
 
  end; 
 
procedure Register;
 
implementation 
 
procedure TImage2.CMMouseEnter(var msg:TMessage);
begin 
    inherited;
    {Cuando el raton entra...}
    if Assigned(FOnEnter) then FOnEnter(Self);
end; 
 
procedure TImage2.CMMouseLeave(var msg: TMessage);
begin 
    inherited;
    {Cuando el raton sale}
    if Assigned(FOnExit) then FOnExit(self);
end; 
 
procedure Register;
begin 
  RegisterComponents('Personales', [TImage2]);
end; 
 
end.

Salu2.
__________________
Tengo las manos llenas de dedos... Tengo los dedos llenos de teclas...
Tengo las teclas desordenadas... Tengo el desorden muy controlado...
Tengo el control en mis manos.
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


La franja horaria es GMT +2. Ahora son las 02:38:44.


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