Page 1 of 3

Clases UI

Posted: Sun Aug 03, 2014 8:23 am
by cnavarro
Hola
Aunque aun no está al 100 por 100, he decidido publicar el desarrollo que he realizado por si a algún compañero le parece interesante o útil y desea usarlo
Como siempre lo único que solicito es que se mantengan los créditos en los .Prgs
Son unas clases para desarrollar ventanas y diálogos estilo Metro UI así como clases modificadas para su uso heredadas de XBrowse, TBar y TRibbon.
Estas nuevas clases las he realizado fundamentalmente por motivos estéticos.
Cualquier comentario o aporte serán bienvenidos.

Adjunto unas imágenes a modo de un "paso a paso" para que puedan ver algunas de las posibilidades que contempla y el ejemplo que lo construye
También incluyo algunas pruebas
En los siguientes posts indicaré el enlace para descargar las clases e iconos que se usan

Hi there
Although it is not yet 100 per 100, I decided to post the development I've done a classmate if you find it interesting or useful and want to use
As always, all I ask is that credits are kept in. PRGS
Are some lessons for developing Metro style windows and dialogs UI classes and modified for use xBrowse inherited, and TRibbon TBar.
These new classes I've done mainly for aesthetic reasons.
Any comments or input would be greatly appreciated.

Attached some pictures as a "step by step" so they can see some of the options provided and the example that constructs
I also include some tests
The following posts will indicate the link to download the classes and icons used

Code: Select all

/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI01.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"

#define BTN_UP              1
#define BTN_DOWN            2
#define BTN_DISABLE         3
#define BTN_OVERMOUSE       4



Static   oWinUI
Static   oMainBar
static   nLevelAlpha       := 255
Static   nRefresh          := 0

Function Main()

