FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour XBROWSE transparente
Posts: 7
Joined: Sat Mar 29, 2014 05:54 PM
XBROWSE transparente
Posted: Wed Feb 10, 2021 11:17 PM
Estimados amigos un saludo cordial.

Trabajo en windows 10, con fwh 21.01

Se ha definido una ventana con una imagen de fondo (:oBrush)
luego se define un xBrowse en modo transparente. Es decir :
@ 149, 12 XBROWSE ::oBrwsVta Of ::oWndMain ARRAY {} SIZE 913,247 FONT oFnt PIXEL COLORS CLR_BLACK FASTEDIT NOBORDER TRANSPARENT
(no defino ninguna imagen de fondo para este browse)

xBrowse pinta el fondo del area de datos con la imagen de fondo de la ventana a partir de la ultima fila; con la versi贸n 20.01 no hay ning煤n problema, el fondo del xbrowse es transparente y deja ver el fondo de la imagen del 谩rea que ocupa ( el browse ) en la ventana.
Con la versi贸n 20.12 y 21.01 xBrowse pinta el fondo del area de datos que ocupa con la imagen de la ventana desde inicio.
Empieza a pintar despu茅s de la ultima fila con la imagen la ventana empezando de la esquina superior izquierda.

Como puedo solucionar este detalle ?.

Muchas gracias por su tiempo.
Posts: 7
Joined: Sat Mar 29, 2014 05:54 PM
Re: XBROWSE transparente
Posted: Thu Feb 11, 2021 01:29 AM
Mr Rao.
Encontr茅 la soluci贸n.
::bPaintBack := {|| aOrg := SetBrushOrgEx( ::hDC, nBmpWidth( ::hBitmap ) - ::nLeft, nBmpHeight( ::hBitmap ) - ::nTop ),
FillRect( ::hDC, GetClientRect( ::hWnd ), ::hBrush ),
SetBrushOrgEx( ::hDC, aOrg[ 1 ], aOrg[ 2 ] ) }

Aparentemente en el m茅todo Paint(), el dato ::lTransparent toma dato negativo y ejecuta el otro proceso. (posiblemente)
No comprendo el porque, pero esta parte de c贸digo no se ejecuta como esperaba.
Si ::lTransparent == true y no se ha definido ninguna imagen de fondo para xBrowse, tendr铆a que seguir las l铆neas de c贸digo en negrillas.

METHOD Paint() CLASS TXBrowse
...
....
// Paint Background
if ::bPaintBack != nil
Eval( ::bPaintBack, Self )
else
if ::lTransparent .and. Empty( ::hBitmap )
if ! Empty( ::hBitmap )
aOrg := SetBrushOrgEx( ::hDC, nBmpWidth( ::hBitmap ) - ::nLeft, ;
nBmpHeight( ::hBitmap ) - ::nTop )
endif
FillRect( ::hDC, GetClientRect( ::hWnd ), ::hBrush )
SetBrushOrgEx( ::hDC, aOrg[ 1 ], aOrg[ 2 ] )

else
oRect := ::DataRect()
aOrg := SetBrushOrgEx( ::hDC, oRect:nLeft, oRect:nTop )
FillRect( ::hDC, oRect:aRect, ::hBrush )
SetBrushOrgEx( ::hDC, aOrg[ 1 ], aOrg[ 2 ] )
endif
endif
// Paint Background end
.....
..
.
Mr Rao, muchas gracias por su tiempo, espero que se pueda dar una mejor salida de la que he podido encontrar por ahora.
Amigos muchas gracias por su tiempo.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: XBROWSE transparente
Posted: Fri Feb 12, 2021 05:04 PM

I will check and come back.

Regards



G. N. Rao.

Hyderabad, India
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: XBROWSE transparente
Posted: Sat Feb 13, 2021 10:14 AM
con la versi贸n 20.01 no hay ning煤n problema,


FWH never released version 20.01.
Do you mean FWH1912 or FWH2002 ?
Regards



G. N. Rao.

Hyderabad, India
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: XBROWSE transparente
Posted: Sat Feb 13, 2021 10:41 AM
We tested this program with FWH versions 1912, 2002 and 2101.
The behavior is exactly the same and correct in all versions.





Even the dynamic behavior also is correct and as expected.

Regards



G. N. Rao.

Hyderabad, India

Continue the discussion