Hola Vladimir
Vladimir Zorrilla wrote:PREGUNTAS
XBROWSE PUEDE MOSTRAR JPG
YO TENGO UNA FUNCION QUE ME LEE LA IMAGEN DE LA BD LA DESENCRIPTA CON FMimeDec(cTemp,cTemp2)
Y CREA UN JPG
BUENO SUPONGO QUE TENDRIA QUE PRIMERO BAJAR TODAS LAS IMAGENES A UNA CARPETA
Y LUEGO MOSTRARLAS CON XBROWSE
HAY UNA FORMA DE HACERLO DIRECTO DE LA BD
Si puedes mostrar jpg y otros formatos tambien, necesitas 2 cosas cargar freeimage.dll y el methodo de las columnas oCol:AddBmpHandle( hBitmap )
debes leer primero todas las imagenes para cargarlas en el array respectivo a la columna
desde mi punto de vista creo que es mejor crear un espacio aparte (frame) para mostar las imagenes las cuales puedes ir leyendo a medida que avanzas enn el browse si necesidad de descargarlas todas, igualmente te dejo el ejemplo de como asignar jpg u otro formato a una columna de xbrowse
la DBF usada es la misma de los samples de FW, y dibujo.jpg puede ser cualquier archivo que tu elijas
- Code: Select all Expand view
#include "FiveWin.ch"
#include "xbrowse.ch"
REQUEST DBFCDX
static hLib
function main()
local oDlg
local oBrw
local nI
local cAlias
local hBitMap
hLib := LoadLibrary( "freeimage.dll" )
cAlias = "customer"
hBitmap = FILoadImg( AllTrim( "dibujo.jpg" ) )
use customer alias (cAlias) new via "dbfcdx"
DEFINE DIALOG oDlg title "TEST" size 600,400
@ 0,0 XBROWSE oBrw OF oDlg ;
COLUMNS "First", "Salary", "state", "age" ;
HEADERS nil, nil, "State", "AGE" ;
JUSTIFY .F., nil, .F., .T. ;
ALIAS cAlias AUTOSORT LINES CELL
oBrw:nMarqueeStyle := 0
oBrw:nRowDividerStyle:= 0
oBrw:nColDividerStyle:=0
oBrw:nRowHeight := nBmpHeight( hBitmap ) + 5
oBrw:aCols[ 1 ]:AddBmpHandle( hBitmap )
oBrw:aCols[ 1 ]:bBmpData := {|| 1 }
oDlg:oClient := oBrw
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED ON INIT oDlg:Resize()
FreeLibrary( hLib )
return nil
#define CBM_INIT 4
#define DIB_RGB_COLORS 0
static function FILOADIMG( cFile )
local nFormat, hDib, hInfoH, hInfo, hBits, hWnd, hDC, hBmp
if Upper( cFileExt( cFile ) ) = "BMP"
return ReadBitmap( 0, cFile )
endif
nFormat = FIGETFILETYPE( cFile, 0 )
hDib = FILOAD( nFormat, cFile, 0 )
hInfoH = FIGETINFOHEADER( hDib )
hInfo = FIGETINFO( hDib )
hBits = FIGETBITS( hDib )
hWnd = GETDESKTOPWINDOW()
hDC = GETDC( hWnd )
hBmp = CreateDiBitmap( hDC, hInfoH, CBM_INIT, hBits, hInfo, DIB_RGB_COLORS )
ReleaseDC( hWnd, hDC )
FIUNLOAD( hDib )
return hBmp
DLL32 FUNCTION FIGETFILETYPE( cFileName AS LPSTR, nSize AS LONG ) AS LONG ;
PASCAL FROM "_FreeImage_GetFileType@8" LIB hLib
DLL32 FUNCTION FILOAD( nFormat AS LONG, cFileName AS LPSTR, nFlags AS LONG ) AS LONG ;
PASCAL FROM "_FreeImage_Load@12" LIB hLib
DLL32 FUNCTION FIGETINFOHEADER( hDib AS LONG ) AS LONG ;
PASCAL FROM "_FreeImage_GetInfoHeader@4" LIB hLib
DLL32 FUNCTION CREATEDIBITMAP( hDC AS LONG, hInfoH AS LONG, nFlags AS LONG, hBits AS LONG, hInfo AS LONG, nUsage AS LONG ) AS LONG ;
PASCAL FROM "CreateDIBitmap" LIB "gdi32.dll"
DLL32 FUNCTION FIGETINFO( hDib AS LONG ) AS LONG ;
PASCAL FROM "_FreeImage_GetInfo@4" LIB hLib
DLL32 FUNCTION FIGETBITS( hDib AS LONG ) AS LONG ;
PASCAL FROM "_FreeImage_GetBits@4" LIB hLib
DLL32 FUNCTION FIUNLOAD( hDib AS LONG ) AS VOID ;
PASCAL FROM "_FreeImage_Unload@4" LIB hLib