// Sets generales---------------------------------------------------------
   SET EPOCH TO 1990
   SET CENTURY ON
   //SET DELETED ON
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        ( lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   oWinUI := TWindowsUI():New( .T., .T.  , .F. ,       ,      ,     ,      )

   oWinUI:lBttExitUI    := .T.
   oWinUI:aBttExitUI     := { ".\Res\g60645n.bmp", ".\Res\g60646.bmp", 48, 20 }

   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI02.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   oMainBar
Static   nRefresh          := 0

Function Main()
Local lEsMdi
Local lEnMdi
   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)


   SetResDebug( .T. )

   lEsMdi   := .T.
   lEnMdi   := .T.

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        (lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   oWinUI := TWindowsUI():New( .T., .T., lEsMdi,       ,      ,     ,      )

   // 2.- Definicion de Icono de Barra de Titulo y acciones de ventanas

   oWinUI:lDemoUI       := .F.
   oWinUI:lBttIconUI    := .T.
   oWinUI:lBttExitUI    := .T.
   oWinUI:lBttMaxiUI    := .T.   // Si la ventana es lMax, lo desactiva
   oWinUI:lBttMiniUI    := .T.
   oWinUI:lBttNormUI    := .T.   // Si la ventana es lMax, lo desactiva

   oWinUI:aBttIconUI     := { ".\Res\IconUI22.bmp", ".\Res\IconUI221.bmp" }
   oWinUI:aFilMaxiUI     := { ".\Res\path70901n.bmp", ".\Res\path70902.bmp" }
   oWinUI:aFilMiniUI     := { ".\Res\path70911n.bmp", ".\Res\path70912.bmp" }
   oWinUI:aFilNormUI     := { ".\Res\g71112n.bmp", ".\Res\g71122.bmp" }
   oWinUI:aBttExitUI     := { ".\Res\g60645n.bmp", ".\Res\g60646.bmp", 48, 20}

   // Si el entorno es lMdi, aun no se ha creado la TMDICHILD
   // Hay que ponerlo en el oWinUI:bTitUI ( Ver WndUI04.Prg ) porque si el
   // titulo es de la ventana principal o de otro control, hay que indicarlo
   // en su parámetro correspondiente.
   //
   // Para ver todas las posibilidades cambiar las variables locales lEsMdi y
   // lEnMdi

   if lEsMdi
      if !lEnMdi
   oWinUI:SetTitleUI( " Fivewin  /  Harbour 3.2.0 Dev ", -1, ,0 ,;
                      oWinUI:oWndUI  , ;
                     { METRO_WINDOW, METRO_APPWORKSPACE},oWinUI:oFontApliUI  )
      else
   oWinUI:bTitUI         := { | oW | ;
          oWinUI:SetTitleUI( " Fivewin  /  Harbour 3.2.0 Dev ", ;
           -1, ,0 ,, { METRO_APPWORKSPACE, METRO_WINDOW},oWinUI:oFontApliUI  ) }
      endif
   else
   oWinUI:SetTitleUI( " Fivewin Vers.  /  Harbour 3.2.0 Dev ", -1, ,0 ,, ;
                     { METRO_WINDOW, METRO_APPWORKSPACE},oWinUI:oFontApliUI  )

   endif
   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

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

 
Image

Code: Select all

/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI03.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   oMainBar
Static   nRefresh          := 0

Function Main()
Local lEsMdi

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   lEsMdi   := .F.

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        (lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   oWinUI := TWindowsUI():New( .T., .T. , lEsMDi,       ,      ,     ,      )

   // 2.- Definicion de Icono de Barra de Titulo y acciones de ventanas

   oWinUI:lDemoUI       := .F.
   oWinUI:lBttIconUI    := .T.
   oWinUI:lBttExitUI    := .T.
   oWinUI:lBttMaxiUI    := .T.      // Si la ventana es lMax, lo desactiva
   oWinUI:lBttMiniUI    := .T.
   oWinUI:lBttNormUI    := .T.      // Si la ventana es lMax, lo desactiva

   oWinUI:aBttIconUI     := { ".\Res\IconUI22.bmp", ".\Res\IconUI221.bmp" }
   oWinUI:aFilMaxiUI     := { ".\Res\path70901n.bmp", ".\Res\path70902.bmp" }
   oWinUI:aFilMiniUI     := { ".\Res\path70911n.bmp", ".\Res\path70912.bmp" }
   oWinUI:aFilNormUI     := { ".\Res\g71112n.bmp", ".\Res\g71122.bmp" }
   oWinUI:aBttExitUI     := { ".\Res\g60645n.bmp", ".\Res\g60646.bmp", 48, 20}

   //oWinUI:SetTitleUI( " Fivewin V 13.09  /  Harbour 3.2.0 Dev ", -1, ,0 , , ;
   //                  { METRO_WINDOW, METRO_APPWORKSPACE},oWinUI:oFontApliUI  )

   // Tambien se puede definir una funcion para pintar el Titulo
   oWinUI:bTitUI         := { | oW | MiTitulo( oW ) }

   oWinUI:ActivaUI()


   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

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

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

Function MiTitulo( oW )
Local  cTit     := "Fivewin / Harbour"
Local  oSay
Local  nRow     := -1  //7
Local  nCol     := oWinUI:oWndUI:nWidth - 864

@ nRow, nCol SAY oSay PROMPT cTit OF oWinUI:oWndUI ; //:oWndClient ;
        FONT oWinUI:oFontApliUI ;
        PIXEL COLOR METRO_WINDOW, METRO_APPWORKSPACE ;
        SIZE GetTextWidth(0, cTit, oWinUI:oFontApliUI:hFont ), ;
             ( -( oWinUI:oFontApliUI:nInpHeight ) + 4 ) //;

Return oSay
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI04.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 *              - Paneles
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   oMainBar
Static   nRefresh          := 0

Function Main()
Local    lEsMdi

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   lEsMdi   := .F.

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        (lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   //
   //     Probar el ejemplo cambiando la variable lEsMdi

   oWinUI := TWindowsUI():New( .T., .T., lEsMdi,       ,      ,     ,      )

   // 2.- Definicion de Icono de Barra de Titulo y acciones de ventanas

   oWinUI:lDemoUI       := .F.
   //oWinUI:lBttIconUI    := .T.
   oWinUI:lBttExitUI    := .T.
   oWinUI:lBttMaxiUI    := .T.      // Si la ventana es lMax, lo desactiva
   oWinUI:lBttMiniUI    := .T.
   oWinUI:lBttNormUI    := .T.      // Si la ventana es lMax, lo desactiva

   oWinUI:aBttIconUI     := { ".\Res\IconUI22.bmp", ".\Res\IconUI221.bmp" }
   oWinUI:aFilMaxiUI     := { ".\Res\path70901n.bmp", ".\Res\path70902.bmp" }
   oWinUI:aFilMiniUI     := { ".\Res\path70911n.bmp", ".\Res\path70912.bmp" }
   oWinUI:aFilNormUI     := { ".\Res\g71112n.bmp", ".\Res\g71122.bmp" }
   oWinUI:aBttExitUI     := { ".\Res\g60645n.bmp", ".\Res\g60646.bmp", 48, 20}

   // 3.- Definicion de Paneles:
   //                  lWPnelUI:  con Boton, sin icono de Aplicacion
   //                  lPnelUI :  Panel sin boton

   oWinUI:lWPnelUI       := .T.
   //oWinUI:bWPnelUI       := { | oW | MiPnel(,,,,,) }
   oWinUI:cBmpPnel       := ".\Res\back24.bmp"

   oWinUI:bTitUI         := { | oW | ;
          oWinUI:SetTitleUI( "PANEL DE CONTROL" , -1, 0, 1, oWinUI:oWPnelUI, ;
                    { METRO_WINDOW, METRO_ACTIVEBORDER }, oWinUI:oFontApliUI) }

   oWinUI:ActivaUI()


   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI05.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 *              - Paneles
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   oMainBar
Static   nRefresh          := 0

Function Main()
Local    lEsMdi

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   lEsMdi   := .T.

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        (lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   //

   //     Probar el ejemplo cambiando la variable lEsMdi

   oWinUI := TWindowsUI():New( .T., .T., lEsMdi,       ,      ,     ,      )

   // 2.- Definicion de Icono de Barra de Titulo y acciones de ventanas

   oWinUI:lDemoUI       := .F.
   //oWinUI:lBttIconUI    := .T.
   oWinUI:lBttExitUI    := .T.
   oWinUI:lBttMaxiUI    := .T.      // Si la ventana es lMax, lo desactiva
   oWinUI:lBttMiniUI    := .T.
   oWinUI:lBttNormUI    := .T.      // Si la ventana es lMax, lo desactiva

   oWinUI:aBttIconUI     := { ".\Res\IconUI22.bmp", ".\Res\IconUI221.bmp" }
   oWinUI:aFilMaxiUI     := { ".\Res\path70901n.bmp", ".\Res\path70902.bmp" }
   oWinUI:aFilMiniUI     := { ".\Res\path70911n.bmp", ".\Res\path70912.bmp" }
   oWinUI:aFilNormUI     := { ".\Res\g71112n.bmp", ".\Res\g71122.bmp" }
   oWinUI:aBttExitUI     := { ".\Res\g60645n.bmp", ".\Res\g60646.bmp", 48, 20}

   // 3.- Definicion de Paneles:
   //                  lWPnelUI:  con Boton, sin icono de Aplicacion
   //                  lPnelUI :  Panel sin boton

   oWinUI:lPnelUI      := .T.
   //oWinUI:bPnelUI         := { | oW | MiPnel(,,,,,) }

   oWinUI:bTitUI         := { | oW | ;
          oWinUI:SetTitleUI( "PANEL DE CONTROL" , -1, 0, 1, oWinUI:oPnelUI, ;
                    { METRO_WINDOW, METRO_ACTIVEBORDER }, oWinUI:oFontApliUI ) }

   oWinUI:ActivaUI()


   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI06.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 *              - Paneles
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   oMainBar
Static   nRefresh          := 0

Function Main()
Local    lEsMdi

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   lEsMdi   := .T.

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        (lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   //
   //     Probar el ejemplo cambiando la variable lEsMdi

   oWinUI := TWindowsUI():New( .T., .T., lEsMdi,       ,      ,     ,      )

   // 2.- Definicion de Icono de Barra de Titulo y acciones de ventanas

   oWinUI:lDemoUI       := .F.
   oWinUI:lBttIconUI    := .F.

   // 3.- Definicion de Paneles:
   //                  lWPnelUI:  con Boton, sin icono de Aplicacion
   //                  lPnelUI :  Panel sin boton

   oWinUI:lWPnelUI       := .T.
   //oWinUI:bWPnelUI       := { | oW | MiPnel(,,,,,) }
   oWinUI:cBmpPnel       := ".\Res\back321.bmp"

   oWinUI:bTitUI         := { | oW | ;
          oWinUI:SetTitleUI( "Panel de Control" , -1, 0, 1, oWinUI:oWPnelUI, ;
                    { METRO_WINDOW, METRO_APPWORKSPACE }, oWinUI:oFontApliUI ) }

   oWinUI:ActivaUI()


   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI07.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 *              - Paneles
 *              - Button Bar
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   oMainBar
Static   nRefresh          := 0

Function Main()
Local    lEsMdi

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   lEsMdi   := .T.

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        (lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   //
   //     Probar el ejemplo cambiando la variable lEsMdi

   oWinUI := TWindowsUI():New( .T., .T., lEsMdi,       ,      ,     ,      )

   // 2.- Definicion de Icono de Barra de Titulo y acciones de ventanas

   oWinUI:lDemoUI       := .F.
   oWinUI:lBttIconUI    := .F.

   // 3.- Definicion de Paneles:
   //                  lWPnelUI:  con Boton, sin icono de Aplicacion
   //                  lPnelUI :  Panel sin boton

   oWinUI:lWPnelUI       := .T.
   //oWinUI:bWPnelUI       := { | oW | MiPnel(,,,,,) }
   oWinUI:cBmpPnel       := ".\Res\back321.bmp"

   oWinUI:bTitUI         := { | oW | ;
          oWinUI:SetTitleUI( "Panel de Control" , -1, 0, 1, oWinUI:oWPnelUI, ;
                    { METRO_WINDOW, METRO_APPWORKSPACE }, oWinUI:oFontApliUI ) }


   // 4.- Definir BarButton
   oWinUI:lBarUI         := .T.
   // Otras formas de definir el Button Bar
   //oWinUI:SetBarUI( , , ,  )
   //oWinUI:bBarUI         := { | oW | MiBar() }


   oWinUI:ActivaUI()


   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI08.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 *              - Paneles
 *              - Ribbon Bar
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "ribbon.ch"

#include "colores.ch"


Static   oWinUI
Static   oMainBar
Static   nRefresh          := 0

Function Main()
Local    lEsMdi

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   lEsMdi   := .T.

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        (lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   //
   //     Probar el ejemplo cambiando la variable lEsMdi

   oWinUI := TWindowsUI():New( .T., .T., lEsMdi,       ,      ,     ,      )

   // 2.- Definicion de Icono de Barra de Titulo y acciones de ventanas
   //     Si no existe lBttExit, se asigna al bAction del icono el :End()

   oWinUI:lDemoUI       := .F.
   oWinUI:lBttIconUI    := .T.
   oWinUI:aBttIconUI    := { ".\Res\IconUI22.bmp", ".\Res\IconUI221.bmp" }

   // Posibilidad de definir posicion del IconoBmp
   //oWinUI:nRowBttIcoUI  := 1
   //oWinUI:nColBttIcoUI  := 1

   // 5.- Definir RibbonBar

   oWinUI:lRbbUI      := .T.
   oWinUI:bRbbUI      := { | oW | MiRibbon( lEsMdi ) }

   oWinUI:ActivaUI()


   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

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

Function MiRibbon( lChild )
Local   x
Local   oRBar
Local   oGrp       := {}
Local   oWClient   := oWinUI:oWndUI
Local   nWidth     := if( lChild, oWClient:oWndClient:nWidth - 3, 0 )
Local   nHeight    := if( lChild, Int( oWClient:oWndClient:nHeight / 6 ), 0 )
Local   oDlg                                  //:aWnd[1]
DEFAULT lChild     := .T.

   oDlg  := if( lChild, oWClient:oWndClient, oWClient )

   if !lChild
      nWidth     := oWClient:nWidth - 3
      nHeight    := Int( oWClient:nHeight / 6 ) + 20
   endif

   oWinUI:lRbbUI := .T.
   oRBar := TRibbonBar():New( oDlg,;
                              { "VISUAL MAKE","EDITOR","UTILIDADES" },;
                              ,, nWidth , nHeight ,,,,,,,,,,,.F.,,.T.,)
//                              ,,  , ,,,,,,,,,,,.F.,,.T.,)
   WITH OBJECT oRBar

        :nTop             = 26
        :nLeft            = 1
        :nHeightFld       = 24
        //:nBottom          = nHeight
        //:nRight           = nWidth + :nLeft
        :nWidth           = nWidth // ( :nLeft * 10 )
        //:nHeight          = nHeight

        //:lFillFld         = .F.

   ENDWITH

   oRBar:CalcPos()


   ASize( oGrp, 0 )

   For  x = 1 to Len( oRBar:aPrompts )
        AAdd( oGrp, nil )

        WndWidth(  oRBar:aDialogs[x]:hWnd, ;
                  IF(oWinUI:lMax, GetSysMetrics(0)-1, oWinUI:oWndUI:nWidth ) - 4 )

        @ 0 , 0 RBGROUP oGrp[1] OF oRBar:aDialogs[x] ;
                PROMPT oRBar:aPrompts[x] ;
                SIZE oRBar:aDialogs[x]:nWidth-1 , oRBar:aDialogs[x]:nHeight-1 ; //  FONT oFontFld ; //Edt  ;
                LINECOLORS CLR_WHITE , CLR_WHITE  ;
                GRADIANT { { 1, CLR_WHITE, CLR_WHITE } ,;
                           { 0, RGB( 100, 100, 100 ), RGB( 100, 100, 100 ) } } ;
                CAPTIONGRAD { { 1, CLR_WHITE, CLR_WHITE } ,;
                              {   0, RGB( 100, 100, 100 ), RGB( 100, 100, 100 ) } } ;
                TEXTCOLOR METRO_APPWORKSPACE

         //oRBar:aClrTabTxt[ x ]  := {|| METRO_APPWORKSPACE }
   Next x

   oRBar:CalcPos()

   SetParent( oRBar:hWnd, oDlg:hWnd )

   if oWinUI:lBttIconUI .and. !lChild
      if oWinUI:nRowBttIcoUI >= oRBar:nTop
         SetParent( oWinUI:oBtnIconUI:hWnd, oRBar:hWnd )
      endif
   endif

Return oRBar

//----------------------------------------------------------------------------//
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI09.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 *              - Paneles
 *              - Ribbon Bar y ejemplos
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "ribbon.ch"

#include "colores.ch"


Static   oWinUI
Static   oMainBar
Static   nRefresh          := 0

Function Main()
Local    lEsMdi

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )                // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )             // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   lEsMdi   := .T.

   // 1.- Definicion de Ventana
   //     La definicion de ventanas MDI está ajustándose
   //                        (lMax , lMdi, nColor, nStyl, oWnd, bWnd )
   //
   //     Probar el ejemplo cambiando la variable lEsMdi

   oWinUI := TWindowsUI():New( .T., .T., lEsMdi,       ,      ,     ,      )

   // 2.- Definicion de Icono de Barra de Titulo y acciones de ventanas
   //     Si no existe lBttExit, se asigna al bAction del icono el :End()

   oWinUI:lDemoUI       := .F.
   oWinUI:lBttIconUI    := .T.
   oWinUI:aBttIconUI     := { ".\Res\IconUI22.bmp", ".\Res\IconUI221.bmp" }

   // Posibilidad de definir posicion del IconoBmp
   //oWinUI:nRowBttIcoUI  := 1
   //oWinUI:nColBttIcoUI  := 1

    // 5.- Definir RibbonBar

   oWinUI:lRbbUI      := .T.
   oWinUI:bRbbUI      := { | oW | MiRibbon() }

   // 6.- Definir XBrowse
   // Probar haciendo click en un fichero y mover la rueda del mouse
   oWinUI:bXbrwUI         := { | oW | UIXBrowse() }


   oWinUI:bXMnuUI         := { | oW | UIXMnu() }


   oWinUI:ActivaUI()


   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

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

Function MiRibbon()
Local   x
Local   oGrp          := {}
Local   aOBttBar      := {}
Local   oBackStage
Local   oBtnBack
Local   aGradBack
Local nFBtt       := 4
Local nB          := 82

Local oRBar
Local nSz1        := 82
Local nSz2        := 60

Local   cPrompt       := ""
Local   oDlg
Local   bSalir        := { || oWinUI:End() }

Local nRowUI      := 0 //26
Local nColUI      := IF( oWinUI:lWPnelUI, oWinUI:oWPnelUI:nWidth+1, 1 ) //300
Local aPromptsUI  := { "PROGRAMAS","EDITOR","UTILIDADES" }
//Local oUI         := if( oWinUI:lMdiUI, oWinUI:oWndUI:oWndClient:aWnd[ 1 ], oWinUI:oWndUI:oClient )
Local oUI         := if( oWinUI:lMdiUI, oWinUI:oWndUI:oWndClient, oWinUI:oWndUI)
Local nWidthUI    := GetSysMetrics(0) - ( nColUI + 2 )//GetSysMetrics(0) //oUI:nWidth
Local nHeightUI   := Int( GetSysMetrics(1) / 6 ) - 8   // oUI:nHeight

   if oWinUI:lPnelUI
      nWidthUI   := oUI:nWidth - 4 - oWinUI:oPnelUI:nWidth
   endif

   oWinUI:lRbbUI := .T.
   oRBar := TRibbonBar():New( oUI, aPromptsUI,;
                              ,,nWidthUI ,nHeightUI ,,,,,,,,,,,.F.,,.T.,)

   WITH OBJECT oRBar
        //:oFont         = oWinUI:oFontTitleUI

        :nClrPaneRB       = METRO_WINDOW
        :nClrBoxOut       = METRO_WINDOW
        :nClrBoxIn        = METRO_ACTIVEBORDER     //APPWORKSPACE
        :nClrBoxSelOut    = METRO_WINDOW
        :nClrBoxSelIn     = METRO_ACTIVEBORDER     //APPWORKSPACE

        :nTop             = nRowUI
        :nLeft            = nColUI

        //:lFillFld         = .F.

        :nLeftMargin      = 110     //110
        //:nHeightFld       = 24

        :nTopMargin       = :nHeightFld + 2 //Margen desde punto superior
        //:nType            = 4

   ENDWITH

   oRBar:CalcPos()

//--------------
  /*
   aGradBack             = { {  0, METRO_ACTIVEBORDER, METRO_ACTIVEBORDER },;
                             {100, METRO_WINDOW, METRO_WINDOW } }

                                      //"./../bitmaps/rbnmenu.bmp"
   oBtnBack = TRBtn():New( 0, 2, 84, 22, ".\Res\g483n1.bmp", { || oRBar:Backstage() }, oRBar,;
        ,,,,,, .T., .F.,,,,,, "SAYBUTTON" , oBackStage,,aGradBack,,,,,,,,,,,;
        aGradBack , METRO_WINDOW, METRO_WINDOW ) //ACTIVEBORDER )
        //CargaImgBtt( ".\Res\g483n1.png" ,  , oBtnBack )

   oBtnBack:nRound   := 0
   oBtnBack:aClrGradOver  := aGradBack
   oBtnBack:aClrGradUnder := aGradBack

                                          //oRBar
   oBackStage := TBackStage():New( 26, , , ,  , 106 )

   oBackStage:AddOption( "Test1", , ,;
                  1, , , , ,;
                  , , , ;
                  , { || MsgInfo("Test 1") } )

   oBackStage:AddOption( "Test2", , ,;
                  1, , , , ,;
                  , , , ;
                  , { || MsgInfo("Test 2") } )

   oRBar:SetBackStage( oBackStage )
 */

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

   ASize( oGrp, 0 )
   ASize( aOBttBar , 0 )
   For  x = 1 to Len( oRBar:aPrompts )    //APPWORKSPACE
        oRBar:aClrTabTxt[x]  := {|| {{METRO_ACTIVEBORDER, METRO_WINDOW},;
                                           {METRO_AZUL8, METRO_WINDOW},;
                                           {METRO_AZUL8, METRO_WINDOW},;
                                           {METRO_AZUL8, METRO_WINDOW}} }
        AAdd( oGrp, Nil )
        AAdd( aOBttBar , {} )
        //WndWidth(  oRBar:aDialogs[x]:hWnd, ;
        //           IF(oWinUI:lMax, GetSysMetrics(0), oWinUI:oWndUI:nWidth ) - 4 - nColUI - 2 )
        oDlg       := oRBar:aDialogs[x]
        nHeightUI  := oRBar:aDialogs[x]:nHeight-1
        nWidthUI   := oRBar:aDialogs[x]:nWidth-1
        cPrompt    := "EXPLORADOR DE ARCHIVOS"  //Upper( oRBar:aPrompts[x] )
        oGrp[x] := TRBGroup():New( oDlg, 0, 0, nHeightUI, nWidthUI, , ;
                                   cPrompt,, METRO_WINDOW, METRO_WINDOW, ;
                                   { { 1, METRO_WINDOW, METRO_WINDOW } , ;
                                     { 0, RGB( 100, 100, 100 ), ;
                                          RGB( 100, 100, 100 ) } }, ;
                                   , { { 1, METRO_WINDOW, METRO_WINDOW } , ;
                                     { 0, RGB( 100, 100, 100 ), ;
                                          RGB( 100, 100, 100 ) } }, ;
                                   , , ,,,, METRO_ACTIVEBORDER ) //APPWORKSPACE )
        oGrp[x]:bAction := { || MsgInfo( "Action Grupo - 1" ) }
   Next x

   For x = 1 to 1 //Len( oGrp )

   AAdd( aOBttBar[x] , Nil )

   @ nFBtt, 2+nB*(x-1) ADD BUTTON aOBttBar[x][1] PROMPT "Salir" ;
          GROUP oGrp[x] ;
          SAYBUTTON ;
          SIZE nSz1, nSz2 TOP ;
          BITMAP ".\Res\g821n1.bmp" ;
          LINECOLORS METRO_WINDOW, METRO_WINDOW ;
          TOOLTIP "TOOLTIP BOTON 1"
          aOBttBar[x][1]:bAction := bSalir
          //aOBttBar[x][1]:oFont := oFontFld
          //CargaImgBtt( ".\Res\g821n1.png" ,  , aOBttBar[x][1] )

   AAdd( aOBttBar[x] , Nil )

   @ nFBtt, 2+nB*(x) ADD BUTTON aOBttBar[x][2] PROMPT "Boton 2" ;
          GROUP oGrp[x] ;
          SAYBUTTON ;
          ACTION MsgInfo("Boton - 2","Atencion") ; //CANCEL
          SIZE nSz1, nSz2 TOP ;
          BITMAP ".\Res\g679n1.bmp" ;
          LINECOLORS METRO_WINDOW, METRO_WINDOW ;
          TOOLTIP "TOOLTIP BOTON 2"
          //aOBttBar[x][1]:oFont := oFontFld
          //CargaImgBtt( ".\Res\g679n1.png" ,  , aOBttBar[x][2] )

   AAdd( aOBttBar[x] , Nil )

   @ nFBtt, 2+nB*(x)*2 ADD BUTTON aOBttBar[x][3] PROMPT "Boton 3" ;
          GROUP oGrp[x] ;
          SAYBUTTON ;
          ACTION MsgInfo("Boton - 3","Atencion") ; //CANCEL
          SIZE nSz1, nSz2 TOP ;
          BITMAP ".\Res\g3749n1.bmp" ;
          LINECOLORS METRO_WINDOW, METRO_WINDOW ;
          TOOLTIP "TOOLTIP BOTON 3"
          //aOBttBar[x][1]:oFont := oFontFld
          //CargaImgBtt( ".\Res\g3749n1.png" ,  , aOBttBar[x][3] )

   AAdd( aOBttBar[x] , Nil )

   @ nFBtt, 2+nB*(x)*3 ADD BUTTON aOBttBar[x][4] PROMPT "Boton 4" ;
          GROUP oGrp[x] ;
          SAYBUTTON ;
          ACTION MsgInfo("Boton - 4","Atencion") ; //CANCEL
          SIZE nSz1, nSz2 TOP ;
          BITMAP ".\Res\g653.bmp" ;
          LINECOLORS METRO_WINDOW, METRO_WINDOW ;
          TOOLTIP "TOOLTIP BOTON 4"
          //aOBttBar[x][1]:oFont := oFontFld
          //CargaImgBtt( ".\Res\g653.png" ,  , aOBttBar[x][4] )

   Next x

   SetParent( oRBar:hWnd, if( oWinUI:lMdiUI, oUI:hWnd, oWinUI:oWndUI:hWnd ) )

   if oWinUI:lBttIconUI //.and. !oWinUI:lMdiUI
      if oWinUI:nRowBttIcoUI >= oRBar:nTop
         SetParent( oWinUI:oBtnIconUI:hWnd, oRBar:hWnd )
      endif
   endif

Return oRBar

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

Function UIXBrowse()
Local oXBrw
Local aT      := {}
Local aN      := {}
Local aB      := {}
Local aF      := {}
Local aH      := {}
Local aG      := {}

Local aN1     := {}
Local aB1     := {}
Local aF1     := {}
Local aH1     := {}
Local aG1     := {}

Local oFld
Local nDlg
Local aTabla
Local nLen
Local nLen1
Local x
Local oWClient      := oWinUI:oWndUI  //:oWndClient
Local nWidth        := oWClient:oWndClient:nWidth - 4
Local nHeight       := oWClient:oWndClient:nHeight - 22  //28
Local oDlg
Local oBrush1
Local oFont1
Local y             := 0
Local nBmp        := 3
Local aBitmaps    := {}
Local aBmpPal
Local aBmps1      := { ;
                       ".\Res\Bmps\new.bmp",;
                       ".\Res\Bmps\addprgg1.bmp",;
                       ".\Res\Bmps\M_AGREGADIR.BMP",;
                       ".\Res\Bmps\M_AGREGAUNO.BMP",;
                       ".\Res\Bmps\open.bmp",;
                       ".\Res\Bmps\M_ARBOL.BMP",;
                       ".\Res\Bmps\M_COLOR.BMP",;
                       ".\Res\Bmps\M_EXPLORA.BMP",;
                       ".\Res\Bmps\Run.bmp",;
                       ".\Res\Bmps\Copy.bmp" ;
                     }

   For x = 1 to Len( aBmps1 )
       if !empty( aBmps1[x] )
          AAdd( aBitmaps, Array(6) )             // hBmp := ReadBitmap( , file )
          aBmpPal   := PalBmpRead( , aBmps1[x] ) //PalBmpLoad( aBmps1[x] )
          aBitmaps[ Len(aBitmaps), 1 ]   :=  aBmpPal[ 1 ]
          aBitmaps[ Len(aBitmaps), 2 ]   :=  aBmpPal[ 2 ]
          if x = 1
          aBitmaps[ Len(aBitmaps), 3 ]   :=  16   //20
          aBitmaps[ Len(aBitmaps), 4 ]   :=  16   //20
          else
          aBitmaps[ Len(aBitmaps), 3 ]   :=  16
          aBitmaps[ Len(aBitmaps), 4 ]   :=  16
          endif
          aBitmaps[ Len(aBitmaps), 5 ]   :=  0
          aBitmaps[ Len(aBitmaps), 6 ]   :=  .F.
          aBmpPal   := Nil
       endif
   Next x

   nLen1  := 0

   nLen  := ADIR(".\*.*")
   ASize( aN , nLen )
   ASize( aB , nLen )
   ASize( aF , nLen )
   ASize( aH , nLen )
   ASize( aG , nLen )

   ADIR( ".\*.*", aN, aB, aF, aH, aG )

   For x = nLen1+1 to nLen+nLen1
       AAdd( aT , {,,,,} )
       aT[x][1]  := aN[x-nLen1]
       if aB[x-nLen1] > 0                     //   2
          aT[x][2]  := Str( Round( aB[x-nLen1]/1000 , 0 ) )+" KB"
       else
          aT[x][2]  := " " //" 0 KB"
       endif
       aT[x][3]  := aF[x-nLen1]
       aT[x][4]  := aH[x-nLen1]
       aT[x][5]  := aG[x-nLen1]
   Next x


   //DEFINE BRUSH oBrush1 COLOR CLR_WHITE
   DEFINE FONT oFont1 NAME "Segoe UI LIGHT" SIZE 0, -12
   oDlg  := oWClient:oWndClient:aWnd[1]
            //TXCBrowse
   oXBrw := TXBrowse():New( oDlg )

   WITH OBJECT oXBrw

   //:oBrush          := oBrush1

   :nStyle          -= WS_BORDER
   :lTransparent   := .F.

   :cCaption        := ""

   :l2007             := .f.

   :nTop              := IF( oWinUI:lRbbUI, oWinUI:oRbbUI:nHeight+oWinUI:oRbbUI:nTop,  1 )
   :nLeft             := 1 + Int( nWidth/5 )
   :nBottom           := nHeight
   :nRight            := nWidth

   :lDesign           := .f.
   :SetFont( oFont1 )

   :lHeader           := .T.

   :nHeaderHeight     :=  24
                         // Azul Cobalto  Rgb(  0, 71, 171)
                         // Marron claro titulo ventanas W8 { 209, 168, 129 }
   :bClrHeader        := {|| { Rgb( 255, 255, 255), Rgb(  0, 25, 64 )} }

   :lFooter           := .F.    //.T.
   :nFooterHeight     :=  0     //14

   // DATAs de XCBrowse
   if Upper( oXBrw:ClassName() ) == "TXCBROWSE"

     :lHeadSelec        := .F.
     :lLinBorder        := .f.
     :lLinDataSep       := .f.
     :lLinHeadVSep      := .f.
     :lLinHeadHSep      := .f.
     :lLinFootVSep      := .f.
     :lLinFootHSep      := .f.
     :lHeadBtton        := .F.  //.F.
     :nWRecordSel       :=  24
     :lNoEmpty          := .F.

   endif

   :lRecordSelector   := .F.
   :bClrHeader        := { || { METRO_WINDOW, METRO_GRIS4 } }
   :nRowDividerStyle  := LINESTYLE_NOLINES        //4
   :nColDividerStyle  := LINESTYLE_NOLINES        //4

   :nRecSelColor      := METRO_APPWORKSPACE   //Rgb( 202, 162, 126 )

   //:nDataLines        :=  1

   :lAllowColSwapping := .f.
   :lVScroll          := .T.
   :lHScroll          := .f.
   :nRowHeight        :=  24
   :nFreeze           :=  1
   :nMarqueeStyle     :=  MARQSTYLE_HIGHLWIN7 //MARQSTYLE_HIGHLROW //CELL  //LROWMS // 3     // 5

   //:nSpRecordSel      :=  0

   :bClrSel           := { || { METRO_APPWORKSPACE, Rgb( 210, 210, 204 ) } }
   :bClrStd           := { || { METRO_APPWORKSPACE, CLR_WHITE } }
   :bClrSelFocus      := { || { CLR_WHITE, Rgb( 153, 180, 209 ) } }
   //:bClrRowFocus      := { || { METRO_APPWORKSPACE , CLR_WHITE } }


   :lAutoSort         := .F.
   :SetArray( aT )

   :aCols[1]:nWidth         := Int( :nWidth/5 ) + 112
   :aCols[1]:aBitmaps       := aBitmaps
   :aCols[1]:bBmpData       := {| oB | IF( ( oXBrw:nArrayAt % 10  = 0 ), 1 , (oXBrw:nArrayAt % 10)+1 ) }
   :aCols[1]:cHeader        := "Nombre"
   :aCols[1]:nDataStrAlign  := 0
   :aCols[1]:bClrHeader     := { || { METRO_APPWORKSPACE, CLR_WHITE } }
   :aCols[1]:nHeadBmpNo     := 1      // 0 -> Quita icono cabecera
   //:aCols[1]:cOrder         := "A"

   /*
   :aCols[1]:lSetBmpCol     := .F.   // Poner a .t. para poner el icono de la columna 1 en la del Selector
   if :aCols[1]:lSetBmpCol
      :aCols[1]:nHeadStrAlign  := 2
   else
      :aCols[1]:nHeadStrAlign  := 2
   endif
   */

   :aCols[1]:lAllowSizing   := .f.
   :aCols[1]:nEditType       := 0

   :aCols[2]:nWidth         := Int( :nWidth/5 )-60
   //:aCols[2]:aBitmaps       := aBitmaps
   //:aCols[2]:bBmpData       := {|| oxBrw:nArrayAt + 1 }
   :aCols[2]:cHeader        := "Tamaño"
   :aCols[2]:bClrHeader  := { || { METRO_APPWORKSPACE, CLR_WHITE } }
   :aCols[2]:nDataStrAlign  := 1
   //:aCols[2]:nHeadBmpNo     := 1
   /*
   :aCols[2]:lSetBmpCol     := .f.   // Poner a .t. para poner el icono de la columna 1 en la del Selector
   if :aCols[2]:lSetBmpCol
      :aCols[2]:nHeadStrAlign  := 2
   else
      :aCols[2]:nHeadStrAlign  := 2
   endif
   */
   :aCols[2]:lAllowSizing   := .f.
   :aCols[2]:nEditType       := 0

   :aCols[3]:nWidth         := Int( :nWidth/5 )-4
                                 //oBrw:nRight - if( oBrw:lRecordSelector , Max( oBrw:nWRecordSel, 24 ), 0 )-if( oBrw:lVScroll, 10, 0 )
   //:aCols[3]:aBitmaps       := aBitmaps
   //:aCols[3]:bBmpData       := {|| oxBrw:nArrayAt + 1 }
   :aCols[3]:cHeader        := "Fecha"
   :aCols[3]:bClrHeader  := { || { METRO_APPWORKSPACE, CLR_WHITE } }
   :aCols[3]:nDataStrAlign  := 0
   //:aCols[3]:nHeadBmpNo     := 1
   /*
   :aCols[3]:lSetBmpCol     := .f.   // Poner a .t. para poner el icono de la columna 1 en la del Selector
   if :aCols[3]:lSetBmpCol
      :aCols[3]:nHeadStrAlign  := 2
   else
      :aCols[3]:nHeadStrAlign  := 2
   endif
   */
   :aCols[3]:lAllowSizing   := .f.
   :aCols[3]:nEditType       := 0

   :aCols[4]:nWidth         := Int( :nWidth/5 )-4
   //:aCols[1]:aBitmaps       := aBitmaps
   //:aCols[1]:bBmpData       := {|| oxBrw:nArrayAt + 1 }
   :aCols[4]:cHeader        := "Hora"
   :aCols[4]:bClrHeader  := { || { METRO_APPWORKSPACE, CLR_WHITE } }
   :aCols[4]:nDataStrAlign  := 0
   //:aCols[4]:nHeadBmpNo     := 1
   /*
   :aCols[4]:lSetBmpCol     := .f.   // Poner a .t. para poner el icono de la columna 1 en la del Selector
   if :aCols[4]:lSetBmpCol
      :aCols[4]:nHeadStrAlign  := 2
   else
      :aCols[4]:nHeadStrAlign  := 2
   endif
   */
   :aCols[4]:lAllowSizing   := .f.
   :aCols[4]:nEditType       := 0

   :aCols[5]:nWidth         := Int( :nWidth/5 ) - 70   // 72 - // Si tiene borde
   //:aCols[5]:aBitmaps       := aBitmaps
   //:aCols[5]:bBmpData       := {|| oxBrw:nArrayAt + 1 }
   :aCols[5]:cHeader        := "Tipo"
   :aCols[5]:bClrHeader  := { || { METRO_APPWORKSPACE, CLR_WHITE } }
   :aCols[5]:nDataStrAlign  := 2
   //:aCols[5]:nHeadBmpNo     := 1
   /*
   :aCols[5]:lSetBmpCol     := .f.   // Poner a .t. para poner el icono de la columna 1 en la del Selector
   if :aCols[5]:lSetBmpCol
      :aCols[5]:nHeadStrAlign  := 2
   else
      :aCols[5]:nHeadStrAlign  := 0
   endif
   */
   :aCols[5]:lAllowSizing   := .f.
   :aCols[5]:nEditType       := 0

   :CreateFromCode()
   aBitmaps := Nil

   END

   //oDlg:SetControl( oXBrw )
   //oDlg:AddControl( oXBrw )
   //while oFont1:nCount > 0
         oFont1:End()
   //end
   oFont1   := Nil
   oBrush1  := Nil

Return oXBrw

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

Function UIXMnu()
Local oXBrw
Local aT      := {}
Local aN      := {}
Local aB      := {}
Local aF      := {}
Local aH      := {}
Local aG      := {}

Local aN1     := {}
Local aB1     := {}
Local aF1     := {}
Local aH1     := {}
Local aG1     := {}

Local oFld
Local nDlg
Local aTabla
Local nLen
Local nLen1
Local x
Local oWClient      := oWinUI:oWndUI  //:oWndClient
Local nWidth        //:= oWClient:oWndClient:nWidth - 4
Local nHeight       := oWClient:oWndClient:nHeight - 24
Local oDlg
Local oBrush1
Local oBrush2
Local oFont1
Local lSw           := .T.
Local y             := 0
Local aData       := {{"      Aplicacion "},;
                      {"      Ficheros   "},; // {"Seleccionar Usuario 8066"},;
                      {"      Carpetas   "},;
                      {"      Abrir      "},;
                      {"      Nuevos     "},;
                      {"      Utilidades "},;
                      {"      Copiar     "},;
                      {"      Documentos "},;
                      {"      Utiles     "},;
                      {"      Listados   "},;
                      {"      Setup      " }}
Local aTipos      := { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }

if oWinUI:lWPnelUI
   oDlg  := oWinUI:oWPnelUI   //       oWClient:oWndClient:aWnd[1]
else
   oDlg  :=  oWClient:oWndClient:aWnd[1]
endif
   //? oWinUI:oWPnelUI
   DEFINE BRUSH oBrush1 COLOR METRO_ACTIVEBORDER
   DEFINE BRUSH oBrush2 COLOR METRO_WINDOW
   DEFINE FONT oFont1 NAME "Segoe UI Light" SIZE 0, -24

   oXBrw := TXCBrowse():New( oDlg )

   WITH OBJECT oXBrw

   //:oBrush          := oBrush1

   :nStyle          -= WS_BORDER
   :lTransparent   := .F.

   :cCaption        := ""    //"Prueba de Browse"

   :l2007             := .F.
   //:l2010    := .t.      // No implementado -- 18/02/2013 -- FWh - 31/03/2012

   :nTop              := IF( oWinUI:lRbbUI, oWinUI:oRbbUI:nHeight+oWinUI:oRbbUI:nTop,  1 )
   //:nTop              := 132 //IF( oWinUI:lRbbUI, oWinUI:oRbbUI:nHeight+1,  1 )
   :nLeft             := 2
   :nBottom           := nHeight    //736
   :nRight            := 268   //nWidth

   :lDesign           := .f.
   //:oFont             := oFont1
   :SetFont( oFont1 )

   :lHeader           := .F.
   :lHeadSelec        := .F.   //.t.
   :nHeaderHeight     :=  0
   //:bClrHeader        := {|| { Rgb( 255, 255, 255), Rgb(  0, 25, 64 )} }

   :lFooter           := .F.    //.T.
   :nFooterHeight     :=  0     //14

   // DATAs de XCBrowse
   if Upper( oXBrw:ClassName() ) == "TXCBROWSE"

   :lLinBorder        := .f.
   :lLinDataSep       := .f.
   :lLinHeadVSep      := .f.
   :lLinHeadHSep      := .f.
   :lLinFootVSep      := .f.
   :lLinFootHSep      := .f.
   :lHeadBtton        := .T.  //.F.
   :nWRecordSel       :=  24

   endif

   :lRecordSelector   := .F.
   :nRowDividerStyle  := LINESTYLE_NOLINES        //4
   :nColDividerStyle  := LINESTYLE_NOLINES        //4

   :nDataLines        :=  1

   :lAllowColSwapping := .F.
   :lVScroll          := .F.
   :lHScroll          := .F.
   :nRowHeight        :=  56
   :nFreeze           :=  1
   :nMarqueeStyle     :=  3 //MARQSTYLE_HIGHLROW //CELL  //LROWMS // 3     // 5

   //:nSpRecordSel      :=  0

   if !lSw
   :nRecSelColor      := METRO_ACTIVEBORDER   //METRO_APPWORKSPACE
   :bClrSel           := { || { METRO_WINDOW , METRO_APPWORKSPACE } }
   :bClrStd           := { || { METRO_WINDOW , METRO_ACTIVEBORDER } }
   :bClrSelFocus      := { || { METRO_APPWORKSPACE, METRO_WINDOW  } }
   :bClrRowFocus      := { || { METRO_APPWORKSPACE , METRO_WINDOW }  }
   :SetBrush( oBrush1 )
   else
   :nRecSelColor      := METRO_APPWORKSPACE
   :bClrSel           := { || { METRO_APPWORKSPACE, METRO_WINDOW } }
   :bClrStd           := { || { METRO_ACTIVEBORDER, METRO_WINDOW } }
   :bClrSelFocus      := { || { METRO_WINDOW , METRO_APPWORKSPACE } }
   :bClrRowFocus      := { || { METRO_WINDOW , METRO_APPWORKSPACE }  }
   endif

   :lAutoSort         := .F.
   :SetArray( aData )

   :aCols[1]:nWidth         := oDlg:nWidth - 2 //266
   :aCols[1]:lAllowSizing   := .F.
   :aCols[1]:nEditType       := 0

/*
      :bClrSel          := { || { CLR_WHITE, Rgb(128,128,128) } }
      :bClrSelFocus     := { || { CLR_WHITE, Rgb(051,051,051) } }
      :bClrRowFocus     := { || { CLR_BLACK, Rgb(128,128,128) } }
*/
   END
   oXBrw:CreateFromCode()

   //SetParent( oXBrw:hWnd, oDlg:hWnd )
   //oDlg:AddControl( oXBrw )

   //oDlg:SetControl( oXBrw )
   //oDlg:AddControl( oXBrw )
   oBrush1:End()
   oBrush2:End()
   //while oFont1:nCount > 0
         oFont1:End()
   //end
   oFont1   := Nil
   oBrush1  := Nil
   oBrush2  := Nil

Return oXBrw

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

 
Image

Re: Clases UI

Posted: Sun Aug 03, 2014 8:41 am
by cnavarro
Continuacion

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI10.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Entorno UI
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   nRefresh          := 0

Function Main()
Local lMax    := .T.
Local lEsMdi  := .F.
Local nColor  := METRO_AZUL3
Local cTit    := "Inicio"
Local cUser   := WNetGetUser()
//Local aBtt    := { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }
Local aBtt    := { { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }, ;
                   { ".\Res\OnOff32.bmp", ".\Res\OnOff32.bmp" }, ;
                   { ".\Res\Busca32.bmp", ".\Res\Busca32.bmp" } }

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )              // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )           // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   //---------------------------     -----------------------------------------//
   // Modelo 001:  Ventana: Panel principal
   //                       En ventana principal: NO MDI (No es necesario MDI)
   //---------------------------     -----------------------------------------//

   oWinUI := TWindowsUI():PnelPPal( .T., lMax, lEsMdi, nColor, cTit, cUser, aBtt )
   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
 
Image

Code: Select all

/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI11.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
*              - Entorno UI
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   nRefresh          := 0

Function Main()
Local lMax    := .T.
Local lEsMdi  := .F.
Local nColor  := METRO_AZUL3
Local cTit    := "Inicio"
Local cUser   := WNetGetUser()
//Local aBtt    := { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }
Local aBtt    := { { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }, ;
                   { ".\Res\OnOff32.bmp", ".\Res\OnOff32.bmp" }, ;
                   { ".\Res\Busca32.bmp", ".\Res\Busca32.bmp" } }

Local oDlgR
Local oDlgL
Local oDlgT
Local oDlgB

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )              // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )           // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   //---------------------------     -----------------------------------------//
   // Modelo 002:  Ventana: Panel principal
   //                       En ventana principal: NO MDI (No es necesario MDI)
   //
   //              Definicion de cuadros de diálogos laterales
   //---------------------------     -----------------------------------------//


   oWinUI := TWindowsUI():PnelPPal( .T., lMax, lEsMdi, nColor, cTit, cUser, aBtt)

   //              Definicion de cuadros de diálogos laterales

   // Derecho (Right)
   oWinUI:lDlgRight   := .T.
   oWinUI:SRightUpUI( , , , , )
   // Izquierdo (Left)
   oWinUI:lDlgLeft    := .T.
   oWinUI:SLeftUpUI( , , , , )
   // Superior (Up)
   oWinUI:lDlgBottom  := .F.
   oWinUI:lDlgTop     := .F.

   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
 
Image

Code: Select all

/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI12.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Entorno UI
 *              - Paneles laterales
 *              - Imagenes de en cuadro izquierdo
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   nRefresh          := 0

Function Main()
Local lMax    := .T.
Local lEsMdi  := .F.
Local nColor  := METRO_AZUL3
Local cTit    := "Inicio"
Local cUser   := WNetGetUser()
//Local aBtt    := { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }
Local aBtt    := { { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }, ;
                   { ".\Res\OnOff32.bmp", ".\Res\OnOff32.bmp" }, ;
                   { ".\Res\Busca32.bmp", ".\Res\Busca32.bmp" } }

Local oDlgR
Local oDlgL
Local oDlgT
Local oDlgB

   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )              // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )           // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   //---------------------------     -----------------------------------------//
   // Modelo 002:  Ventana: Panel principal
   //                       En ventana principal: NO MDI (No es necesario MDI)
   //              Definicion de cuadros de diálogos laterales
   //---------------------------     -----------------------------------------//

   // Si el panel izquierdo solo va asociado a la ventana principal
   oWinUI := TWindowsUI():PnelPPal( .T., lMax, lEsMdi, nColor, cTit, cUser, aBtt)

   // Activa la visualizacion de ventanas en panel izquierdo
   oWinUI:lSaveBmp    := .T.

   oWinUI:lDlgRight   := .T.
   oWinUI:SRightUpUI( , , , , )

   oWinUI:lDlgLeft    := .T.
   oWinUI:SLeftUpUI( , , , , )

   oWinUI:lDlgBottom  := .F.
   oWinUI:lDlgTop     := .F.

   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI13.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Entorno UI
 *              - Paneles laterales
 *              - Imagenes de en cuadro izquierdo
 *              - Panel Principal UI
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "colores.ch"


Static   oWinUI
Static   nRefresh          := 0

Function Main()
Local lMax    := .T.
Local lEsMdi  := .F.
Local nColor  := METRO_AZUL3
Local cTit    := "Inicio"
Local cUser   := WNetGetUser()
//Local aBtt    := { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }
Local aBtt    := { { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }, ;
                   { ".\Res\OnOff32.bmp", ".\Res\OnOff32.bmp" }, ;
                   { ".\Res\Busca32.bmp", ".\Res\Busca32.bmp" } }

Local oDlgs
Local oDlgR
Local oDlgL
Local oDlgT
Local oDlgB

Local bActions
Local aBmps1      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"      ;
                     }
Local aBmps2      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ;
                       }
Local aBmps3      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps4      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp"  ;
                     }

