Estimados:
Tengo un TDBCardBox asociado a un TMemDataSet
¿ Es posible mostrar una imagen en la tarjeta ?
La imágenes están en disco. En el memdataset tengo el nombre de los jpg.
Si es posible ... no encuentro cómo ni dónde.
Gracias por su tiempo
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
TDBCardBox, TMemDataSet e Imagenes
Re: TDBCardBox, TMemDataSet e Imagenes (ok)
Me respondo a Mi mismo.
Es simple... sobre todo si lees el manual
Dejo el ejemplo basico que quiza ayude a otro compañero. Saludos.
method cgaActividad() CLASS fmGNreitra
local aFila := { }
local oPicture
local a := { ;
{'foto_02.jpg' , 'Carlos' , 'Puesto' , 'Sector' , 'Producto' , 'Tarea' , 'Obs '} , ;
{'foto_03.jpg' , 'Maria' , 'Puesto' , 'Sector' , 'Producto' , 'Tarea' , 'Obs '} , ;
{'foto_01.jpg' , 'Jode' , 'Puesto' , 'Sector' , 'Producto' , 'Tarea' , 'Obs '} ;
}
FOR EACH aFila in a
oPicture := TPicture():New( Self )
oPicture:LoadFromFile( 'graf/'+aFila[1] )
aFila[1]:=oPicture
NEXT
::oMDSpuestos:Open( a , {'Foto' , 'Nombre' , 'Puesto' , 'Sector' , 'Producto' , 'Tarea' , 'Obs '} )
Es simple... sobre todo si lees el manual
Dejo el ejemplo basico que quiza ayude a otro compañero. Saludos.
method cgaActividad() CLASS fmGNreitra
local aFila := { }
local oPicture
local a := { ;
{'foto_02.jpg' , 'Carlos' , 'Puesto' , 'Sector' , 'Producto' , 'Tarea' , 'Obs '} , ;
{'foto_03.jpg' , 'Maria' , 'Puesto' , 'Sector' , 'Producto' , 'Tarea' , 'Obs '} , ;
{'foto_01.jpg' , 'Jode' , 'Puesto' , 'Sector' , 'Producto' , 'Tarea' , 'Obs '} ;
}
FOR EACH aFila in a
oPicture := TPicture():New( Self )
oPicture:LoadFromFile( 'graf/'+aFila[1] )
aFila[1]:=oPicture
NEXT
::oMDSpuestos:Open( a , {'Foto' , 'Nombre' , 'Puesto' , 'Sector' , 'Producto' , 'Tarea' , 'Obs '} )
- ignacio
- Site Admin
- Mensajes: 9246
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: TDBCardBox, TMemDataSet e Imagenes
Buenos días,
Tu solución funciona, pero no es la más adecuada cuando la matriz tiene cientos o miles de filas ya que estás creando innecesariamente un montón de objetos GDI que pueden perjudicar a tu aplicación. Mi recomendación es que lo resuelvas así (NO PROBADO):
Saludos
Tu solución funciona, pero no es la más adecuada cuando la matriz tiene cientos o miles de filas ya que estás creando innecesariamente un montón de objetos GDI que pueden perjudicar a tu aplicación. Mi recomendación es que lo resuelvas así (NO PROBADO):
Código: Seleccionar todo
METHOD CardBox1CardPaint( oSender, oItem, Value, nClrText, nClrPane, nPos, lActive, hDC, aRect ) CLASS TForm1
WITH OBJECT oItem
IF :nItem == 1
Value := Memoread( 'graf/'+Value )
ENDIF
END WITH
RETURN Nil
Re: TDBCardBox, TMemDataSet e Imagenes (ok - mejor! )
Estimado Ignacio.
Funciona Perfecto !
Al no tener eventos en el TCardItem ( busque OnGetData() del item ) ... le entré al problema por los datos.
No se me ocurrió ir al contenedor y tratar el problema con un evento desde allí.
Además, mi dataset solo tendrá 10 , como máximo 20 registros ... y esa cantidad de imagenes se soportaba sin problema.
Pero la mejor solución es la propuesta por Ud. Lejos.
Menos mal que están los que saben !
Muchas Gracias.
Claudio
Funciona Perfecto !
Al no tener eventos en el TCardItem ( busque OnGetData() del item ) ... le entré al problema por los datos.
No se me ocurrió ir al contenedor y tratar el problema con un evento desde allí.
Además, mi dataset solo tendrá 10 , como máximo 20 registros ... y esa cantidad de imagenes se soportaba sin problema.
Pero la mejor solución es la propuesta por Ud. Lejos.
Menos mal que están los que saben !
Muchas Gracias.
Claudio
ignacio escribió:Buenos días,
Tu solución funciona, pero no es la más adecuada cuando la matriz tiene cientos o miles de filas ya que estás creando innecesariamente un montón de objetos GDI que pueden perjudicar a tu aplicación. Mi recomendación es que lo resuelvas así (NO PROBADO):
SaludosCódigo: Seleccionar todo
METHOD CardBox1CardPaint( oSender, oItem, Value, nClrText, nClrPane, nPos, lActive, hDC, aRect ) CLASS TForm1 WITH OBJECT oItem IF :nItem == 1 Value := Memoread( 'graf/'+Value ) ENDIF END WITH RETURN Nil