Hola,
Yo lo hago de otra manera en mi Cuaderno de Bitácora. La imagen no la pongo en el xbrowse, la pongo en el taskbar que hay en el diálogo. Mira esta imagen y fíjate en el grupo portada del vtaskbar:
La manera de hacerlo es la siguiente:
1.- Defines la imagen en el vtaskbar. Primero el contenedor y en el aranque del dialogo la imagen
- Code: Select all Expand view RUN
@ 165, 05 VMENU oBar SIZE nBrwSplit-10, 190 OF oApp():oDlg ;
COLOR CLR_BLACK, GetSysColor(15) ;
HEIGHT ITEM 22 XBOX
oBar:nClrBox := MIN(GetSysColor(13), GetSysColor(14))
DEFINE TITLE OF oBar;
CAPTION i18n("Portada");
HEIGHT 25 ;
COLOR GetSysColor(9), GetSysColor(3), GetSysColor(2) ;
VERTICALGRADIENT
- Code: Select all Expand view RUN
ACTIVATE DIALOG oApp():oDlg NOWAIT ;
ON INIT ( ResizeWndMain(),;
LiBarImage(oBar, nBrwSplit),;
2.- Cargo la imagen
- Code: Select all Expand view RUN
function LiBarImage(oBar, nBrwSplit)
oLiImage := TZoomImage():New(35,10,(2*nBrwSplit)-40,(2*nBrwSplit)-40,,,.t.,oBar,,,,,,,,,.t.,,)
if File(lfn2sfn(rtrim(LI->LiImagen)))
oLiImage:LoadBmp(lfn2sfn(rtrim(LI->LiImagen)))
endif
return nil
3.- Cada vez que cambio de registro en el browse cambio la imagen
- Code: Select all Expand view RUN
xbrowse:bChange := { || RefreshCont( oCont, "LI", "Libros: "), RefreshLiImage() }
- Code: Select all Expand view RUN
function RefreshLiImage()
if File(lfn2sfn(rtrim(LI->LiImagen)))
oLiImage:Show()
oLiImage:LoadBmp(lfn2sfn(rtrim(LI->LiImagen)))
else
oLiImage:Hide()
endif
oLiImage:Refresh()
return nil
y listo.
Ya que muestro el código, agradezco a Paco García y a Silvio Falconi por su ayuda para hacerlo.
Saludos,
José Luis Sánchez
http://alanit.com