Local aBmps5      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp" ;
                       }
Local aBmps6      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }
Local aBmps7      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }

Local aBmps8      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps9      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                       }

Local aItems      := { ;// Deberia ser: {"Texto",cFnt,nHFnt,lBold,lItal,lLHT,lHHB,lLVL,lLVR}
                       {"Double Click","Opcion 12","Opcion 13","Opcion 14",,},;
                       {"Opcion 21","Opcion 22","Opcion 23"},;
                       {},;
                       {"Opcion 31","Opcion 32","Opcion 33"},;
                       {"Opcion 41","Opcion 42",,},;
                       {},;
                       {"Opcion 51","Opcion 52","Opcion 53","Opcion 54"},;
                       {"Opcion 61","Opcion 62","Opcion 63"},;
                       {},;
                       {"Opcion 71","Opcion 72","Opcion 73"},;
                       {"Opcion 81","Opcion 82","Opcion 83","Opcion 84"},;
                       {"Opcion 91","Opcion 92","Opcion 93"},;
                       {},;
                       {,,,};
                       }
                    /*

                       {},;
                       {,,,},;
                       {,,,},;
                       {,,,};
                      }
                    */

Local aBmps     := { aBmps1, aBmps2, , aBmps3, aBmps4, , ;
                       aBmps5, aBmps6, , aBmps7, aBmps8 , aBmps9 }
