He preparado un ejemplo que muestra un mal funcionamiento del BRUSH o del efecto de tranparencia en un diálogo.
El ejemplo presenta un diálogo conteniendo un XBROWSE y dos objetos SAY de tal forma que al desplazarse por las líneas del browse va mostrando en los SAY el nombre (FIRST) y apellido (LAST) del renglon seleccionado. El diálogo tiene un BRUSH de fondo.
Resulta que el fondo del diálogo pierde el BRUSH cuando se activa otra aplicación, de tal forma que al volver al ejemplo en lugar de pintarse el diálogo con el BRUSH de fondo, se pinta trasparente, es decir, se ve la aplicación que está detrás. He adjuntado una imagen (Imagen1.Jpg) que muestra la ventana del ejemplo cuando recién se ejecuta y otra imagen (Imagen2.Jpg) en el que se muestra la ventana después de haber conmutado a otra aplicación. En esta segunda imagen he marcado con líneas color rojo los SAY en los que se puede ver que, además del efecto del BRUSH, la información de los SAY comienza a sobreponerse con el mostrado del registro anterior.
Agradezco tu ayuda.
Code: Select all
#include "FiveWin.ch"
#include "xBrowse.ch"
function Main()
local oDlg
local oBrush
local oBrowse
local oDbf
local oSay1
local oSay2
USE CUSTOMER
DATABASE oDbf
DEFINE BRUSH oBrush FILE '..\BITMAPS\Back.bmp'
DEFINE DIALOG oDlg SIZE 800,400 TRANSPARENT
@ 10,10 XBROWSE oBrowse ;
OF oDlg SIZE 380,150 PIXEL ;
ALIAS oDbf:cAlias ;
AUTOCOLS AUTOSORT FOOTERS LINES CELL ;
ON CHANGE ( oDbf:Load(), oSay1:Refresh(), oSay2:Refresh() )
oBrowse:CreateFromCode()
@ 11,05 SAY oSay1 PROMPT "First: " + oDbf:FIRST COLOR CLR_WHITE
@ 11,20 SAY oSay2 PROMPT "Last: " + oDbf:LAST COLOR CLR_WHITE
SET BRUSH OF oDlg TO oBrush
ACTIVATE DIALOG oDlg RESIZE16 ON INIT ( oBrowse:SetFocus, .f. )
return Nil
http://yfrog.com/emimagen1lpj
Imagen2
http://yfrog.com/3uimagen2ij
Saludos,
FWH 9.12 + xHarbour (Incluido en FWH 9.12) + Borland 5.5
Saludos,
Rodolfo MG