Hola
Te mando mi codigo tal cual lo estoy utilizando para visualizar las imagenes guardadas en una tabla MySql con TDolphin
////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION ViewPict()
LOCAL oDlg, aGets[ 5 ], aBoton[ 2 ], oUser, oImage1, oImage2, oFontPass, cClave
LOCAL aFont[ 2 ], lValid := .f., dFecha, cEntrada, cSalida
DEFINE FONT aFont[ 1 ] NAME "Times New Roman" SIZE 0,-12
oUser := Usuario():Init()
dFecha := oPublic:oEmpresa:dFechaTrabajo
cEntrada := cSalida := "00:00:00"
cClave := Space( 8 )
DEFINE DIALOG oDlg ;
RESOURCE "VIEW_PICT" ;
TITLE "Visualizador de fotos" ;
OF oPublic:oVentPrin ;
FONT oPublic:oVentPrin:oFont
REDEFINE GET aGets[ 3 ] ;
VAR dFecha ;
ID 103 ;
FONT oPublic:oFont ;
OF oDlg ;
UPDATE
REDEFINE GET aGets[ 1 ] ;
VAR cClave ;
ID 101 ;
OF oDlg ;
PICTURE "@K!" ;
FONT aFont[ 1 ] ;
VALID ( cClave := ClaveUsu( cClave ), lValid := oUser:ClaveOK( cClave ), ;
LoadPict( @oUser, dFecha, @cEntrada, @cSalida, @oImage1, @oImage2 ), ;
oDlg:Update(), aBoton[ 1 ]:SetFocus(), lValid ) ;
UPDATE
REDEFINE GET aGets[ 2 ] ;
VAR oUser:cNombre ;
ID 102 ;
FONT oPublic:oFont ;
WHEN .F. ;
OF oDlg ;
UPDATE
REDEFINE BITMAP oImage1 ;
ID 104 ;
OF oDlg ;
ADJUST
REDEFINE BITMAP oImage2 ;
ID 105 ;
OF oDlg ;
ADJUST
REDEFINE GET aGets[ 4 ] ;
VAR cEntrada ;
ID 106 ;
WHEN .F. ;
FONT oPublic:oFont ;
OF oDlg ;
UPDATE
REDEFINE GET aGets[ 5 ] ;
VAR cSalida ;
ID 107 ;
WHEN .F. ;
FONT oPublic:oFont ;
OF oDlg ;
UPDATE
REDEFINE BUTTON aBoton[ 1 ] ;
ID 151 ;
OF oDlg ;
WHEN lValid ;
MESSAGE "Nueva consulta" ;
ACTION ( cEntrada := cSalida := "00:00:00", oImage1:Clear(), oImage2:Clear(), oUser:Init(),;
cClave := Space( 8 ), oDlg:Update(), aGets[ 3 ]:SetFocus() ) ;
UPDATE
REDEFINE BUTTON aBoton[ 2 ] ;
ID 152 ;
OF oDlg ;
MESSAGE "Salir" ;
CANCEL ;
ACTION ( oDlg:End() ) ;
UPDATE
ACTIVATE DIALOG oDlg CENTER
AEval( aFont , { | Elem | Iif( Elem <> NIL, ( Elem:End(), DeleteObject( Elem ) ), .t. ) } )
aFont := NIL
oImage1 := NIL
oImage2 := NIL
Return NIL
/////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION LoadPict( oUser, dFecha, cEntrada, cSalida, oImage1, oImage2 )
LOCAL oQuery, oQFotos, cConsulta , nRecno
// Checar si ya realizo algun movimiento en el dia el empleado
cConsulta := "SELECT RECNO, ENTRADA, SALIDA " + ;
"FROM asistencia " + ;
"WHERE EMPLEADO = '" + oUser:oEmpleado:cCodigo + "' " + ;
"AND FECHA = '" + DtoS( dFecha ) + "' " + ;
"AND DELETED = 'N' "
oQuery := oPublic:oDoIt:oServer:Query( cConsulta )
If oQuery:nRecCount > 0
nRecno := oQuery:FieldGet( "RECNO" )
cEntrada := oQuery:FieldGet( "ENTRADA" )
cSalida := oQuery:FieldGet( "SALIDA" )
// Traigo las imagenes desde la tabla de imagenes
cConsulta := "SELECT ENTRADA, SALIDA FROM fasistencia " + ;
"WHERE REGISTRO='" + Str( nRecno, 11 ) + "' "
oQFotos := oPublic:oDoIt:oServer:Query( cConsulta )
If oQFotos:nRecCount > 0
oImage1:LoadFromString( HB_Base64Decode( oQFotos:FieldGet( "ENTRADA" ) ) )
oImage2:LoadFromString( HB_Base64Decode( oQFotos:FieldGet( "SALIDA" ) ) )
else
oImage1:Clear()
oImage2:Clear()
EndIf
EndIf
oImage1:Refresh()
oImage2:Refresh()
Return NIL
Espero te sirva, cualquier duda estoy a tus ordenes
Saludos!!
Eduardo Borondón Muñiz