Local aTitGrps  := { "Grupo I", "Grupo II", "Grupo III", ;
                     "Grupo IV ( Click Right )" }



   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )              // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )           // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   //---------------------------     -----------------------------------------//
   // Modelo 002:  Ventana: Panel principal
   //                       En ventana principal: NO MDI (No es necesario MDI)
   //              Definicion de cuadros de diálogos laterales
   //---------------------------     -----------------------------------------//

   oWinUI := TWindowsUI():PnelPPal( .T., lMax, lEsMdi, nColor, cTit, cUser, aBtt)

   // Activa la visualizacion de ventanas en panel izquierdo
   oWinUI:lSaveBmp    := .T.

   oWinUI:lDlgRight   := .T.
   oWinUI:SRightUpUI( , , , , )

   oWinUI:lDlgLeft    := .T.
   oWinUI:SLeftUpUI( , , , , )

   oWinUI:lDlgBottom  := .F.
   oWinUI:lDlgTop     := .F.

   bActions := { | x, y, nF, oCol | XBrwMnu( oCol:oBrw:nRowSel, ;
                                             oCol:oBrw:nColSel, oCol )}

   oWinUI:UIXPnel( oWinUI, aBmps, aTitGrps, 118, aItems, bActions )


   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

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

//----------------------------------------------------------------------------//
Function XBrwMnu( nRow, nCol, oCol )
Local nVentanas  :=  Len( oWinUI:GetListWnds() )

Do Case
   Case nCol = 1
        Do Case
           Case nRow = 1
               //? nVentanas
               //cTitle, cMsg, oWnd, nColor, oFont1, lFlat, nWd, nHg
               TDialogUI():DlgMsgUI( "Nº de Ventanas", Str( nVentanas ), , , , , ,)

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 2
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 4
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 5
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase


   Case nCol = 7
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

       EndCase

   Case nCol = 8
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4
        EndCase

   Case nCol = 9
        Do Case
           Case nRow = 1

           Case nRow = 2
           Case nRow = 3

           Case nRow = 4
        EndCase

   Otherwise
        if Empty( nCol ) .or. nCol > Len( oCol:oBrw:aCols )
           ? "Columna no definida"
        endif
EndCase

Return nil


//----------------------------------------------------------------------------/
 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI14.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Entorno UI
 *              - Paneles laterales
 *              - Imagenes de en cuadro izquierdo
 *              - Panel Principal UI
 *              - Simulacion MDI
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "tselex.ch"

#include "colores.ch"

Static   oWinUI
Static   nRefresh          := 0

Function Main()
Local lMax    := .T.
Local lEsMdi  := .F.
Local nColor  := METRO_AZUL3
Local cTit    := "Inicio"
Local cUser   := WNetGetUser()
//Local aBtt    := { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }
Local aBtt    := { { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }, ;
                   { ".\Res\OnOff32.bmp", ".\Res\OnOff32.bmp" }, ;
                   { ".\Res\Busca32.bmp", ".\Res\Busca32.bmp" } }

Local oDlgs
Local oDlgR
Local oDlgL
Local oDlgT
Local oDlgB

Local bActions
Local aBmps1      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"      ;
                     }
Local aBmps2      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ;
                       }
Local aBmps3      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps4      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp"  ;
                     }

Local aBmps5      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp" ;
                       }
Local aBmps6      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }
Local aBmps7      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }

Local aBmps8      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps9      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                       }

Local aItems      := { ;// Deberia ser: {"Texto",cFnt,nHFnt,lBold,lItal,lLHT,lHHB,lLVL,lLVR}
                       {Upper("Double Click"),"Opcion 12","Opcion 13","Opcion 14",,},;
                       {"Opcion 21","Opcion 22","Opcion 23"},;
                       {},;
                       {"WNDUI 14"  ,"Opcion 32","Opcion 33"},;
                       {"Opcion 41","Opcion 42",,},;
                       {},;
                       {"Opcion 51","Opcion 52","Opcion 53","Opcion 54"},;
                       {"Opcion 61","Opcion 62","Opcion 63"},;
                       {},;
                       {"Opcion 71","Opcion 72","Opcion 73"},;
                       {"Opcion 81","Opcion 82","Opcion 83","Opcion 84"},;
                       {"Opcion 91","Opcion 92","Opcion 93"},;
                       {},;
                       {,,,};
                       }
                    /*

                       {},;
                       {,,,},;
                       {,,,},;
                       {,,,};
                      }
                    */

Local aBmps     := { aBmps1, aBmps2, , aBmps3, aBmps4, , ;
                       aBmps5, aBmps6, , aBmps7, aBmps8 , aBmps9 }

Local aTitGrps  := { "Grupo I","Grupo II","Grupo III","Grupo IV" }



   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )              // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )           // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   //---------------------------     -----------------------------------------//
   // Modelo 002:  Ventana: Panel principal
   //                       En ventana principal: NO MDI (No es necesario MDI)
   //              Definicion de cuadros de diálogos laterales
   //---------------------------     -----------------------------------------//

   oWinUI := TWindowsUI():PnelPPal( .T., lMax, lEsMdi, nColor, cTit, cUser, aBtt)

   // Activa la visualizacion de ventanas en panel izquierdo
   //
   oWinUI:lSaveBmp    := .T.

   oWinUI:lDlgRight   := .T.
   oWinUI:SRightUpUI( , , , , )

   oWinUI:lDlgLeft    := .T.
   oWinUI:SLeftUpUI( , , , , )

   oWinUI:lDlgBottom  := .F.
   oWinUI:lDlgTop     := .F.

   bActions := { | x, y, nF, oCol | XBrwMnu( oCol:oBrw:nRowSel, ;
                                             oCol:oBrw:nColSel, oCol )}
   // Simulacion de Menu "Azulejos"
   oWinUI:UIXPnel( oWinUI, aBmps, aTitGrps, 118, aItems, bActions )

   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

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

Function XBrwMnu( nRow, nCol, oCol )
Local nVentanas  :=  Len( oWinUI:GetListWnds() )
Local oWnd

Do Case
   Case nCol = 1
        Do Case
           Case nRow = 1
               //? nVentanas
               //cTitle, cMsg, oWnd, nColor, oFont1, lFlat, nWd, nHg
               TDialogUI():DlgMsgUI( "Nº de Ventanas", Str( nVentanas ), , , , , ,)
           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 2
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 4
        Do Case
           Case nRow = 1
                oWnd   := Metro03()
                oWnd:ActivaUI()
           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 5
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase


   Case nCol = 7
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

       EndCase

   Case nCol = 8
        Do Case
           Case nRow = 1

           Case nRow = 2
           Case nRow = 3

           Case nRow = 4
        EndCase

   Case nCol = 9
        Do Case
           Case nRow = 1

           Case nRow = 2
           Case nRow = 3

           Case nRow = 4
        EndCase

   Otherwise
        if Empty( nCol ) .or. nCol > Len( oCol:oBrw:aCols )
           ? "Columna no definida"
        endif
EndCase

Return nil


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

Function Metro03( )

   local oWnd
   local oDlg
   local oFont
   local oBrw
   local oFontS
   local x
   local hDC


   DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -42  //-52

   //DEFINE FONT oFontS NAME "Segoe UI Symbol" SIZE 0, -32

   oWnd := TWindowsUI():New( .T., .T., .F., METRO_WINDOW,,,)

   WITH OBJECT oWnd

      :lSaveBmp        := .T.

      :lBttExitUI     := .T.
      :nRowBttUI      := 48
      :nColBttUI      := 48
      :aBttExitUI     := { ".\Res\back641.bmp", ".\Res\back642.bmp", 48, 48 }

      :lBttIconUI     := .T.
      :nRowBttIcoUI   := 78
      :nColBttIcoUI   := GetSysMetrics(0) - 90 //1200 // 290 //428
      :aBttIconUI    := { ".\Res\guest32.bmp", ".\Res\guest32.bmp", 32, 32 }
                                                        // { METRO_WINDOW, METRO_AZUL3 }
      :SetTitleUI( "Opcion 3.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 3.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )

      :oWndUI:bMMoved  := oWinUI:oWndUI:bMMoved
   END

   //oDlg  := HazDlg03( oWnd:oWndUI )
   oWnd:bControls := { | o | HazDlg03( o:oWndUI ) }
   //oWnd:oWndUI:bInit := { | o | HazDlg03( oWnd:oWndUI ) }

   oFont  := Nil
   oFontS := Nil

return oWnd


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

Function HazDlg03( oWnd )
Local oDlg
Local aOCtrl
        //TWindowsUI
oDlg := TDialogUI():NewDlg( .F. , .F., oWnd, 140, 330, 1360, 760,  )
oDlg:oWndUI:bInit := { | o | Controls03( oDlg ) }
oDlg:ActivaDlgUI(.F.)   //.F.

Return oDlg

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

Function Controls03( oDlg )
Local nFI       := 5 + 25
Local nFIG      := nFI + 20
Local nCI       := 185+100
Local nCIG      := nCI + 2
Local oFont
Local oFontX
Local nInc      := 40
Local nW        := 180
Local nH        := 24+2
Local oSel
Local nOpt1     := 1

Local oBttConex
Local oBttClose
Local oWnd
Local lSw        := .F.

   oWnd   := oDlg:oWndUI

   // Realizando cálculos de ajuste de dialogos y ventanas
   // Solo son pruebas de momento
   nFI       := nFI  * GetDialogBaseUnits()[ 1 ]
   nFIG      := nFIG * GetDialogBaseUnits()[ 1 ]
   nCI       := (nCI - 100) * GetDialogBaseUnits()[ 2 ]
   nCIG      := (nCIG- 100) * GetDialogBaseUnits()[ 2 ]
   nInc      := nInc * GetDialogBaseUnits()[ 1 ]
   nW        := nW   * GetDialogBaseUnits()[ 2 ]
   nH        := nH   * GetDialogBaseUnits()[ 1 ]

//? GetDialogBaseUnits()[ 1 ], GetDialogBaseUnits()[ 2 ]

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -20  //-52
   DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14  //-52


   @ 10, 20 SELEX oSel VAR nOpt1 oF oWnd SIZE 60*2, 40*2 PIXEL ;
             ACTION ( MsgInfo("Si") ) ;
             ITEMS " ",  " " ;
             COLOR THUMB METRO_WINDOW ;
             GRADIENT INTRACK  {{ 1, METRO_GRIS1, METRO_GRIS1 },{ 0, METRO_GRIS1, METRO_GRIS1 }}  ;
             GRADIENT OUTTRACK {{ 1, METRO_WINDOW, METRO_WINDOW },{ 0, METRO_WINDOW, METRO_WINDOW }} ;
             LINECOLORS METRO_WINDOW, METRO_WINDOW ;
             ROUNDSIZE 0 ;
             THUMBSIZE 30, 30  //;




   @ nFI+nInc*6+10, 20 BUTTON oBttConex PROMPT " &ACEPTAR " SIZE 60*2, 20*2 PIXEL oF oWnd ;
      FONT oFontX ;
      ACTION ( MsgInfo("Aceptar" ) ) //CANCEL

   @ nFI+nInc*6+10, Int(20+109*1.5) BUTTON oBttClose PROMPT " &CANCELAR " SIZE 60*2, 20*2 PIXEL oF oWnd ;
      FONT oFontX ;
      ACTION ( MsgInfo("Cancelar" ) ) //CANCEL

Return  lSw    // Ha de devolver un array de controles ?

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

//----------------------------------------------------------------------------//
 
Image
Image

Re: Clases UI

Posted: Sun Aug 03, 2014 8:43 am
by cnavarro
Continuacion

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI15.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Entorno UI
 *              - Paneles laterales
 *              - Imagenes de en cuadro izquierdo
 *              - Panel Principal UI
 *              - Simulacion MDI
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "tselex.ch"

#include "colores.ch"

Static   oWinUI
Static   nRefresh          := 0

Function Main()
Local lMax    := .T.
Local lEsMdi  := .F.
Local nColor  := METRO_AZUL3
Local cTit    := "Inicio"
Local cUser   := WNetGetUser()
//Local aBtt    := { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }
Local aBtt    := { { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }, ;
                   { ".\Res\OnOff32.bmp", ".\Res\OnOff32.bmp" }, ;
                   { ".\Res\Busca32.bmp", ".\Res\Busca32.bmp" } }

Local oDlgs
Local oDlgR
Local oDlgL
Local oDlgT
Local oDlgB

Local bActions
Local aBmps1      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"      ;
                     }
