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 Expand view
/*
*
* 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
//----------------------------------------------------------------------------//
- Code: Select all Expand view
/*
*
* 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
//----------------------------------------------------------------------------//
- Code: Select all Expand view
/*
*
* 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
- Code: Select all Expand view
/*
*
* 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
//----------------------------------------------------------------------------//
- Code: Select all Expand view
/*
*
* 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
//----------------------------------------------------------------------------//
- Code: Select all Expand view
/*
*
* 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
//----------------------------------------------------------------------------//
- Code: Select all Expand view
/*
*
* 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
//----------------------------------------------------------------------------//
- Code: Select all Expand view
/*
*
* 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
//----------------------------------------------------------------------------//
- Code: Select all Expand view
/*
*
* 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
//----------------------------------------------------------------------------//