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 13-03-2010
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
como asignar en runtime un bitmap

Estoy usando un componente jedI PARA USAR UN INTERRUPTOR

JvSwitch

Tiene 2 propiedades JvSwitch.GlyphOn y JvSwitch.GlyphOn que permiten cargar un Bitmap (TBitmap) .

Tengo una Imagen (Timage) previamente metida en el form

He intentado asignar esa imagen a las propiedades GlyphOn del JvSwitch y no se como hacerlo ya que me genera una excepcion.

JVswitch.GlyphOn:=ImageMia.Picture.Bitmap;

He probado tambien JVSwitch.GlyphOn.Assign(ImageMia.Picture.Bitmap);

No tengo mucha idea del manejo de imagenes.

Alguien puede aclararme que hago mal y como solucionarlo?

gracias
Responder Con Cita
  #2  
Antiguo 13-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Nunca usé ese componente, pero fijate si la propiedad GlyphOn no es de tipo Picture en vez de Bitmap.
Tal vez esa propiedad no es un bitmap y no te permite asignarla así.
Si es un TPicture, deberías poner JVSwitch.GlyphOn.Bitmap.Assign(ImageMia.Picuter.Bitmap);
Sino, otra solución podría ser guardarla temporalmente en el disco, cargalar en GlyphOn y después borrarla.
Código Delphi [-]
ImageMia.Picture.Bitmap.SaveToFile('ImgTmp.bmp');
JVSwitch.GlyphOn.LoadFormFile('ImgTmp.bmp');
DeleteFile('ImgTmp.bmp');
Así, la imagen se carga desde el disco, y al momento de borrarse del disco no se borra del GlyphOn porque está cargada en memoria.
Fijate si alguna de las 2 te sirve (obviamente mejor la primera) y nos contás.
Saludos!
Responder Con Cita
  #3  
Antiguo 13-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Acabo de mirar a un código a ver cómo es el JvSwitch.
Según entiendo, para asignarle una imagen tenés que usar el método SetSwitchGlyph del JvSwitch.
Es bastante simple, mirá:
Código Delphi [-]
//GlyphOn tiene predefinido el índice 1 y GlyphOff tiene predefinido el índice 0, en la clase JVSwitch
JVSwitch.SetSwitchGlyph(1,ImageMia.Picture.Bitmap);
Solamente eso.
Fijate que debe andar.
Saludos!
Responder Con Cita
  #4  
Antiguo 13-03-2010
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
La primera no funciona
Glyphon no tiene la clase Bitmap.Assign
En las propiedades al cargar en modo diseño pone TBitmap pero no picture.

Si que he visto que tiene loadfromfile pero no puedo probarlo ahora.

Gracias por la respuesta, pero todavia no entiendo porque no funciona...

Saludos
Responder Con Cita
  #5  
Antiguo 13-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Es como te indiqué en el segundo mensaje.
Está sacado directamente del código fuente de la clase JvSwitch.
Hacelo como dice ahí y no vas a tener ningún problema.
Código Delphi [-]
procedure PonerImagenGlyphOn(Img:TBitmap);
begin
  //GlyphOn tiene predefinido el índice 1 y GlyphOff tiene predefinido el índice 0, en la clase JVSwitch
  JVSwitch.SetSwitchGlyph(1,Img);
  //JvSwitch.SetSwitchGlyph recibe como primer parámetro el índice (0=GlyphOff; 1=GlyphOn) y como segundo parámetro la imagen
end;


procedure TForm1.Button1Click(Sender:TObject);
begin
  PonerImagenGlyphOn(ImageMia.Picture.Bitmap);
end;
Probalo (es un vago ejemplo) que te va a funcionar de 10!
Saludos!
Responder Con Cita
  #6  
Antiguo 13-03-2010
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
No me funciona me dice que es un metodo privado


Código:
with FindComponent('ComboBox' + IntToStr(i)) as TComboBox,
         FindComponent('JvSIA' + IntToStr(i)) as TJVSwitch do
      begin
        if (itemindex=0) then
           begin
                SetSwitchGlyph(1,ImageBumpon.Picture.Bitmap);
                //           GlyphOn.Assign(ImageBumpOn.Picture.BItmap);
                SetSwitchGlyph(0,ImageBumpoff.Picture.Bitmap);
             // GlyphOff:=(ImageBumpOff.Picture.Bitmap);
           end
Responder Con Cita
  #7  
Antiguo 13-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Tenés razón. No me fijé el ámbito del método! Estuve mal ahí, me disculpo.
Al ser TBitmap (incorporado en Delphi, no es de la clase JvSwitch) tiene que permitirte usar Assign. Me parece raro.
Pero igual, si estás en apuros, usá el método de almacenar en disco y después borrar.
Ahora compilo esa clase a ver si te ayudo un poco más.
Nos vemos en un rato
Responder Con Cita
  #8  
Antiguo 13-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Siento no poder ayudarte más de lo que hice hasta ahora.
Traté de instalar 3 veces la JVCL y la JCL pero siempre me dice que no tengo ningún IDE de Delphi instalado
No sé si estaré haciendo mal. Tal vez va en una carpeta específica y no lo hice.
De todos modos, sigo firme con que tiene que permitirte usar el método Assign de la clase TBitmap.
Saludos.
Responder Con Cita
  #9  
Antiguo 13-03-2010
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
deja usarlo pero me sale una excepcion.
Gracias
Responder Con Cita
  #10  
Antiguo 13-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por alquimista Ver Mensaje
deja usarlo pero me sale una excepcion.
Gracias
Pero decí cuál es la excepción a ver si te podemos ayudar. Danos datos y podemos formular una respuesta.
Responder Con Cita
  #11  
Antiguo 14-03-2010
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
He estado fuera 1 dia..

La excepción es

Project programa.exe raised exception class EAccessViolation with message Access Violation ......


la idea es cambiar la imagen del interruptor en on y off del JVswitch por varias que tengo previamente almacenadas en un TImage dependiendo del valor de un Combobox
Responder Con Cita
  #12  
Antiguo 14-03-2010
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
he probado la 2ª opcion y me pasa lo mismo al grabar el bitmap a disco.
A ver si es un problema del bitmap?
BMP en 24 bits grabado con potoshop en delphi 2007

No se?????????????? cambiare el jvswitch por timages 5 x2 timages

Esta claro que algo esta mal (es lo unico que tengo claro), jejejej
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
Como evitar un Runtime error 216 sitrico Varios 2 20-03-2009 17:21:12
Imagen en BD ¿Como saber si es bitmap o JPG? al recuperarla luigi_cr Gráficos 5 06-11-2007 23:09:52
Como guardar .JPG como Bitmap en Base de Datos Javi2 Gráficos 4 25-03-2007 17:21:57
Como imprimir un bitmap al inicio de un ticket Javi2 Impresión 3 24-01-2006 18:39:08
Como rotar x grados un bitmap ( o grafico en general ) manoley23 Gráficos 2 28-07-2003 17:23:38


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


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