Local aBmps2      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ;
                       }
Local aBmps3      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps4      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp"  ;
                     }

Local aBmps5      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp" ;
                       }
Local aBmps6      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }
Local aBmps7      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }

Local aBmps8      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps9      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                       }

Local aItems      := { ;// Deberia ser: {"Texto",cFnt,nHFnt,lBold,lItal,lLHT,lHHB,lLVL,lLVR}
                       {"Opcion 11","Opcion 12","Opcion 13","Opcion 14",,},;
                       {"Opcion 21","Opcion 22","Opcion 23"},;
                       {},;
                       {"WndUI14"  ,"Opcion 32","Opcion 33"},;
                       {"WndUI15"  ,"Opcion 42",,},;
                       {},;
                       {"Opcion 51","Opcion 52","Opcion 53","Opcion 54"},;
                       {"Opcion 61","Opcion 62","Opcion 63"},;
                       {},;
                       {"Opcion 71","Opcion 72","Opcion 73"},;
                       {"Opcion 81","Opcion 82","Opcion 83","Opcion 84"},;
                       {"Opcion 91","Opcion 92","Opcion 93"},;
                       {},;
                       {,,,};
                       }
                    /*

                       {},;
                       {,,,},;
                       {,,,},;
                       {,,,};
                      }
                    */

Local aBmps     := { aBmps1, aBmps2, , aBmps3, aBmps4, , ;
                       aBmps5, aBmps6, , aBmps7, aBmps8 , aBmps9 }
Local aTitGrps  := { "Grupo I","Grupo II","Grupo III","Grupo IV" }



   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )              // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )           // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   //---------------------------     -----------------------------------------//
   // Modelo 002:  Ventana: Panel principal
   //                       En ventana principal: NO MDI (No es necesario MDI)
   //              Definicion de cuadros de diálogos laterales
   //---------------------------     -----------------------------------------//

   oWinUI := TWindowsUI():PnelPPal( .T., lMax, lEsMdi, nColor, cTit, cUser, aBtt)

   // Activa la visualizacion de ventanas en panel izquierdo
   //
   oWinUI:lSaveBmp    := .T.

   oWinUI:lDlgRight   := .T.
   oWinUI:SRightUpUI( , , , , )

   oWinUI:lDlgLeft    := .T.
   oWinUI:SLeftUpUI( , , , , )

   oWinUI:lDlgBottom  := .F.
   oWinUI:lDlgTop     := .F.

   bActions := { | x, y, nF, oCol | XBrwMnu( oCol:oBrw:nRowSel, ;
                                             oCol:oBrw:nColSel, oCol )}
   // Simulacion de Menu "Azulejos"
   oWinUI:UIXPnel( oWinUI, aBmps, aTitGrps, 118, aItems, bActions )

   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

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

//----------------------------------------------------------------------------//
Function XBrwMnu( nRow, nCol, oCol )
Local nVentanas  :=  Len( oWinUI:GetListWnds() )
Local oWnd

Do Case
   Case nCol = 1
        Do Case
           Case nRow = 1
               //? nVentanas
               //
               //cTitle, cMsg, oWnd, nColor, oFont1, lFlat, nWd, nHg
               TDialogUI():DlgMsgUI( "Nº de Ventanas", Str( nVentanas ), , , , , ,)

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 2
        Do Case
           Case nRow = 1

           Case nRow = 2
                //ApliPPalUI()
                //oWinUIApp:ActivaUI()

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 4
        Do Case
           Case nRow = 1
                oWnd   := Metro03( .T. )
                oWnd:ActivaUI()
           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 5
        Do Case
           Case nRow = 1
                oWnd   := Metro03( )
                oWnd:ActivaUI()

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase


   Case nCol = 7
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

       EndCase

   Case nCol = 8
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4
        EndCase

   Case nCol = 9
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4
        EndCase

   Otherwise
        if Empty( nCol ) .or. nCol > Len( oCol:oBrw:aCols )
           ? "Columna no definida"
        endif
EndCase

Return nil


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

Function Metro03( lMnu )

   local oWnd
   local oDlg
   local oFont
   local oBrw
   local oFontS
   local x
   local hDC

   DEFAULT lMnu   := .F.


   DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -42  //-52

   //DEFINE FONT oFontS NAME "Segoe UI Symbol" SIZE 0, -32

   oWnd := TWindowsUI():New( .T., .T., .F., METRO_WINDOW,,,)

   WITH OBJECT oWnd

      :lSaveBmp        := .T.

      :lBttExitUI     := .T.
      :nRowBttUI      := 48
      :nColBttUI      := 48
      :aBttExitUI     := { ".\Res\back641.bmp", ".\Res\back642.bmp", 48, 48 }

      :lBttIconUI     := .T.
      :nRowBttIcoUI   := 78
      :nColBttIcoUI   := GetSysMetrics(0) - 90 //1200 // 290 //428
      :aBttIconUI    := { ".\Res\guest32.bmp", ".\Res\guest32.bmp", 32, 32 }

      if lMnu
      :SetTitleUI( "Opcion 3.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 3.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )
      else
      :SetTitleUI( "Opcion 4.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 4.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )

      endif
      :oWndUI:bMMoved  := oWinUI:oWndUI:bMMoved
   END

   if lMnu
      oBrw  := HazBrowse03( oWnd:oWndUI, oFont )
   endif

   //oDlg  := HazDlg03( oWnd:oWndUI )
   oWnd:bControls := { | o | HazDlg03( o:oWndUI ) }
   //oWnd:oWndUI:bInit := { | o | HazDlg03( oWnd:oWndUI ) }

   oFont  := Nil
   oFontS := Nil

return oWnd


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

Function HazDlg03( oWnd )
Local oDlg
Local aOCtrl
        //TWindowsUI
oDlg := TDialogUI():NewDlg( .F. , .F., oWnd, 140, 330, 1360, 760,  )
oDlg:oWndUI:bInit := { | o | Controls03( oDlg ) }
oDlg:ActivaDlgUI(.F.)   //.F.

Return oDlg

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

Function Controls03( oDlg )
Local nFI       := 5 + 25
Local nFIG      := nFI + 20
Local nCI       := 185+100
Local nCIG      := nCI + 2
Local oFont
Local oFontX
Local nInc      := 40
Local nW        := 180
Local nH        := 24+2
Local oSel
Local nOpt1     := 1

Local oBttConex
Local oBttClose
Local oWnd
Local lSw        := .F.

   oWnd   := oDlg:oWndUI

   // Realizando cálculos de ajuste de dialogos y ventanas
   // Solo son pruebas de momento
   nFI       := nFI  * GetDialogBaseUnits()[ 1 ]
   nFIG      := nFIG * GetDialogBaseUnits()[ 1 ]
   nCI       := (nCI - 100) * GetDialogBaseUnits()[ 2 ]
   nCIG      := (nCIG- 100) * GetDialogBaseUnits()[ 2 ]
   nInc      := nInc * GetDialogBaseUnits()[ 1 ]
   nW        := nW   * GetDialogBaseUnits()[ 2 ]
   nH        := nH   * GetDialogBaseUnits()[ 1 ]

//? GetDialogBaseUnits()[ 1 ], GetDialogBaseUnits()[ 2 ]

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -20  //-52
   DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14  //-52


   @ 10, 20 SELEX oSel VAR nOpt1 oF oWnd SIZE 60*2, 40*2 PIXEL ;
             ACTION ( MsgInfo("Si") ) ;
             ITEMS " ",  " " ;
             COLOR THUMB METRO_WINDOW ;
             GRADIENT INTRACK  {{ 1, METRO_GRIS1, METRO_GRIS1 },{ 0, METRO_GRIS1, METRO_GRIS1 }}  ;
             GRADIENT OUTTRACK {{ 1, METRO_WINDOW, METRO_WINDOW },{ 0, METRO_WINDOW, METRO_WINDOW }} ;
             LINECOLORS METRO_WINDOW, METRO_WINDOW ;
             ROUNDSIZE 0 ;
             THUMBSIZE 30, 30  //;




   @ nFI+nInc*6+10, 20 BUTTON oBttConex PROMPT " &ACEPTAR " SIZE 60*2, 20*2 PIXEL oF oWnd ;
      FONT oFontX ;
      ACTION ( MsgInfo("Aceptar" ) ) //CANCEL

   @ nFI+nInc*6+10, Int(20+109*1.5) BUTTON oBttClose PROMPT " &CANCELAR " SIZE 60*2, 20*2 PIXEL oF oWnd ;
      FONT oFontX ;
      ACTION ( MsgInfo("Cancelar" ) ) //CANCEL

Return  lSw    // Ha de devolver un array de controles ?

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

Function HazBrowse03( oWnd, oFont )
Local oBrw
Local aItems := { "Opcion Primera", "Segunda Opcion", "Tercera Opcion", ;
                  "Cuarta Opcion", "Quinta Opcion", "_ Opcion", "Septima" }

Local oFont2
Local oFont3

   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0, -32
   DEFINE FONT oFont3 NAME "Segoe UI Light" SIZE 0, -16

   @ 140, 12 XBROWSE oBrw ARRAY aItems COLSIZES 310 CELL ;
      FONT oFont2 SIZE 315, 645 PIXEL NOBORDER OF oWnd

   WITH OBJECT oBrw

        :nDataLines = 2
        :nRowHeight = 90
        :lRecordSelector = .F.
        :lHeader   = .F.
        :lHScroll  = .F.
        :lVScroll  = .F.
        :nStretchCol = 1
        :bClrStd = { || { CLR_BLACK, CLR_WHITE } }
        :bClrSel = { || { CLR_WHITE, METRO_GRAYTEXT } }
        :bClrSelFocus = { || { CLR_WHITE, RGB( 34, 177, 76 ) } }

        //:SetColor( METRO_WINDOW, METRO_GRIS1 )   //"B/W*" )
        :SetArray( aItems )
        :aCols[1]:bLDClickData   := {|x,y,nF,oCol| OpcBrw03( oBrw:nArrayAt, ;
                                  oBrw, x, y, oBrw:nRowSel, oBrw:nColSel, nF) }
        :bKeyChar   := :aCols[1]:bLDClickData

        :CreateFromCode()
        :aCols[ 1 ]:bPaintText = { | oCol,hDC,cText,aCoors,aColors,lHighlight |;
                                DrawRowN( oCol, hDC, cText, aCoors , oFont3 )  }
   END

Return oBrw

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

Static function DrawRowN( oCol, hDC, cText, aCoors, oFont )

   local hOldFont
   local aItems := { "Esta es la Primera Opcion",;
                     "Pulsa aqui para la Segunda",;
                     "Tercer comentario",;
                     "Opcion Cuarta del Menu",;
                     "Pulsa Utilidades y Varios",;
                     "Otras opciones",;
                     "Salir del Menu" }

   DrawText( hDC, cText, aCoors )
   aCoors[ 1 ] += 45
   //aCoors[ 2 ] += 12
   hOldFont = SelectObject( hDC, oFont:hFont )
   DrawText( hDC, aItems[ oCol:oBrw:KeyNo ], aCoors )
   SelectObject( hDC, hOldFont )

return nil

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

Function OpcBrw03( nPos, oBrw, x, y, nRow, nCol, nF )
Local oDlg
Local oWin
Local cFile     := ""
Local  aCampos  := {}
Do Case
   Case nCol = 1
        Do Case
           Case nRow = 1
                //

           Case nRow = 2
                //
                oWin := Metro03()
                oWin:ActivaUI()
           Case nRow = 3
                //

           Case nRow = 4
                //
           Case nRow = 5
                //
                oWin := Metro03()
                oWin:ActivaUI()

           Case nRow = 6

           Case nRow = 7

         EndCase
   Otherwise

EndCase

Return nil

//----------------------------------------------------------------------------//
 
Image
Image

Re: Clases UI

Posted: Sun Aug 03, 2014 8:44 am
by cnavarro
Continuacion

Code: Select all

/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI16.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Entorno UI
 *              - Paneles laterales
 *              - Imagenes de en cuadro izquierdo
 *              - Panel Principal UI
 *              - Simulacion MDI
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "tselex.ch"

#include "colores.ch"

Static   oWinUI
Static   nRefresh          := 0

Function Main()
Local lMax    := .T.
Local lEsMdi  := .F.
Local nColor  := METRO_AZUL3
Local cTit    := "Inicio"
Local cUser   := WNetGetUser()
//Local aBtt    := { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }
Local aBtt    := { { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }, ;
                   { ".\Res\OnOff32.bmp", ".\Res\OnOff32.bmp" }, ;
                   { ".\Res\Busca32.bmp", ".\Res\Busca32.bmp" } }

Local oDlgs
Local oDlgR
Local oDlgL
Local oDlgT
Local oDlgB

Local bActions
Local aBmps1      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"      ;
                     }
Local aBmps2      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ;
                       }
Local aBmps3      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps4      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp"  ;
                     }

Local aBmps5      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp" ;
                       }
Local aBmps6      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }
Local aBmps7      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }

Local aBmps8      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps9      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                       }

Local aItems      := { ;// Deberia ser: {"Texto",cFnt,nHFnt,lBold,lItal,lLHT,lHHB,lLVL,lLVR}
                       {"Opcion 11","Opcion 12","Opcion 13","Opcion 14",,},;
                       {"WndUI16"  ,"Opcion 22","Opcion 23"},;
                       {},;
                       {"WndUI14"  ,"Opcion 32","Opcion 33"},;
                       {"WndUI15"  ,"Opcion 42",,},;
                       {},;
                       {"Opcion 51","Opcion 52","Opcion 53","Opcion 54"},;
                       {"Opcion 61","Opcion 62","Opcion 63"},;
                       {},;
                       {"Opcion 71","Opcion 72","Opcion 73"},;
                       {"Opcion 81","Opcion 82","Opcion 83","Opcion 84"},;
                       {"Opcion 91","Opcion 92","Opcion 93"},;
                       {},;
                       {,,,};
                       }
                    /*

                       {},;
                       {,,,},;
                       {,,,},;
                       {,,,};
                      }
                    */

