Ventana MDI con Brush STRETCH

Ventana MDI con Brush STRETCH

Postby cmsoft » Wed Mar 23, 2022 1:25 pm

Estimados:
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.
 
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ventana MDI con Brush STRETCH

Postby karinha » Wed Mar 23, 2022 2:32 pm

Intenta asi:

Code: Select all  Expand view  RUN

#include "FiveWin.ch"
#include "ribbon.ch"

STATIC oWnd, oBar, oBar2
FUNCTION Main()

   LOCAL oBmp, lIngreso, cTitle, oBrush

   cTitle := "Prueba MDI con Brush y STRETCH"

   // DEFINE BRUSH oBmp   FILENAME ".\OLGA1.JPG" STRETCH
   // DEFINE BRUSH oBrush FILENAME ".\OLGA1.JPG" STRETCH
   DEFINE BITMAP oBmp     FILENAME ".\OFFICE.BMP" STRECH

   DEFINE WINDOW oWnd TITLE "Prueba MDI con Brush " MDI ;
      COLOR CLR_RED, CLR_WHITE                          ;
      MENU HazMenu() // BRUSH oBmp

   ACTIVATE WINDOW oWnd MAXIMIZED ON INIT ( lIngreso := Ingreso(), ;
      IF( lIngreso, ArmaBarra(), oWnd:End() ) )                    ;
      ON PAINT DrawBitmap( hDC, oBmp:hBitmap, 0, 0, oWnd:nWidth, oWnd:nHeight - 80 )

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. )

// FIN / END
 


Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ventana MDI con Brush STRETCH

Postby cmsoft » Wed Mar 23, 2022 7:19 pm

Hola Jao, gracias por responder. Pero no, no me toma un .jpg y no me lo ajusta a la ventana.
Gracias igual!
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ventana MDI con Brush STRETCH

Postby karinha » Wed Mar 23, 2022 9:50 pm

cmsoft wrote:Hola Jao, gracias por responder. Pero no, no me toma un .jpg y no me lo ajusta a la ventana.
Gracias igual!


Con .BMP me parece bién. Mira:

Download completo:

https://mega.nz/file/Ydsh2TrK#YnfBZWO6xeufYG5u-Ip1L_hxYnl7sfhYWv8D3QTcYQo

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ventana MDI con Brush STRETCH

Postby cmsoft » Wed Mar 23, 2022 11:01 pm

Jao:
Muchas gracias por tomarte el tiempo para ver lo planteado.
Tu ejemplo, en la parte inferior de la primer pantalla, la imagen no cubre toda la pantalla, al menos en mi pc
Tambien el bmp se pixela mucho cuando vas achicando la ventana
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ventana MDI con Brush STRETCH

Postby karinha » Thu Mar 24, 2022 10:29 am

Que raro. Aquí funciona bien. ¿Qué resolución de pantalla usas?

Muestre una imagen por favor.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ventana MDI con Brush STRETCH

Postby cmsoft » Thu Mar 24, 2022 12:32 pm

Image
Image
Fijate que en la parte baja de la imagen, en una tiene un margen de sobra, en la otra le falta un tramo
1366 x 768
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ventana MDI con Brush STRETCH

Postby karinha » Thu Mar 24, 2022 1:13 pm

Intente ahora.

Mira se comprende el que quiero decir: mi portunhol, es terrible. jajajaja.

Code: Select all  Expand view  RUN

// C:\CMSOFT\CMSOFT5.PRG

#include "FiveWin.ch"
#include "Ribbon.ch"

#Define CLR_MSPURPLE   nRGB( 0,   120, 215 ) //-> Purpura.
#Define CLR_MSRED      nRGB( 232,  17,  35 )
#Define CLR_MSGRAY     nRGB( 229, 229, 229 )
#Define CLR_LGRAY      nRGB( 230, 230, 230 )

STATIC oWnd, oBar, oBar2

