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.

TDBCardBox, TMemDataSet e Imagenes

Foro de Xailer profesional en español
Claudio C
Posts: 46
Joined: Sun Sep 20, 2015 8:13 pm
Location: Buenos Aires

TDBCardBox, TMemDataSet e Imagenes

Postby Claudio C » Mon Feb 12, 2018 11:31 pm

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
Claudio C
Posts: 46
Joined: Sun Sep 20, 2015 8:13 pm
Location: Buenos Aires

Re: TDBCardBox, TMemDataSet e Imagenes (ok)

Postby Claudio C » Tue Feb 13, 2018 12:22 am

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 '} )
User avatar
ignacio
Site Admin
Posts: 8553
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: TDBCardBox, TMemDataSet e Imagenes

Postby ignacio » Tue Feb 13, 2018 11:30 am

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):

Code: Select all

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


Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Claudio C
Posts: 46
Joined: Sun Sep 20, 2015 8:13 pm
Location: Buenos Aires

Re: TDBCardBox, TMemDataSet e Imagenes (ok - mejor! )

Postby Claudio C » Tue Feb 13, 2018 4:25 pm

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



ignacio wrote: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):

Code: Select all

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


Saludos

Return to “Spanish”