Local aBmps     := { aBmps1, aBmps2, , aBmps3, aBmps4, , ;
                       aBmps5, aBmps6, , aBmps7, aBmps8 , aBmps9 }
Local aTitGrps  := { "Grupo I","Grupo II","Grupo III","Grupo IV" }



   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )              // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )           // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   //---------------------------     -----------------------------------------//
   // Modelo 002:  Ventana: Panel principal
   //                       En ventana principal: NO MDI (No es necesario MDI)
   //              Definicion de cuadros de diálogos laterales
   //---------------------------     -----------------------------------------//

   oWinUI := TWindowsUI():PnelPPal( .T., lMax, lEsMdi, nColor, cTit, cUser, aBtt)

   // Activa la visualizacion de ventanas en panel izquierdo
   //
   oWinUI:lSaveBmp    := .T.

   oWinUI:lDlgRight   := .T.
   oWinUI:SRightUpUI( , , , , )

   oWinUI:lDlgLeft    := .T.
   oWinUI:SLeftUpUI( , , , , )

   oWinUI:lDlgBottom  := .F.
   oWinUI:lDlgTop     := .F.

   bActions := { | x, y, nF, oCol | XBrwMnu( oCol:oBrw:nRowSel, ;
                                             oCol:oBrw:nColSel, oCol )}
   // Simulacion de Menu "Azulejos"
   oWinUI:UIXPnel( oWinUI, aBmps, aTitGrps, 118, aItems, bActions )

   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
/*
Function CalculaRes( nTp )  // nTp -> 0 Ancho   nTp -> 1 Alto
local nAncho
local nAlto
local nPorcAnc
local nPorcAlt
DEFAULT nTp   := 0
      nAncho  := GetSysMetrics( 0 ) //ScreenWidth()  //GetSysmetrics( 4 )
      nAlto   := GetSysMetrics( 1 ) //ScreenHeight() //GetSysmetrics( 3 )
      if Empty( nTp )
         nPorcAnc := Round( ( nAncho/1366 ) , 4 )
      else
         nPorcAlt := Round( ( nAlto/768 ) , 4 )
      endif
     //    1920    1058      1920            1080               17                  17            22
     // ? nAncho, nAlto , GetSysmetrics(0), GetSysmetrics(1), GetSysmetrics(2),GetSysmetrics(3),GetSysmetrics(4)

Return IF( Empty( nTp ), nPorcAnc, nPorcAlt )
*/
//----------------------------------------------------------------------------//

//----------------------------------------------------------------------------//
Function XBrwMnu( nRow, nCol, oCol )
Local nVentanas  :=  Len( oWinUI:GetListWnds() )
Local oWnd

Do Case
   Case nCol = 1
        Do Case
           Case nRow = 1
               //? nVentanas
               //cTitle, cMsg, oWnd, nColor, oFont1, lFlat, nWd, nHg
               TDialogUI():DlgMsgUI( "Nº de Ventanas", Str( nVentanas ), , , , , ,)

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 2
        Do Case
           Case nRow = 1
                oWnd  := Metro02( .F. )
                oWnd:ActivaUI()

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 4
        Do Case
           Case nRow = 1
                oWnd   := Metro03( .T. )
                oWnd:ActivaUI()
           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 5
        Do Case
           Case nRow = 1
                oWnd   := Metro03( )
                oWnd:ActivaUI()

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase


   Case nCol = 7
        Do Case
           Case nRow = 1

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

       EndCase

   Case nCol = 8
        Do Case
           Case nRow = 1

           Case nRow = 2
           Case nRow = 3

           Case nRow = 4
        EndCase

   Case nCol = 9
        Do Case
           Case nRow = 1

           Case nRow = 2
           Case nRow = 3

           Case nRow = 4
        EndCase

   Otherwise
        if Empty( nCol ) .or. nCol > Len( oCol:oBrw:aCols )
           ? "Columna no definida"
        endif
EndCase

Return nil


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

Function Metro03( lMnu )

   local oWnd
   local oDlg
   local oFont
   local oBrw
   local oFontS
   local x
   local hDC

   DEFAULT lMnu   := .F.


   DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -42  //-52

   //DEFINE FONT oFontS NAME "Segoe UI Symbol" SIZE 0, -32

   oWnd := TWindowsUI():New( .T., .T., .F., METRO_WINDOW,,,)

   WITH OBJECT oWnd

      :lSaveBmp        := .T.

      :lBttExitUI     := .T.
      :nRowBttUI      := 48
      :nColBttUI      := 48
      :aBttExitUI     := { ".\Res\back641.bmp", ".\Res\back642.bmp", 48, 48 }

      :lBttIconUI     := .T.
      :nRowBttIcoUI   := 78
      :nColBttIcoUI   := GetSysMetrics(0) - 90 //1200 // 290 //428
      :aBttIconUI    := { ".\Res\guest32.bmp", ".\Res\guest32.bmp", 32, 32 }

      if lMnu
      :SetTitleUI( "Opcion 3.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 3.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )
      else
      :SetTitleUI( "Opcion 4.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 4.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )

      endif
      :oWndUI:bMMoved  := oWinUI:oWndUI:bMMoved
   END

   if lMnu
      oBrw  := HazBrowse03( oWnd:oWndUI, oFont )
   endif

   //oDlg  := HazDlg03( oWnd:oWndUI )
   oWnd:bControls := { | o | HazDlg03( o:oWndUI ) }
   //oWnd:oWndUI:bInit := { | o | HazDlg03( oWnd:oWndUI ) }

   oFont  := Nil
   oFontS := Nil

return oWnd


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

Function HazDlg03( oWnd )
Local oDlg
Local aOCtrl
        //TWindowsUI
oDlg := TDialogUI():NewDlg( .F. , .F., oWnd, 140, 330, 1360, 760,  )
oDlg:oWndUI:bInit := { | o | Controls03( oDlg ) }
oDlg:ActivaDlgUI(.F.)   //.F.

Return oDlg

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

Function Controls03( oDlg )
Local nFI       := 5 + 25
Local nFIG      := nFI + 20
Local nCI       := 185+100
Local nCIG      := nCI + 2
Local oFont
Local oFontX
Local nInc      := 40
Local nW        := 180
Local nH        := 24+2
Local oSel
Local nOpt1     := 1

Local oBttConex
Local oBttClose
Local oWnd
Local lSw        := .F.

   oWnd   := oDlg:oWndUI

   // Realizando cálculos de ajuste de dialogos y ventanas
   // Solo son pruebas de momento
   nFI       := nFI  * GetDialogBaseUnits()[ 1 ]
   nFIG      := nFIG * GetDialogBaseUnits()[ 1 ]
   nCI       := (nCI - 100) * GetDialogBaseUnits()[ 2 ]
   nCIG      := (nCIG- 100) * GetDialogBaseUnits()[ 2 ]
   nInc      := nInc * GetDialogBaseUnits()[ 1 ]
   nW        := nW   * GetDialogBaseUnits()[ 2 ]
   nH        := nH   * GetDialogBaseUnits()[ 1 ]

//? GetDialogBaseUnits()[ 1 ], GetDialogBaseUnits()[ 2 ]

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -20  //-52
   DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14  //-52


   @ 10, 20 SELEX oSel VAR nOpt1 oF oWnd SIZE 60*2, 40*2 PIXEL ;
             ACTION ( MsgInfo("Si") ) ;
             ITEMS " ",  " " ;
             COLOR THUMB METRO_WINDOW ;
             GRADIENT INTRACK  {{ 1, METRO_GRIS1, METRO_GRIS1 },{ 0, METRO_GRIS1, METRO_GRIS1 }}  ;
             GRADIENT OUTTRACK {{ 1, METRO_WINDOW, METRO_WINDOW },{ 0, METRO_WINDOW, METRO_WINDOW }} ;
             LINECOLORS METRO_WINDOW, METRO_WINDOW ;
             ROUNDSIZE 0 ;
             THUMBSIZE 30, 30  //;




   @ nFI+nInc*6+10, 20 BUTTON oBttConex PROMPT " &ACEPTAR " SIZE 60*2, 20*2 PIXEL oF oWnd ;
      FONT oFontX ;
      ACTION ( MsgInfo("Aceptar" ) ) //CANCEL

   @ nFI+nInc*6+10, Int(20+109*1.5) BUTTON oBttClose PROMPT " &CANCELAR " SIZE 60*2, 20*2 PIXEL oF oWnd ;
      FONT oFontX ;
      ACTION ( MsgInfo("Cancelar" ) ) //CANCEL

Return  lSw    // Ha de devolver un array de controles ?

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

Function HazBrowse03( oWnd, oFont )
Local oBrw
Local aItems := { "Opcion Primera", "Segunda Opcion", "Tercera Opcion", ;
                  "Cuarta Opcion", "Quinta Opcion", "_ Opcion", "Septima" }

Local oFont2
Local oFont3

   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0, -32
   DEFINE FONT oFont3 NAME "Segoe UI Light" SIZE 0, -16

   @ 140, 12 XBROWSE oBrw ARRAY aItems COLSIZES 310 CELL ;
      FONT oFont2 SIZE 315, 645 PIXEL NOBORDER OF oWnd

   WITH OBJECT oBrw

        :nDataLines = 2
        :nRowHeight = 90
        :lRecordSelector = .F.
        :lHeader   = .F.
        :lHScroll  = .F.
        :lVScroll  = .F.
        :nStretchCol = 1
        :bClrStd = { || { CLR_BLACK, CLR_WHITE } }
        :bClrSel = { || { CLR_WHITE, METRO_GRAYTEXT } }
        :bClrSelFocus = { || { CLR_WHITE, RGB( 34, 177, 76 ) } }

        //:SetColor( METRO_WINDOW, METRO_GRIS1 )   //"B/W*" )
        :SetArray( aItems )
        :aCols[1]:bLDClickData   := {|x,y,nF,oCol| OpcBrw03( oBrw:nArrayAt, ;
                                  oBrw, x, y, oBrw:nRowSel, oBrw:nColSel, nF) }
        :bKeyChar   := :aCols[1]:bLDClickData

        :CreateFromCode()
        :aCols[ 1 ]:bPaintText = { | oCol,hDC,cText,aCoors,aColors,lHighlight |;
                                DrawRowN( oCol, hDC, cText, aCoors , oFont3 )  }
   END

Return oBrw

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

Static function DrawRowN( oCol, hDC, cText, aCoors, oFont )

   local hOldFont
   local aItems := { "Esta es la Primera Opcion",;
                     "Pulsa aqui para la Segunda",;
                     "Tercer comentario",;
                     "Opcion Cuarta del Menu",;
                     "Pulsa Utilidades y Varios",;
                     "Otras opciones",;
                     "Salir del Menu" }

   DrawText( hDC, cText, aCoors )
   aCoors[ 1 ] += 45
   //aCoors[ 2 ] += 12
   hOldFont = SelectObject( hDC, oFont:hFont )
   DrawText( hDC, aItems[ oCol:oBrw:KeyNo ], aCoors )
   SelectObject( hDC, hOldFont )

return nil

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

Function OpcBrw03( nPos, oBrw, x, y, nRow, nCol, nF )
Local oDlg
Local oWin
Local cFile     := ""
Local  aCampos  := {}
Do Case
   Case nCol = 1
        Do Case
           Case nRow = 1
                //

           Case nRow = 2
                //
                oWin := Metro03()
                oWin:ActivaUI()
           Case nRow = 3
                //

           Case nRow = 4
                //
           Case nRow = 5
                //
                oWin := Metro03()
                oWin:ActivaUI()

           Case nRow = 6

           Case nRow = 7

         EndCase
   Otherwise

EndCase

Return nil

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

Function Metro02( lMnu )

   local oWnd
   local oDlg
   local oFont
   local oBrw
   local oFontS
   local x
   local hDC

   DEFAULT lMnu   := .F.


   DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -42  //-52

   //DEFINE FONT oFontS NAME "Segoe UI Symbol" SIZE 0, -32

   oWnd := TWindowsUI():New( .T., .T., .F., METRO_WINDOW,,,)

   WITH OBJECT oWnd

      :lSaveBmp        := .T.

      :lBttExitUI     := .T.
      :nRowBttUI      := 48
      :nColBttUI      := 48
      :aBttExitUI     := { ".\Res\back641.bmp", ".\Res\back642.bmp", 48, 48 }

      :lBttIconUI     := .T.
      :nRowBttIcoUI   := 78
      :nColBttIcoUI   := GetSysMetrics(0) - 90 //1200 // 290 //428
      :aBttIconUI    := { ".\Res\guest32.bmp", ".\Res\guest32.bmp", 32, 32 }

      if lMnu
      :SetTitleUI( "Opcion 3.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 3.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )
      else
      :SetTitleUI( "Opcion 2.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 2.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )

      endif
      :oWndUI:bMMoved  := oWinUI:oWndUI:bMMoved
   END

   if lMnu
      oBrw  := HazBrowse03( oWnd:oWndUI, oFont )
   endif

   //oDlg  := HazDlg02( oWnd:oWndUI )
   oWnd:bControls := { | o | HazDlg02( o:oWndUI ) }
   //oWnd:oWndUI:bInit := { | o | HazDlg02( oWnd:oWndUI ) }

   oFont  := Nil
   oFontS := Nil

return oWnd

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

Function HazDlg02( oWnd )
Local oDlg
Local aOCtrl

oDlg := TDialogUI():NewDlg( .F. , .F., oWnd, 140, 330, 1360, 760,  )

oDlg:oWndUI:bInit := { | o | Controls02( oDlg ) }
//aOCtrl   := Controls02( oDlg )
//oDlg:oWndUI:bInit := { | o | CtrlPnel2( aOCtrl[2] ), CtrlPnel1( aOCtrl[1] ) }
oDlg:ActivaDlgUI(.F.)

Return oDlg

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

Function Controls02( oDlg )  //oPnel1, oPnel2 )
Local nFI       := 5 + 25
Local nFIG      := nFI + 20
Local nCI       := 185+100
Local nCIG      := nCI + 2
Local oFont
Local oFontX
Local nInc      := 40
Local nW        := 120 * 1.60
Local nH        := 40 * 1.60
Local oSelJet
Local cSelJet   := "Cadena de Mensaje                   "

Local oSay0
Local oSay1
Local oSay2
Local oSay3
Local oSel1
Local nOpt1     := 1
Local oPanel1
Local oPanel2
Local nAltoSpl1  := 329
Local nAnchoSpl1 := 140  //180
Local oBttConex
Local oBttClose
Local oWnd
Local lSw        := .F.

   oWnd        := oDlg:oWndUI
   nAltoSpl1   := oWnd:nHeight
   nAnchoSpl1  := oWnd:nWidth / 3
   nCI         := 695
   nCIG        := nCI + 2
   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -20  //-52
   DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14  //-52

   oPanel1 := TPanel():New( 0, 0, nAltoSpl1, nAnchoSpl1, oWnd )
   oPanel1:SetColor( METRO_GRIS2, METRO_GRIS1 )

   oPanel2 := TPanel():New( 0, nAnchoSpl1, nAltoSpl1, nAnchoSpl1*2, oWnd )
   oPanel2:SetColor( METRO_GRIS1, METRO_GRIS4 )

   @ nFI-25 , nCI SAY oSay0 ;
     PROMPT " Cuadro de Dialogo: "  ;
     SIZE nW, nH PIXEL oF oWnd ;
     COLOR METRO_WINDOW, METRO_GRIS2 FONT oFont TRANSPARENT

   @ nFI+nInc*1, nCI SAY " Mensaje: " ;
     SIZE nW, nH PIXEL oF oWnd ;
     COLOR METRO_WINDOW, METRO_GRIS2 FONT oFont TRANSPARENT

   @ nFI+nInc*2, nCI GET oSelJet VAR cSelJet SIZE nW*1.45, nH/2 PIXEL oF oWnd ;
      FONT oFontX ;
      COLOR METRO_GRIS2, METRO_WINDOW ;   //METRO_APPWORKSPACE, METRO_WINDOW
      PICTURE "@!"  ;
      VALID ( .T. )

   @ nFI+nInc*13, nCIG BUTTON oBttConex PROMPT " &Aceptar " ;
                  SIZE 160, 40 PIXEL oF oWnd FONT oFontX

   @ nFI+nInc*13, Int(nCIG+109*1.5) BUTTON oBttClose PROMPT " &Cancelar " ;
                  SIZE 160, 40 PIXEL oF oWnd FONT oFontX

   //oFont:End()
   //oFont    := Nil

Return { oPanel1, oPanel2 }

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

Function IsAppThemed() ; Return .F.

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

 
Image

Code: Select all


/*
 *
 * Proyecto: FiveUI
 * Fichero:  WndUI17.prg
 * Descripción: Test Clase WindowsUI, y clases heredadas
 *              Definicion de Ventana:
 *              - Maximizar
 *              - Minimizar
 *              - Titulo ventana
 *              - Paneles
 * Autor: Cristobal Navarro Lopez (C)
 * Fecha: 03/10/2013
 *
 */


#include "Fivewin.ch"

#include "tselex.ch"

#include "colores.ch"

#define CBS_NOINTEGRALHEIGHT  1024

Static   oWinUI
Static   nRefresh          := 0

Function Main()
Local lMax    := .T.
Local lEsMdi  := .F.
Local nColor  := METRO_AZUL3
Local cTit    := "Inicio"
Local cUser   := WNetGetUser()
//Local aBtt    := { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }
Local aBtt    := { { ".\Res\Guest32.bmp", ".\Res\Guest32.bmp" }, ;
                   { ".\Res\OnOff32.bmp", ".\Res\OnOff32.bmp" }, ;
                   { ".\Res\Busca32.bmp", ".\Res\Busca32.bmp" } }

Local oDlgs
Local oDlgR
Local oDlgL
Local oDlgT
Local oDlgB

Local bActions
Local aBmps1      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"      ;
                     }
Local aBmps2      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ;
                       }
Local aBmps3      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps4      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp"  ;
                     }

Local aBmps5      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp" ;
                       }
