Tengo una ventana MDI con un Brush de fondo que lo defino STRETCH
La ventana, en principio no contiene nada, llama a un dialogo para loguearse, y si el logue es existoso, arma una barra RIBBONBAR con los permisos que tiene el usuario
En la primer muestra, con el dialogo de logueo, la imagen de fondo me la muestra completa y ajustada a la ventana.
Al armar la Ribbonbar y actualizar la ventana, la imagen queda cortada, perdiendo lo que ocupa la Ribbonbar en la parte inferior.
Si hago oWnd:Restore() y luego oWnd:Maximize, la imagen se vuelve a ajustar, pero hace un parpadeo que quiero evitar.
Como puedo hacer para solucionarlo?
Dejo un ejemplo funcional
- Code: Select all Expand view RUN
#include "FiveWin.ch"
#include "ribbon.ch"
STATIC oWnd, oBar, oBar2
FUNCTION Main()
LOCAL oBmp, lIngreso
DEFINE BRUSH oBmp FILE "..\BITMAPS\OLGA1.JPG" STRETCH
DEFINE WINDOW oWnd ;
TITLE "Prueba MDI con Brush ";
MDI COLOR CLR_RED,CLR_WHITE;
MENU HazMenu() ;
BRUSH oBmp
RELEASE oApp:oBmp
ACTIVATE WINDOW oWnd MAXIMIZED ON INIT (lIngreso := Ingreso(),;
IF(lIngreso,ArmaBarra(),oWnd:End()))
RETURN NIL
// --------------------------------------------------------------------//
// ------------- Funcion men£ de la pantalla principal ----------------//
// --------------------------------------------------------------------//
STATIC FUNCTION HazMenu()
LOCAL oMenu
MENU oMenu 2010
ENDMENU
RETURN oMenu
// --------------------------------------------------------------------//
// ------------- Funcion que ejecuta las funciones del menu -----------//
// --------------------------------------------------------------------//
********************************************
** Validacion de Usuarios
STATIC FUNCTION Ingreso()
LOCAL retorno := .f., aVar := ARRAY(2), oDlg, oBot := ARRAY(2),oGet := ARRAY(2),;
oQry, oBit
aVar[1] :=SPACE(15)
aVar[2] :=SPACE(15)
DEFINE DIALOG oDlg TITLE "Acceso al Sistema" OF oWnd FROM 05,20 TO 13,60
oDlg:lHelpIcon := .f.
@ 07,05 SAY "Id:" OF oDlg PIXEL SIZE 45,12 RIGHT
@ 22,05 SAY "Password:" OF oDlg PIXEL SIZE 45,12 RIGHT
@ 05,60 GET oGet[1] VAR aVar[1] OF oDlg PIXEL
@ 20,60 GET oGet[2] VAR aVar[2] OF oDlg PIXEL
oGet[2]:lPassword := .t.
@ 35,20 BUTTON oBot[1] PROMPT "&Acceder" ACTION (retorno := .t.,oDlg:end()) SIZE 30,12 PIXEL
@ 35,65 BUTTON oBot[2] PROMPT "&Salir" ACTION (retorno := .f.,oDlg:end()) SIZE 30,12 PIXEL
ACTIVATE DIALOG oDlg CENTER
RETURN retorno
*******************************************************
** Armar la barra de botones
STATIC FUNCTION ArmaBarra()
LOCAL oGr := ARRAY(1), oBot
DEFINE RIBBONBAR oBar WINDOW oWnd PROMPT "Salir" HEIGHT 120 TOPMARGIN 25
oBar2 = TRBtn():New( 4, 0, 60, 20, "..\bitmaps\rbnmenu.bmp", { || MsgInfo(1) }, oBar,;
,,,,,, .T., .T.,,,,,,/* "POPUP"*/, ,,,,,,,,,,,,, , nRGB( 125, 172, 215 ),;
nRGB( 65, 106, 189 ) )
ADD GROUP oGr[1] RIBBON oBar TO OPTION 1 PROMPT "Salir" width 330
@ 2,05 ADD BUTTON oBot PROMPT "Salir" GROUP oGr[1] BITMAP "SALIR" ;
ROUND SIZE 80,65 TOOLTIP "Salir del Sistema" ACTION oWnd:End()
@ 2,95 ADD BUTTON oBot PROMPT "Calculadora" GROUP oGr[1] BITMAP "CALCU" ;
ROUND SIZE 80,65 TOOLTIP "Calculadora" ACTION WinExec("calc.exe")
RETURN .t.