Estimado Jos茅, muchas gracias.
// C:\FWH\SAMPLES\MURUGOS4.PRG
#Include "FiveWin.ch"
#Include "WinApi.ch"
#Include "XBrowse.ch"
/*
Modo de uso: XBROWSER tabla title titulo SETUP XBrBar( oBrw, 1 )
EstadoBar = 0 - Sin barra de botones ni edici贸n con doble click
EstadoBar = 1 - Con barra de botones, desplazamiento y excel ni edici贸n con doble click
EstadoBar = 2 - Con barra de botones, desplazamiento, excel e imprimir ni edici贸n con doble click
cualquier otro o si se omite el par谩metro - xbrowser sin limitaciones y con todos los botones
*/
STATIC oWnd
FUNCTION Main()
LOCAL oBrw, EstadoBar, oIco, oBar, oBmp, oPopUp, oPopUp2, oPopUp3, oPopUp4, ;
oPopUp5, oFont, oBtn := ARRAY(05)
REQUEST DBFCDX
rddSetDefault( "DBFCDX" )
SET DATE FRENCH
SET CENTURY ON
SET EPOCH TO Year( Date() ) - 40
DEFINE FONT oFont NAME "TAHOMA" SIZE 0, - 14
DEFINE ICON oIco FILE "..\icons\fax.ico"
DEFINE WINDOW oWnd FROM 1, 1 TO 22, 75 TITLE "Modelos de xBrowse SETUP" ;
MENU BuildMenu() COLOR "B/W" ICON oIco
DEFINE BUTTONBAR oBar _3D SIZE 60, 40 OF oWnd 2007
WITH OBJECT oBar // VER: ANCHO.PRG
oBar:bRClicked := { || ( NIL ) } // Mouse Direito
oBar:bLClicked := { || ( NIL ) } // Mouse Esquerdo
oBar:SetFont( oFont )
// Cor no Prompt dos Botoes
oBar:nClrText := CLR_BLACK //HBLUE // BLACK
oBar:Adjust()
END
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\new.bmp" FLAT ;
PROMPT "Model 0" ;
ACTION ( XBrBar( oBrw, EstadoBar := 0 ) ) ;
TOOLTIP "Creates a new document"
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\open.bmp" FLAT ;
PROMPT "Model 1" ;
ACTION ( XBrBar( oBrw, EstadoBar := 1 ) ) ;
TOOLTIP "Opens a document"
// Aqui Jairo.
GetnWidthItem( 0.8 ) // Ajusta con un valor < 1, y comprueba 0.8
MENU oPopUp POPUP 2007 COLORS HEIGHT 2.27 FONT oFont
MENUITEM "Cadastro de Clientes" ;
FILENAME "..\bitmaps\16x16\new.bmp" ;
MESSAGE "Cadastro de Clientes - Pesquisas." ;
ACTION MsgInfo( Time() )
SEPARATOR
MENUITEM "Cadastro de Grupos" ;
FILENAME "..\bitmaps\16x16\open.bmp" ;
MESSAGE "Cadastro de Grupos - Textos Auxiliares." ;
ACTION MsgInfo( Time() )
SEPARATOR
MENUITEM "Cadastro de Ferramentas" ;
FILENAME "..\bitmaps\16x16\printer.bmp" ;
MESSAGE OemToAnsi( "Cadastro de Ferramentas da Proposta" ) ;
ACTION MsgInfo( Time() )
SEPARATOR
MENUITEM "Cadastro de M茫o de Obra" ;
FILENAME "..\bitmaps\16x16\prop.bmp" ;
MESSAGE OemToAnsi( "Cadastro de M脝o de Obra" ) ;
ACTION MsgInfo( Time() )
SEPARATOR
MENUITEM "Cadastro de Paisagistas" ;
FILENAME "..\bitmaps\16x16\Help.bmp" ;
MESSAGE OemToAnsi( "Cadastro de Paisagistas da Empresa" ) ;
ACTION MsgInfo( Time() )
ENDMENU
// Aqui Jairo.
DEFINE BUTTON oBtn[03] OF oBar ACTION oBtn[03]:ShowPopup() FLAT GROUP ;
FILENAME "..\bitmaps\16x16\floppy.bmp" ;
MESSAGE "Saves this document" ;
TOOLTIP "Saves this document" ;
MENU oPopup
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\printer.bmp" FLAT GROUP ;
PROMPT "Model 2" ;
ACTION ( XBrBar( oBrw, EstadoBar := 2 ) )
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\prop.bmp" FLAT GROUP ;
PROMPT "Model 3" ;
ACTION ( XBrBar( oBrw, EstadoBar := 3 ) )
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\HelpInd.bmp" FLAT ;
PROMPT "Model 4" ;
ACTION ( XBrBar( oBrw, EstadoBar := 4 ) )
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\Help.bmp" FLAT ;
PROMPT "Model 5" ;
ACTION ( XBrBar( oBrw, EstadoBar := 5 ) )
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\Close2.bmp" FLAT ;
PROMPT "Model 6" ;
ACTION ( XBrBar( oBrw, EstadoBar := 6 ) )
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\Exit.bmp" FLAT ;
ACTION oWnd:End() TOOLTIP "Exit this app" GROUP
DEFINE MESSAGE OF oWnd ;
PROMPT FWVERSION + " " + FWCOPYRIGHT ;
NOINSET CENTERED KEYBOARD DATE CLOCK 2007
DEFINE BITMAP oBmp FILENAME "..\bitmaps\back.bmp"
oWnd:bPainted = { | hDC | BmpTiled( hDC, oWnd, oBmp ) }
ACTIVATE WINDOW oWnd CENTERED ;
VALID MsgYesNo( "Do you want to quit ?" )
oFont:End()
RETURN NIL
FUNCTION XBrBar( oBrw, EstadoBar )
LOCAL i, oFont, oBtt, oDlg
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0, -16 BOLD
USE ..\samples\customer NEW SHARED
IF EstadoBar = 0
/* // error.
XBROWSER "CUSTOMER" TITLE "Prueba 0" SETUP ;
oBrw:oWnd:bInit := ;
{ |oDlg|
WITH OBJECT oDlg
:oBar:Hide()
oBrw:nTop -= :oBar:nHeight
oBrw:nHeight += :oBar:nHeight
oBrw:bLDblClick:={|| nil }
END
}
*/
XBROWSER "CUSTOMER" TITLE "Prueba 0" SETUP ;
( oBrw:bInit := {| o | ;
o:oWnd:oBar:aControls[ 8 ]:lGroup := .F., ;
o:oWnd:oBar:aControls[ 5 ]:Hide(), ;
o:oWnd:oBar:aControls[ 6 ]:Hide(), ;
o:oWnd:oBar:aControls[ 7 ]:Hide(), ;
o:oWnd:oBar:aControls[ 8 ]:Hide(), ;
o:oWnd:oBar:aControls[ 9 ]:Move( 0, o:oWnd:oBar:nWidth() -35 ) } ; // aqui
)
ELSEIF EstadoBar = 1
// Jose, no comprendo. ???
// MURUGOS4.prg(193) Warning W0027 Meaningless use of expression: 'Codeblock'
XBROWSER "CUSTOMER" TITLE "Prueba 1" SETUP ;
oBrw:oWnd:bInit := ( ;
{ | o | ;
o:oBar:l2010 := .F., ;
o:oBar:l2013 := .F., ;
o:oBar:l2015 := .T., ;
o:oBar:aControls[ 5 ]:cTooltip := o:oBar:aControls[ 9 ]:cToolTip, ;
o:oBar:aControls[ 5 ]:bAction := o:oBar:aControls[ 9 ]:bAction, ;
o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
o:oBar:aControls[ 6 ]:cTooltip := "Exit", ;
o:oBar:aControls[ 6 ]:bAction := { | oBtt | oBtt:oWnd:oWnd:End() }, ;
o:oBar:aControls[ 6 ]:LoadBitmaps( FWBitmap( "exit2" ) ), ;
o:oBar:aControls[ 6 ]:lRight := .T., ;
AEval( o:oBar:aControls, { | oBtt | oBtt:End() }, 7, 9 ), ;
ASize( o:oBar:aControls, 7 ), ;
AEval( o:oBar:aControls, { | oBtt | oBtt:Refresh() } ), ;
o:oBar:SetGradients(), ;
o:oBar:Refresh() }, ;
oBrw:bLDblClick:={|| nil } ) // NO CLICK FUNCIONA
ELSEIF EstadoBar = 2
// MURUGOS4.prg(218) Warning W0027 Meaningless use of expression: 'Codeblock'
XBROWSER "CUSTOMER" TITLE "Prueba 2" SETUP ;
oBrw:oWnd:bInit := ( ;
{ | o | ;
o:oBar:l2010 := .F., ;
o:oBar:l2013 := .F., ;
o:oBar:l2015 := .T., ;
o:oBar:aControls[ 5 ]:cTooltip := o:oBar:aControls[ 8 ]:cToolTip, ;
o:oBar:aControls[ 5 ]:bAction := o:oBar:aControls[ 8 ]:bAction, ;
o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "printer" ) ), ;
o:oBar:aControls[ 6 ]:cTooltip := o:oBar:aControls[ 9 ]:cToolTip, ;
o:oBar:aControls[ 6 ]:bAction := o:oBar:aControls[ 9 ]:bAction, ;
o:oBar:aControls[ 6 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
o:oBar:aControls[ 7 ]:cTooltip := "Exit", ;
o:oBar:aControls[ 7 ]:bAction := { | oBtt | oBtt:oWnd:oWnd:End() }, ;
o:oBar:aControls[ 7 ]:LoadBitmaps( FWBitmap( "exit2" ) ), ;
o:oBar:aControls[ 7 ]:lRight := .T., ;
AEval( o:oBar:aControls, { | oBtt | oBtt:End() }, 8, 9 ), ;
ASize( o:oBar:aControls, 7 ), ;
AEval( o:oBar:aControls, { | oBtt | oBtt:Refresh() } ), ;
o:oBar:SetGradients(), ;
o:oBar:Refresh() }, ;
oBrw:bLDblClick:={|| nil } ) // NO CLICK FUNCIONA
ELSEIF EstadoBar = 3
XBROWSER "customer" TITLE "Prueba 3" SETUP ;
( oBrw:oWnd:bInit := {| o | ;
o:oBar:l2013 := .T., ;
o:oBar:l2010 := .F., ;
o:oBar:l2015 := .F., ;
o:oBar:aControls[ 5 ]:cTooltip := o:oBar:aControls[ 9 ]:cToolTip, ;
o:oBar:aControls[ 5 ]:bAction := o:oBar:aControls[ 9 ]:bAction, ;
o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
o:oBar:aControls[ 6 ]:cTooltip := "Exit", ;
o:oBar:aControls[ 6 ]:bAction := {| oBtt | oBtt:oWnd:oWnd:End() }, ;
o:oBar:aControls[ 6 ]:LoadBitmaps( FWBitmap( "exit2" ) ), ; // close16
o:oBar:aControls[ 6 ]:lRight := .T., ;
AEval( o:oBar:aControls, {| oBtt | oBtt:End() }, 7, 9 ), ;
ASize( o:oBar:aControls, 6 ), ;
AEval( o:oBar:aControls, {| oBtt | oBtt:Refresh() } ), ;
o:oBar:SetGradients(), ;
o:oBar:Refresh() ;
} )
ELSEIF EstadoBar = 4
XBROWSER "CUSTOMER" TITLE "Prueba 4" SETUP ;
( oBrw:bInit := {| o | ;
o:oWnd:oBar:aControls[ 8 ]:lGroup := .F., ;
o:oWnd:oBar:aControls[ 5 ]:Hide(), ;
o:oWnd:oBar:aControls[ 6 ]:Hide(), ;
o:oWnd:oBar:aControls[ 7 ]:Hide(), ;
o:oWnd:oBar:aControls[ 8 ]:Hide(), ;
o:oWnd:oBar:Del( Len( o:oWnd:oBar:aControls )) } ;
)
ELSEIF EstadoBar = 5
XBROWSER "CUSTOMER" TITLE "Prueba 5" SETUP ;
( oBrw:oWnd:bInit := {| o | ;
o:oBar:l2007 := .T., ;
o:oBar:l2013 := .F., ;
o:oBar:l2010 := .F., ;
o:oBar:l2015 := .F., ;
o:oBar:aControls[ 6 ]:Hide(), ;
o:oBar:aControls[ 7 ]:Hide(), ;
o:oBar:aControls[ 8 ]:Hide(), ;
o:oBar:aControls[ 9 ]:Hide(), ;
o:oBar:aControls[ 5 ]:cTooltip := o:oBar:aControls[ 9 ]:cToolTip, ;
o:oBar:aControls[ 5 ]:bAction := o:oBar:aControls[ 9 ]:bAction, ;
o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
AEval( o:oBar:aControls, {| oBtt | oBtt:End() }, 6, 9 ), ;
ASize( o:oBar:aControls, 5 ), ;
AEval( o:oBar:aControls, {| oBtt | oBtt:Refresh() } ), ;
o:oBar:SetGradients(), ;
o:oBar:Refresh() ;
} )
ELSEIF EstadoBar = 6 // navarro:
XBROWSER "customer" TITLE "Prueba 6" SETUP ;
( oBrw:oWnd:bInit := { | o | ;
o:oBar:l2013 := .T., ;
o:oBar:l2010 := .F., ;
o:oBar:l2015 := .F., ;
o:oBar:aControls[ 5 ]:cTooltip := o:oBar:aControls[ 9 ]:cToolTip, ;
o:oBar:aControls[ 5 ]:bAction := o:oBar:aControls[ 9 ]:bAction, ;
o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
AEval( o:oBar:aControls, { | oBtt | oBtt:End() }, 6, 9 ), ;
ASize( o:oBar:aControls, 5 ), ;
AEval( o:oBar:aControls, { | oBtt | oBtt:Refresh() } ), ;
o:oBar:SetGradients(), ;
o:oBar:Refresh() }, ;
oBrw:bLDblClick:={|| nil } ) // NO CLICK FUNCIONA
ENDIF
CLOSE DATABASE
RETURN NIL
FUNCTION BuildMenu()
LOCAL oMenu
MENU oMenu 2007
MENUITEM "Information"
MENU
MENUITEM "&About..." ;
ACTION MsgInfo( FWDESCRIPTION ) ;
FILENAME "..\bitmaps\16x16\info.bmp"
SEPARATOR
MENUITEM "&End..." ;
ACTION oWnd:End() FILENAME "..\bitmaps\16x16\exit.bmp"
ENDMENU
MENUITEM "&Clients"
MENU
MENUITEM "&New..." ;
ACTION ( MsgStop( "New Clients" ),;
oWnd:Say( 5, 5, "New Clients...", "GR+/G" ) ) ;
FILENAME "..\bitmaps\16x16\faces.bmp"
MENUITEM "&Modify..." ACTION MsgInfo( "Modif. Clients" ) ;
FILENAME "..\bitmaps\edit.bmp"
MENUITEM "&Delete..." ACTION MsgAlert( "Del Clients" ) ;
FILENAME "..\bitmaps\16x16\delete.bmp"
SEPARATOR
MENUITEM "&Browse..." ACTION MsgInfo( "Browse Clients" ) ;
FILENAME "..\bitmaps\16x16\browse.bmp"
ENDMENU
MENUITEM "&Utilities"
MENU
MENUITEM "&Calculator..." ACTION WinExec( "Calc" ) ;
FILENAME "..\bitmaps\16x16\calc.bmp"
MENUITEM "&Internet..." ;
ACTION WinExec( "start iexplore www.fivetech.com", 0 ) ;
FILENAME "..\bitmaps\16x16\explorer.bmp"
ENDMENU
ENDMENU
RETURN( oMenu )
STATIC FUNCTION BmpTiled( hDC, oWnd, oBmp )
local nWidth := oWnd:nWidth(), nHeight := oWnd:nHeight()
local nRow := 0, nCol := 0, n
local nBmpWidth := oBmp:nWidth(), nBmpHeight := oBmp:nHeight()
if oBmp:hBitmap == 0
return nil
endif
while nRow < nHeight
nCol = 0
while nCol < nWidth
PalBmpDraw( hDC, nRow, nCol, oBmp:hBitmap )
nCol += nBmpWidth
end
nRow += nBmpHeight
end
RETURN NIL
// FIN / END - kapiabafwh@gmail.com
Regards, saludos.