Local aBmps6      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }
Local aBmps7      := { ;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp" ,;
                       ".\inicio.bmp"  ;
                     }

Local aBmps8      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                     }

Local aBmps9      := { ;
                       ".\inicio.bmp",;
                       ".\inicio.bmp",;
                       ".\inicio.bmp";
                       }

Local aItems      := { ;// Deberia ser: {"Texto",cFnt,nHFnt,lBold,lItal,lLHT,lHHB,lLVL,lLVR}
                       {"Opcion 11","Opcion 12","Opcion 13","Opcion 14",,},;
                       {"WndUI16"  ,"WndUI17"  ,"Opcion 23"},;
                       {},;
                       {"WndUI14"  ,"Opcion 32","Opcion 33"},;
                       {"WndUI15"  ,"Opcion 42",,},;
                       {},;
                       {"Opcion 51","Opcion 52","Opcion 53","Opcion 54"},;
                       {"Opcion 61","Opcion 62","Opcion 63"},;
                       {},;
                       {"Opcion 71","Opcion 72","Opcion 73"},;
                       {"Opcion 81","Opcion 82","Opcion 83","Opcion 84"},;
                       {"Opcion 91","Opcion 92","Opcion 93"},;
                       {},;
                       {,,,};
                       }
                    /*

                       {},;
                       {,,,},;
                       {,,,},;
                       {,,,};
                      }
                    */

Local aBmps     := { aBmps1, aBmps2, , aBmps3, aBmps4, , ;
                       aBmps5, aBmps6, , aBmps7, aBmps8 , aBmps9 }
Local aTitGrps  := { "Grupo I","Grupo II","Grupo III","Grupo IV" }



   // Sets generales---------------------------------------------------------
   SET EPOCH TO 1990               // Admite los años desde el 1990 en adelante
   SET CENTURY ON                  // 4 dígitos año
   SET DELETED ON                  // Impedir ver registros marcados borrar
   //SetCancel( .F. )              // Inutiliza ALT + C para abortar programa
   //SetDialogEsc( .F. )           // Impide salir Diálogos con Escape
   SET DATE FORMAT "DD/MM/YYYY"
   SET DECIMALS TO 2
   XBrNumFormat( "E", .T.)

   SetResDebug( .T. )

   //---------------------------     -----------------------------------------//
   // Modelo 002:  Ventana: Panel principal
   //                       En ventana principal: NO MDI (No es necesario MDI)
   //              Definicion de cuadros de diálogos laterales
   //---------------------------     -----------------------------------------//

   oWinUI := TWindowsUI():PnelPPal( .T., lMax, lEsMdi, nColor, cTit, cUser, aBtt)

   // Activa la visualizacion de ventanas en panel izquierdo
   //
   oWinUI:lSaveBmp    := .T.

   oWinUI:lDlgRight   := .T.
   oWinUI:SRightUpUI( , , , , )

   oWinUI:lDlgLeft    := .T.
   oWinUI:SLeftUpUI( , , , , )

   oWinUI:lDlgBottom  := .F.
   oWinUI:lDlgTop     := .F.

   bActions := { | x, y, nF, oCol | XBrwMnu( oCol:oBrw:nRowSel, ;
                                             oCol:oBrw:nColSel, oCol )}
   // Simulacion de Menu "Azulejos"
   oWinUI:UIXPnel( oWinUI, aBmps, aTitGrps, 118, aItems, bActions )

   oWinUI:ActivaUI()

   Hb_GCall(.t.)
   CLEAR MEMORY

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

Return nil

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

Function CalculaRes( nTp )  // nTp -> 0 Ancho   nTp -> 1 Alto
local nAncho
local nAlto
local nPorcAnc
local nPorcAlt
DEFAULT nTp   := 0
      nAncho  := GetSysMetrics( 0 ) //ScreenWidth()  //GetSysmetrics( 4 )
      nAlto   := GetSysMetrics( 1 ) //ScreenHeight() //GetSysmetrics( 3 )
      if Empty( nTp )
         nPorcAnc := Round( ( nAncho/1366 ) , 4 )
      else
         nPorcAlt := Round( ( nAlto/768 ) , 4 )
      endif
     //    1920    1058      1920            1080               17                  17            22
     // ? nAncho, nAlto , GetSysmetrics(0), GetSysmetrics(1), GetSysmetrics(2),GetSysmetrics(3),GetSysmetrics(4)

Return IF( Empty( nTp ), nPorcAnc, nPorcAlt )

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

//----------------------------------------------------------------------------//
Function IsAppThemed() ; Return .F.
//----------------------------------------------------------------------------//
Function XBrwMnu( nRow, nCol, oCol )
Local nVentanas  :=  Len( oWinUI:GetListWnds() )
Local oWnd

Do Case
   Case nCol = 1
        Do Case
           Case nRow = 1
               //? nVentanas
               //cTitle, cMsg, oWnd, nColor, oFont1, lFlat, nWd, nHg
               TDialogUI():DlgMsgUI( "Nº de Ventanas", Str( nVentanas ), , , , , ,)

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 2
        Do Case
           Case nRow = 1
                oWnd  := Metro02( .F. )
                oWnd:ActivaUI()

           Case nRow = 2
                oWnd  := Metro02( .T. )
                oWnd:ActivaUI()

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 4
        Do Case
           Case nRow = 1
                oWnd   := Metro03( .T. )
                oWnd:ActivaUI()
           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase

   Case nCol = 5
        Do Case
           Case nRow = 1
                oWnd   := Metro03( )
                oWnd:ActivaUI()

           Case nRow = 2

           Case nRow = 3

           Case nRow = 4

        EndCase


   Case nCol = 7
        Do Case
           Case nRow = 1
//                Editor()
                //? Len( oWinUI:HazListWnds() )

           Case nRow = 2
//                TextoVertical()
           Case nRow = 3
//                TextoHorizontal()
           Case nRow = 4
//                ObjectCells()
       EndCase

   Case nCol = 8
        Do Case
           Case nRow = 1
//                MetroUI02()
           Case nRow = 2
//                MultiLineCells()
                //ApliPPalUI()
                //oWinUIApp:ActivaUI()
           Case nRow = 3
//                UsarAcces()
           Case nRow = 4
        EndCase

   Case nCol = 9
        Do Case
           Case nRow = 1
//                MetroUI02()
           Case nRow = 2
//                MultiLineCells()
                //ApliPPalUI()
                //oWinUIApp:ActivaUI()
           Case nRow = 3
//                UsarAcces()
           Case nRow = 4
        EndCase

   Otherwise
        if Empty( nCol ) .or. nCol > Len( oCol:oBrw:aCols )
           ? "Columna no definida"
        endif
EndCase

Return nil


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