FUNCTION Main()

   LOCAL oBmp, lIngreso, cTitle, oBrush
   LOCAL nResHoriz, nResVert

   cTitle := "Prueba MDI con Brush y STRETCH"

   DEFINE BITMAP oBmp   FILENAME ".\OFFICE.BMP" STRECH ADJUST
   DEFINE BRUSH  oBrush COLOR nRGB( 250, 213, 174 )    ADJUST

   DEFINE WINDOW oWnd TITLE cTitle                                           ;
      MENU HazMenu() COLOR CLR_CYAN, CLR_MSPURPLE MENUINFO 3 MDI

   oWnd:SetBrush( oBrush )

   nResHoriz := oWnd:nHorzRes() // retorna a resolucao horizontal
   nResVert  := oWnd:nVertRes() // retorna a resolucao vertical

   IF nResHoriz = 1366 .AND. nResVert = 768

      ACTIVATE WINDOW oWnd MAXIMIZED ON INIT ( lIngreso := Ingreso(),           ;
         IF( lIngreso, ArmaBarra(), oWnd:End() ) )                              ;
         ON PAINT DrawBitmap( hDC, oBmp:hBitmap, 0, 0, oWnd:nWidth, oWnd:nHeight - 30 )

   ELSEIF nResHoriz = 1360 .AND. nResVert = 768

      ACTIVATE WINDOW oWnd MAXIMIZED ON INIT ( lIngreso := Ingreso(),           ;
         IF( lIngreso, ArmaBarra(), oWnd:End() ) )                              ;
         ON PAINT DrawBitmap( hDC, oBmp:hBitmap, 0, 0, oWnd:nWidth, oWnd:nHeight - 80 )

   ELSEIF nResHoriz = 1280 .AND. nResVert = 1024

      // Continue

   ELSEIF nResHoriz = 1280 .AND. nResVert = 768

      // Continue

   ELSEIF nResHoriz = 1280 .AND. nResVert = 720

      // Continue

   ELSEIF nResHoriz = 1024 .AND. nResVert = 768  // Minha Maquina

      // Continue

   ELSE

      // O HAGA EN UNA FUNCTION, ok?

   ENDIF

   oBrush: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. )

// FIN / END
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Re: Ventana MDI con Brush STRETCH

Postby cmsoft » Thu Mar 24, 2022 9:42 pm

Jao:
Muchas gracias por toda la info.. La estudio y comento.
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ventana MDI con Brush STRETCH

Postby nageswaragunupudi » Fri Apr 01, 2022 3:41 pm

This is working well for me.
Code: Select all  Expand view  RUN
#include "fivewin.ch"
#include "ribbon.ch"

//----------------------------------------------------------------------------//

function Main()

   local oWnd, oBar, oBrush

   DEFINE BRUSH oBrush FILE "..\bitmaps\olga1.jpg" STRETCH

   DEFINE WINDOW oWnd MDI MENU TMenu():New() BRUSH oBrush
   ACTIVATE WINDOW oWnd ON INIT ;
      If( ValidLogin(), oBar := BuildRibbon(), oWnd:End() )

   RELEASE BRUSH oBrush

return nil

//----------------------------------------------------------------------------//

static function ValidLogin()

   local cUser, cPassword
   local lValid   := .f.

   EDITVARS cUser, cPassword
   lValid   := !Empty( cUser ) .and. !Empty( cPassword )

return lValid

//----------------------------------------------------------------------------//

function BuildRibbon()

   local oBar

   DEFINE RIBBONBAR oBar WINDOW WndMain() PROMPT "Salir" HEIGHT 120 TOPMARGIN 25
   WndMain():oWndClient:Refresh()

return oBar

//----------------------------------------------------------------------------//
 


Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Ventana MDI con Brush STRETCH

Postby cmsoft » Fri Apr 01, 2022 9:30 pm

Perfecto Mr. Rao, esa es la solucion.
Como siempre, muy agradecido de sus aportes.
Saludos
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 51 guests