Function Metro03( lMnu )

   local oWnd
   local oDlg
   local oFont
   local oBrw
   local oFontS
   local x
   local hDC

   DEFAULT lMnu   := .F.


   DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -42  //-52

   //DEFINE FONT oFontS NAME "Segoe UI Symbol" SIZE 0, -32

   oWnd := TWindowsUI():New( .T., .T., .F., METRO_WINDOW,,,)

   WITH OBJECT oWnd

      :lSaveBmp        := .T.

      :lBttExitUI     := .T.
      :nRowBttUI      := 48
      :nColBttUI      := 48
      :aBttExitUI     := { ".\Res\back641.bmp", ".\Res\back642.bmp", 48, 48 }

      :lBttIconUI     := .T.
      :nRowBttIcoUI   := 78
      :nColBttIcoUI   := GetSysMetrics(0) - 90 //1200 // 290 //428
      :aBttIconUI    := { ".\Res\guest32.bmp", ".\Res\guest32.bmp", 32, 32 }

      if lMnu
      :SetTitleUI( "Opcion 3.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 3.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )
      else
      :SetTitleUI( "Opcion 4.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 4.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )

      endif
      :oWndUI:bMMoved  := oWinUI:oWndUI:bMMoved
   END

   if lMnu
      oBrw  := HazBrowse03( oWnd:oWndUI, oFont )
   endif

   //oDlg  := HazDlg03( oWnd:oWndUI )
   oWnd:bControls := { | o | HazDlg03( o:oWndUI ) }
   //oWnd:oWndUI:bInit := { | o | HazDlg03( oWnd:oWndUI ) }

   oFont  := Nil
   oFontS := Nil

return oWnd


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

Function HazDlg03( oWnd )
Local oDlg
Local aOCtrl
        //TWindowsUI
oDlg := TDialogUI():NewDlg( .F. , .F., oWnd, 140, 330, 1360, 760,  )
oDlg:oWndUI:bInit := { | o | Controls03( oDlg ) }
oDlg:ActivaDlgUI(.F.)   //.F.

Return oDlg

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

Function Controls03( oDlg )
Local nFI       := 5 + 25
Local nFIG      := nFI + 20
Local nCI       := 185+100
Local nCIG      := nCI + 2
Local oFont
Local oFontX
Local nInc      := 40
Local nW        := 180
Local nH        := 24+2
Local oSel
Local nOpt1     := 1

Local oBttConex
Local oBttClose
Local oWnd
Local lSw        := .F.

   oWnd   := oDlg:oWndUI

   // Realizando cálculos de ajuste de dialogos y ventanas
   // Solo son pruebas de momento
   nFI       := nFI  * GetDialogBaseUnits()[ 1 ]
   nFIG      := nFIG * GetDialogBaseUnits()[ 1 ]
   nCI       := (nCI - 100) * GetDialogBaseUnits()[ 2 ]
   nCIG      := (nCIG- 100) * GetDialogBaseUnits()[ 2 ]
   nInc      := nInc * GetDialogBaseUnits()[ 1 ]
   nW        := nW   * GetDialogBaseUnits()[ 2 ]
   nH        := nH   * GetDialogBaseUnits()[ 1 ]

//? GetDialogBaseUnits()[ 1 ], GetDialogBaseUnits()[ 2 ]

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -20  //-52
   DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14  //-52


   @ 10, 20 SELEX oSel VAR nOpt1 oF oWnd SIZE 60*2, 40*2 PIXEL ;
             ACTION ( MsgInfo("Si") ) ;
             ITEMS " ",  " " ;
             COLOR THUMB METRO_WINDOW ;
             GRADIENT INTRACK  {{ 1, METRO_GRIS1, METRO_GRIS1 },{ 0, METRO_GRIS1, METRO_GRIS1 }}  ;
             GRADIENT OUTTRACK {{ 1, METRO_WINDOW, METRO_WINDOW },{ 0, METRO_WINDOW, METRO_WINDOW }} ;
             LINECOLORS METRO_WINDOW, METRO_WINDOW ;
             ROUNDSIZE 0 ;
             THUMBSIZE 30, 30  //;




   @ nFI+nInc*6+10, 20 BUTTON oBttConex PROMPT " &ACEPTAR " SIZE 60*2, 20*2 PIXEL oF oWnd ;
      FONT oFontX ;
      ACTION ( MsgInfo("Aceptar" ) ) //CANCEL

   @ nFI+nInc*6+10, Int(20+109*1.5) BUTTON oBttClose PROMPT " &CANCELAR " SIZE 60*2, 20*2 PIXEL oF oWnd ;
      FONT oFontX ;
      ACTION ( MsgInfo("Cancelar" ) ) //CANCEL

Return  lSw    // Ha de devolver un array de controles ?

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

Function HazBrowse03( oWnd, oFont )
Local oBrw
Local aItems := { "Opcion Primera", "Segunda Opcion", "Tercera Opcion", ;
                  "Cuarta Opcion", "Quinta Opcion", "_ Opcion", "Septima" }

Local oFont2
Local oFont3

   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0, -32
   DEFINE FONT oFont3 NAME "Segoe UI Light" SIZE 0, -16

   @ 140, 12 XBROWSE oBrw ARRAY aItems COLSIZES 310 CELL ;
      FONT oFont2 SIZE 315, 645 PIXEL NOBORDER OF oWnd

   WITH OBJECT oBrw

        :nDataLines = 2
        :nRowHeight = 90
        :lRecordSelector = .F.
        :lHeader   = .F.
        :lHScroll  = .F.
        :lVScroll  = .F.
        :nStretchCol = 1
        :bClrStd = { || { CLR_BLACK, CLR_WHITE } }
        :bClrSel = { || { CLR_WHITE, METRO_GRAYTEXT } }
        :bClrSelFocus = { || { CLR_WHITE, RGB( 34, 177, 76 ) } }

        //:SetColor( METRO_WINDOW, METRO_GRIS1 )   //"B/W*" )
        :SetArray( aItems )
        :aCols[1]:bLDClickData   := {|x,y,nF,oCol| OpcBrw03( oBrw:nArrayAt, ;
                                  oBrw, x, y, oBrw:nRowSel, oBrw:nColSel, nF) }
        :bKeyChar   := :aCols[1]:bLDClickData

        :CreateFromCode()
        :aCols[ 1 ]:bPaintText = { | oCol,hDC,cText,aCoors,aColors,lHighlight |;
                                DrawRowN( oCol, hDC, cText, aCoors , oFont3 )  }
   END

Return oBrw

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

Static function DrawRowN( oCol, hDC, cText, aCoors, oFont )

   local hOldFont
   local aItems := { "Esta es la Primera Opcion",;
                     "Pulsa aqui para la Segunda",;
                     "Tercer comentario",;
                     "Opcion Cuarta del Menu",;
                     "Pulsa Utilidades y Varios",;
                     "Otras opciones",;
                     "Salir del Menu" }

   DrawText( hDC, cText, aCoors )
   aCoors[ 1 ] += 45
   //aCoors[ 2 ] += 12
   hOldFont = SelectObject( hDC, oFont:hFont )
   DrawText( hDC, aItems[ oCol:oBrw:KeyNo ], aCoors )
   SelectObject( hDC, hOldFont )

return nil

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

Function OpcBrw03( nPos, oBrw, x, y, nRow, nCol, nF )
Local oDlg
Local oWin
Local cFile     := ""
Local  aCampos  := {}
Do Case
   Case nCol = 1
        Do Case
           Case nRow = 1
                //

           Case nRow = 2
                //
                oWin := Metro03()
                oWin:ActivaUI()
           Case nRow = 3
                //

           Case nRow = 4
                //
           Case nRow = 5
                //
                oWin := Metro03()
                oWin:ActivaUI()

           Case nRow = 6

           Case nRow = 7

         EndCase
   Otherwise

EndCase

Return nil

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

Function Metro02( lMnu )

   local oWnd
   local oDlg
   local oFont
   local oBrw
   local oFontS
   local x
   local hDC

   DEFAULT lMnu   := .F.


   DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -42  //-52

   //DEFINE FONT oFontS NAME "Segoe UI Symbol" SIZE 0, -32

   oWnd := TWindowsUI():New( .T., .T., .F., METRO_WINDOW,,,)

   WITH OBJECT oWnd

      :lSaveBmp        := .T.

      :lBttExitUI     := .T.
      :nRowBttUI      := 48
      :nColBttUI      := 48
      :aBttExitUI     := { ".\Res\back641.bmp", ".\Res\back642.bmp", 48, 48 }

      :lBttIconUI     := .T.
      :nRowBttIcoUI   := 78
      :nColBttIcoUI   := GetSysMetrics(0) - 90 //1200 // 290 //428
      :aBttIconUI    := { ".\Res\guest32.bmp", ".\Res\guest32.bmp", 32, 32 }

      if lMnu
      :SetTitleUI( "Opcion 3.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 3.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )
      else
      :SetTitleUI( "Opcion 2.1" , 48, 330, 0, , { CLR_BLACK, METRO_WINDOW }, )
      :SetTUserUI( "Simulacion MDI 2.1", :nRowBttIcoUI-4, ;
                   GetSysMetrics(0) - 355, 0, , { CLR_BLACK, METRO_WINDOW }, ) //oFont )

      endif
      :oWndUI:bMMoved  := oWinUI:oWndUI:bMMoved
   END

   if lMnu
      oBrw  := HazBrowse03( oWnd:oWndUI, oFont )
   endif

   //oDlg  := HazDlg02( oWnd:oWndUI )
   oWnd:bControls := { | o | HazDlg02( o:oWndUI ) }
   //oWnd:oWndUI:bInit := { | o | HazDlg02( oWnd:oWndUI ) }

   oFont  := Nil
   oFontS := Nil

return oWnd

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

Function HazDlg02( oWnd )
Local oDlg
Local aOCtrl

oDlg := TDialogUI():NewDlg( .F. , .F., oWnd, 140, 330, 1360, 760,  )

oDlg:oWndUI:bInit := { | o | aOCtrl := Controls02( oDlg ), ;
                             CtrlPnel1( aOCtrl[1] ), CtrlPnel2( aOCtrl[2] ) }
//aOCtrl   := Controls02( oDlg )
//oDlg:oWndUI:bInit := { | o | CtrlPnel2( aOCtrl[2] ), CtrlPnel1( aOCtrl[1] ) }
oDlg:ActivaDlgUI(.F.)

Return oDlg

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

Function Controls02( oDlg )  //oPnel1, oPnel2 )
Local nFI       := 5 + 25
Local nFIG      := nFI + 20
Local nCI       := 185+100
Local nCIG      := nCI + 2
Local oFont
Local oFontX
Local nInc      := 40
Local nW        := 120 * 1.60
Local nH        := 40 * 1.60
Local oSelJet
Local cSelJet   := "Cadena de Mensaje                   "

Local oSay0
Local oSay1
Local oSay2
Local oSay3
Local oSel1
Local nOpt1     := 1
Local oPanel1
Local oPanel2
Local nAltoSpl1  := 329
Local nAnchoSpl1 := 140  //180
Local oBttConex
Local oBttClose
Local oWnd
Local lSw        := .F.

   oWnd        := oDlg:oWndUI
   nAltoSpl1   := oWnd:nHeight
   nAnchoSpl1  := oWnd:nWidth / 3
   nCI         := 695
   nCIG        := nCI + 2
   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -20  //-52
   DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14  //-52

   oPanel1 := TPanel():New( 0, 0, nAltoSpl1, nAnchoSpl1, oWnd )
   oPanel1:SetColor( METRO_GRIS2, METRO_GRIS1 )

   oPanel2 := TPanel():New( 0, nAnchoSpl1, nAltoSpl1, nAnchoSpl1*2, oWnd )
   oPanel2:SetColor( METRO_GRIS1, METRO_GRIS4 )

   @ nFI-25 , nCI SAY oSay0 ;
     PROMPT " Cuadro de Dialogo: "  ;
     SIZE nW, nH PIXEL oF oWnd ;
     COLOR METRO_WINDOW, METRO_GRIS2 FONT oFont TRANSPARENT

   @ nFI+nInc*1, nCI SAY " Mensaje: " ;
     SIZE nW, nH PIXEL oF oWnd ;
     COLOR METRO_WINDOW, METRO_GRIS2 FONT oFont TRANSPARENT

   @ nFI+nInc*2, nCI GET oSelJet VAR cSelJet SIZE nW*1.45, nH/2 PIXEL oF oWnd ;
      FONT oFontX ;
      COLOR METRO_GRIS2, METRO_WINDOW ;   //METRO_APPWORKSPACE, METRO_WINDOW
      PICTURE "@!"  ;
      VALID ( .T. )

   @ nFI+nInc*13, nCIG BUTTON oBttConex PROMPT " &Aceptar " ;
                  SIZE 160, 40 PIXEL oF oWnd FONT oFontX

   @ nFI+nInc*13, Int(nCIG+109*1.5) BUTTON oBttClose PROMPT " &Cancelar " ;
                  SIZE 160, 40 PIXEL oF oWnd FONT oFontX


   //oFont:End()
   //oFont    := Nil

Return { oPanel1, oPanel2 }

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

Function CtrlPnel1( oPanel1 )
Local oFontX
Local nW        := 160 * 1.60
Local oTipos
Local cTipoEx   := "Mover al Principio"
Local oTipos1
Local cTipoEx1  := "Mover al Final"
Local aTipo     := {"Eliminar", "Insertar Antes", ;
                    "Insertar Después", "Mover Abajo", ;
                    "Mover Arriba","Mover al Principio", ;
                    "Mover al Final" }

   DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14  //-52

   @ 4, 4 COMBOBOX oTipos VAR cTipoEx ;
     ITEMS aTipo ;
     OF oPanel1 ;
     SIZE Int(nW*0.68), 190 ;   //275
     FONT oFontX ;
     STYLE CBS_DROPDOWNLIST ;
     PIXEL COLOR METRO_GRIS1, METRO_WINDOW

     oTipos:nStyle := nOr( oTipos:nStyle, CBS_NOINTEGRALHEIGHT )

   @ 590, 162 COMBOBOX oTipos1 VAR cTipoEx1 ;
     ITEMS aTipo ;
     OF oPanel1 ;
     SIZE Int(nW*0.68), 190 ;   //275
     FONT oFontX ;
     STYLE CBS_DROPDOWNLIST ;
     PIXEL COLOR METRO_GRIS1, METRO_WINDOW

     oTipos1:nStyle := nOr( oTipos1:nStyle, CBS_NOINTEGRALHEIGHT )

Return nil

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

Function CtrlPnel2( oPanel2 )
Local oFontX
Local oFont
Local nW        := 160 * 1.60
Local nH        := 19 * 1.60
Local oTipos
Local aTipo     := {"Eliminar", "Insertar Antes", ;
                    "Insertar Después", "Mover Abajo", ;
                    "Mover Arriba","Mover al Principio", ;
                    "Mover al Final" }

   DEFINE FONT oFont  NAME "Segoe UI Light" SIZE 0, -20  //-52
   DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14  //-52

   @ 4, 4 XBROWSE oTipos ;
     ARRAY aTipo ; // COLSIZES (nW-6) ;      CELL ;
     FONT oFontX ;
     SIZE nW-4, Int(nH)*11 - 20 PIXEL oF oPanel2 //NOBORDER

   WITH OBJECT oTipos
        :lHScroll        := .F.
        :lVScroll        := .F.
        :lHeader         := .T.
        :lRecordSelector := .F.
        :l2007           := .F.

        :bClrSel         := { || { METRO_WINDOWTEXT, METRO_WINDOW } }
        :bClrStd         := { || { METRO_WINDOWTEXT, METRO_WINDOW } }
        :bClrSelFocus    := { || { METRO_WINDOW, METRO_APPWORKSPACE } }

        :bClrHeader      := { || { METRO_WINDOW, METRO_GRIS4 } }
        :SetColor( METRO_WINDOWTEXT, METRO_WINDOW )

        :nRowDividerStyle  := LINESTYLE_NOLINES        //4
        :nColDividerStyle  := LINESTYLE_NOLINES        //4
        :nMarqueeStyle     := 5                        //3
        :nRowHeight        := 38
        :lAutoSort         := .F.

        :SetArray( aTipo )

   END

   WITH OBJECT oTipos:aCols[ 1 ]

      :nWidth         := nW-4
      :cHeader        := " Opciones "
      :nDataStrAlign  := 0
      :lAllowSizing   := .F.
      :oHeaderFont    := oFont

   END

   oTipos:CreateFromCode()

Return nil

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

 
Image

Re: Clases UI

Posted: Sun Aug 03, 2014 8:57 am
by cnavarro

Re: Clases UI

Posted: Sun Aug 03, 2014 9:03 am
by cnavarro
Carpeta con recursos e iconos
Creo que estan todos
https://www.dropbox.com/s/tub3cyllac3sl52/Res.zip

Re: Clases UI

Posted: Sun Aug 03, 2014 9:15 am
by Antonio Linares
Cristobal,

Muchísimas gracias por tu generosidad y por compartir con todos nosotros tu trabajo y tu esfuerzo!!! :-)

Re: Clases UI

Posted: Sun Aug 03, 2014 9:43 am
by cnavarro
Enlace con el fichero .Bat para construir los ejemplos
Link to the file. Bat to construct examples
https://www.dropbox.com/s/pf1yhr7zl9k7k8l/makeui.bat

Tienes que modificar los path de Fivewin y de Harbour
Forma de usarlo
You have to change the path of Fivewin and Harbour
Method of use
C:\FiveUI>makeui wndui01 (para crear el ejemplo wndui01, y asi sucesivamente)
(to create the example wndui01, and so on)
Voy a adjuntar tambien los Objs construidos
I'll also attach the built Objs
https://www.dropbox.com/s/os6dl01w8w6gr9s/obj.zip

Y las clases
https://www.dropbox.com/s/a4ux90125mwxv4v/Source.zip

Ojo, el fichero .ZIP de ejemplos WNDUI00.ZIP que publiqué antes ha de colocarse en la carpeta SOURCE
Eye, the ZIP file. WNDUI00.ZIP examples I posted before has placed in the SOURCE folder

Instrucciones:
- Crear una carpeta en el subidrectorio raiz C:\FiveUI
(Si deseas crearla en otra carpeta tendrás que modificar el fichero .BAT que adjunto
- La estructura de la carpeta ha de ser
C:\FiveUI
-- Include
-- Obj
-- Res
-- Source

y colocar las carpetas comprimidas que he publicado en sus respectivas ubicaciones

instructions:
- Create a folder on the root subidrectorio C: \ FiveUI
    (If you want to create another folder you will have to modify the file. Attached BAT
- The folder structure must be
   C: \ FiveUI
                  - Include
                  - Obj
                  - Res
                  - Source
                 
and place the compressed folders that I posted at their respective locations

Re: Clases UI

Posted: Sun Aug 03, 2014 9:49 am
by cnavarro
Antonio
Lo hago muy orgulloso y también agradecido de tu persona y de los compañeros del foro
Espero que a alguien les sirva

Por otra parte para poder publicar el codigo del editor que me solicitaste, del visual make y de mis rutinas en el Fivedbu con ADO son necesarias estas clases

Eso serán los ejemplos: WNDUI18 - WNDUI19 - WNDUI20, etc que tengo preparados y que estoy "puliendo"

Espero que alguien lo pruebe y me indique si se construyen correctamente

Si alquien puede/quiere traducir estos mensajes, estaría bien.
Cualquier cosa, ya sabes, por aqui estaré

Anthony
I'm very proud and grateful person and your fellow forum
I hope someone serve them

In addition to publishing the code editor to please me, and make visual routines in my Fivedbu with ADO these classes are necessary

That will be the examples: WNDUI18 - WNDUI19 - WNDUI20, etc. I have prepared and I'm "polishing"

I hope someone proves me and indicate whether constructed correctly

If anyone can / wants to translate these messages would be nice.
Anything, you know, I'll be here

Re: Clases UI

Posted: Sun Aug 03, 2014 10:06 am
by Baxajaun
Cristobal,

muchas gracias.

Saludos,

Re: Clases UI

Posted: Sun Aug 03, 2014 10:15 am
by cnavarro
Como anticipo de lo que hablo y para que no se me olvide y me sirva de indice :oops:

Image

Image

Image

Image

Image

Image

Image

Image

Image

Como pueden comprobar la ultima pantalla no está terminada, aunque ya es bastante funcional

El Visual Make permite importar proyectos de Verce 4.3 y generar el archivo .bat y el .mak

Re: Clases UI

Posted: Sun Aug 03, 2014 10:26 am
by Baxajaun
Cristobal,

me quito la txapela. Impresionante !

Muchas gracias.

Saludos

Re: Clases UI

Posted: Sun Aug 03, 2014 10:28 am
by cnavarro
Baxajaun wrote:Cristobal,

me quito la txapela. Impresionante !

Muchas gracias.

Saludos
Que tal tiempo hace por alli?
A tu disposicion, espero que funcione y lo terminemos al 100 por 100
Bueno mejor dicho al 200 por 100, creo que aun hay muchas cosas que se pueden añadir/mejorar

Re: Clases UI

Posted: Sun Aug 03, 2014 10:40 am
by cnavarro
Como comentario adicional:
- Estoy intentando crear #define para que se parezca lo más posible a la filosofia de Fivewin, pero me estoy encontrando con muchas dificultades
- Yo he preferido siempre programar como véis en los ejemplos (tipo plantilla, así, modificando los datos, ya tengo la aplicación lista, aunque yo siempre lo he definido como "pistola", o sea, "cargar y disparar" :D :D )
- Además, así es más fácil poder establecer parámetros en ficheros externos de configuracion

Es mi opinión, claro, pero cualquier idea será bienvenida

As an additional comment:
- I'm trying to create # define as closely as possible to the philosophy Fivewin, but I'm finding many difficulties
- I've always preferred schedule as you see in the examples (type template and modifying data, and have the application list, although I've always defined as "gun" or "load and fire": D: D )
- In addition, it is easier to set parameters in external configuration files

It's my opinion, of course, but any idea will be welcome

Re: Clases UI

Posted: Sun Aug 03, 2014 11:16 am
by cnavarro
Otras imagenes

Image

Image

Image

Image