XBrowse y Total en columna

Post Reply
User avatar
Manuel Aranda
Posts: 605
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

XBrowse y Total en columna

Post by Manuel Aranda »

Este código funciona perfectamente cuando el XBrowse está en un diálogo:

Code: Select all | Expand


 .......
   XbrNumFormat( "E", .t. )
   oLbx:aCols[ 9 ]:nFooterType := AGGR_TOTAL
   oLbx:MakeTotals()
   oLbx:CreateFromCode()
   oLbx:SetFocus()

 


Pero cuando el xBrowse está en una ventana windows me da el siguiente error:

Error description: Error BASE/1004 Class: 'NIL' has no exported method: EVAL
Args:
[ 1] = U
[ 2] = U

Stack Calls
===========
Called from: => EVAL(0)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:BOOKMARK(2774)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:MAKETOTALS(6416)

Alguien tiene idea de porqué ocurre esto?
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
nageswaragunupudi
Posts: 10733
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 11 times
Contact:

Re: XBrowse y Total en columna

Post by nageswaragunupudi »

This means oBrw:bBookMark is not yet assigned with a codeblock.

This happens if you did not SetRdd() or SetArray(), etc after creating xBrowse in Oops syntax.

Please confirm.
Regards

G. N. Rao.
Hyderabad, India
User avatar
Manuel Aranda
Posts: 605
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: XBrowse y Total en columna

Post by Manuel Aranda »

Sr. Rao. Ahora con oLbx:SetRDD() no da error pero tampoco hace la suma. El total da 0,00
¿Que estoy haciendo mal?
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
FranciscoA
Posts: 2164
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: XBrowse y Total en columna

Post by FranciscoA »

Hola Manuel.
A mi me pasaba lo mismo, tuve que utilizar oBrw:Refresh() cada vez que modifico algún valor de las col. afectadas.
Ver 1006.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
nageswaragunupudi
Posts: 10733
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 11 times
Contact:

Re: XBrowse y Total en columna

Post by nageswaragunupudi »

Mr. Manuel and Mr. Fransisco

It is better we discuss with a small self contained sample which all of us can compile and test.

Code: Select all | Expand

#include "FiveWin.Ch"
#include "ord.ch"
#include "xbrowse.ch"
#include "hbcompat.ch"

REQUEST DBFCDX

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

function Main()

   local oDlg, oBrw, oFont

   XbrNumFormat( 'E', .t. )

   USE CUSTOMER
   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-14
   DEFINE DIALOG oDlg SIZE 400,400 PIXEL FONT oFont ;
      TITLE "XBrowse Totals"
   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
      COLUMNS "First", "Age", "Salary" ;
      ALIAS "CUSTOMER" CELL LINES NOBORDER FOOTERS FASTEDIT

   WITH OBJECT oBrw
      :nEditTypes          := EDIT_GET
      :First:cFooter       := "Total"
      :Age:nFooterType     := AGGR_AVG
      :Salary:nFooterType  := AGGR_SUM
      :MakeTotals()
   END

   oBrw:CreateFromCode()
   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil

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

This sample works with customer.dbf in the fwh\samples folder.
Shows totals initially and totals are automatically changed when any column is edited.

Please test this sample and then compare how your own programs differ from this code.

Image

Important Note: Using command syntax of xBrowse makes programming much easier and enables using all advanced features of xBrowse without bugs. If you are adopting a different style of coding, please recode the above sample in your style and I shall be glad to advise how to make this work.

Note: oBrw:MakeTotals() is handy feature and makes programming simple and easy. But this function is not fast enough in case of large data. In such cases, we better have our own faster logic to display footers.
Regards

G. N. Rao.
Hyderabad, India
User avatar
Manuel Aranda
Posts: 605
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: XBrowse y Total en columna

Post by Manuel Aranda »

Sr. Rao,
Le adjunto el código que en la opción 2 "Prueba2" da error y no logro averiguar por qué. Ejecutar en carpeta samples.

Code: Select all | Expand



#include "FiveWin.Ch"
#include "ord.ch"
#include "xbrowse.ch"
#include "ribbon.ch"
#include "ttitle.ch"
//
STATIC oVentPrinc
REQUEST DBFCDX

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

function Main()
   local oRBar
   local oGr
   local oBtn:=Array(2)

   USE CUSTOMER SHARED NEW
   USE DIARIO   SHARED NEW

   DEFINE Window oVentPrinc FROM 3,5 TO 42,116

   DEFINE RIBBONBAR oRBar WINDOW oVentPrinc PROMPT "Prueba" HEIGHT 125 TOPMARGIN 25
   oRBar:nLeftMargin = 45
   oRBar:CalcPos()

   ADD GROUP oGr RIBBON oRBar  TO OPTION 1 PROMPT "Datos de..." WIDTH 150

   @ 2 ,5 ADD BUTTON oBtn[1]  PROMPT " Prueba1 "  GROUP oGr ACTION XBrwDato("CUSTOMER",oVentPrinc,oBtn,oRbar)   ;
         SIZE 70,75

   @ 2, 75 ADD BUTTON obtn[2] PROMPT " Prueba2 "  GROUP oGr ACTION XBrwDato("DIARIO",oVentPrinc,oBtn,oRbar)   ;
         SIZE 70,75


   ACTIVATE WINDOW oVentPrinc MAXIMIZED
   //
   RETURN( NIL )

   **********************************************************************
   static function XBrwDato(cUsaBase,oVentPrinc,oBtn,oRbar)
   *********************************************************************
   local oTitulo, oFont1,oFont2,oFont3,oFont4,oBtnSalir,oBtnNuevo
   local oExBar, oPanel1, oPanel2, oPanel3, oPanel4
   local bClick
   local oBrw, oCol
   Local aCols:={}
   local ctitulo:=""
   LOCAL nFor

   oBtn[1]:Disable()
   oBtn[2]:Disable()
   //
   oRBar:SetOption( 1, .F. )
   //
   DEFINE FONT oFont1 NAME "MS SANS SERIF" SIZE 0,-10
   DEFINE FONT oFont2 NAME "MS SANS SERIF" SIZE 0,-10 BOLD
   DEFINE FONT oFont3 NAME "MS SANS SERIF" SIZE 0,-14 BOLD
   DEFINE FONT oFont4 NAME "ARIAL" SIZE 0,-24 BOLD
   //
   IF cUsabase = "CUSTOMER"
      cTitulo:= "Título de la prueba 1"
      @ 121,0 TITLE oTitulo size 1500, 40 of oVentPrinc SHADOWSIZE 0
      @ 08,260 TITLETEXT OF oTitulo TEXT cTitulo   FONT oFont4
      @ 162, 0 EXPLORERBAR oExBar OF oVentPrinc ;
           SIZE 250, 1110

      oPanel1 = oExBar:AddPanel( "PRUEBA1" )
      oPanel1:lSpecial = .T.

      oPanel1:AddLink( "")
      oPanel1:AddLink( " Prueba número 1", bClick:={ | o |  (Msginfo("Este es el mensaje de la prueba 1"),oBrw:SetFocus())}, "LEVELAZ" )
      oPanel1:AddLink( "")

      oPanel1:AddLink( " Salir", bClick := { | o | (oFont1:End(),oFont2:End(),oFont3:End(),oFont3:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ) }, "SALIR" )



      @ 160,251 XBROWSE oBrw SIZE -0, -20 PIXEL OF oVentPrinc ;
         COLUMNS "First", "Age", "Salary" ;
         ALIAS "CUSTOMER" CELL LINES NOBORDER FOOTERS  FONT oFont1

      XbrNumFormat( "E", .t. )
      //
      WITH OBJECT oBrw
         :Age:nFooterType     := AGGR_AVG
         :Salary:nFooterType  := AGGR_TOTAL
         :MakeTotals()
      END
      //
      oBrw:oWnd:bKeyDown := { | nKey | IIf( nKey = VK_ESCAPE, (oFont1:End(),oFont2:End(),oFont3:End(),oFont3:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ),)}
      oBrw:CreateFromCode()
      oBrw:SetFocus()

   ELSEIF cUsabase = "DIARIO"

      @ 160,251 XBROWSE oBrw SIZE -0, -20 PIXEL OF oVentPrinc

      XbrNumFormat( "E", .t. )

      oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLROW
      oBrw:nColDividerStyle    := LINESTYLE_BLACK
      oBrw:lColDividerComplete := .t.
      oBrw:nHeaderLines      := 1.5
      oBrw:nFooterLines      := 1
      oBrw:lFooter := .T.
      oBrw:nDataLines        := 1.5

      oCol := oBrw:AddCol()
      oCol:bStrData  := { || DIARIO->Fecha}
      oCol:cHeader   := "Fecha"
      oCol:oDataFont := oFont1
      AADD(aCols,1)

      oCol := oBrw:AddCol()
      oCol:bStrData  := { || DIARIO->Concepto}
      oCol:cHeader   := "Concepto"
      oCol:oDataFont := oFont1
      AADD(aCols,2)

      oCol := oBrw:AddCol()
      oCol:bStrData  := { || DIARIO->PtaDebe}
      oCol:cHeader   := "Debe"
      oCol:oDataFont := oFont1
      AADD(aCols,3)

      oBrw:oWnd:bKeyDown := { | nKey | IIf( nKey = VK_ESCAPE, (oFont1:End(),oFont2:End(),oFont3:End(),oFont3:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ),)}

      oBrw:SetRdd()
      oBrw:aCols[ 3 ]:nFooterType := AGGR_TOTAL
      oBrw:MakeTotals()
      //
      oBrw:CreateFromCode()
      oBrw:SetFocus()

ENDIF
*/
/*
   ELSEIF cUsabase = "DIARIO"

      cTitulo:= "Título de la prueba 2"
      @ 121,0 TITLE oTitulo size 1500, 40 of oVentPrinc SHADOWSIZE 0
      @ 08,260 TITLETEXT OF oTitulo TEXT cTitulo   FONT oFont4
      @ 162, 0 EXPLORERBAR oExBar OF oVentPrinc ;
           SIZE 250, 1110

      oPanel1 = oExBar:AddPanel( "PRUEBA2" )
      oPanel1:lSpecial = .T.

      oPanel1:AddLink( "")
      oPanel1:AddLink( " Prueba número 2", bClick:={ | o |  (Msginfo("Este es el mensaje de la prueba 2"),oBrw:SetFocus())}, "LEVELAZ" )
      oPanel1:AddLink( "")

      oPanel1:AddLink( " Salir", bClick := { | o | (oFont1:End(),oFont2:End(),oFont3:End(),oFont3:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ) }, "SALIR" )



      @ 160,251 XBROWSE oBrw SIZE -0, -20 PIXEL OF oVentPrinc ;
         COLUMNS "Fecha", "Concepto", "PtaDebe" ;
         ALIAS "DIARIO" CELL LINES NOBORDER FOOTERS FONT oFont1
      //
      WITH OBJECT oBrw
         :PtaDebe:nFooterType  := AGGR_SUM
         :MakeTotals()
      END
      //
      XbrNumFormat( "E", .t. )

      oBrw:oWnd:bKeyDown := { | nKey | IIf( nKey = VK_ESCAPE, (oFont1:End(),oFont2:End(),oFont3:End(),oFont3:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ),)}

      oBrw:CreateFromCode()
      oBrw:SetFocus()

   ENDIF
*/

return nil

//----------------------------------------------------------------------------//
 
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
FranciscoA
Posts: 2164
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: XBrowse y Total en columna

Post by FranciscoA »

Hola Manuel. He modificado tu ejemplo. Aqui está funcionando en Ver. 10.06
Cambié los bStrdata por bEditValue, y al salir no se estaban destruyendo algunos objetos.

Code: Select all | Expand


#include "FiveWin.Ch"
#include "ord.ch"
#include "xbrowse.ch"
#include "ribbon.ch"
#include "ttitle.ch"
//
STATIC oVentPrinc
REQUEST DBFCDX

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

function Main()
   local oRBar
   local oGr
   local oBtn:=Array(2)

   USE CUSTOMER SHARED NEW
   USE DIARIO   SHARED NEW

   DEFINE Window oVentPrinc FROM 3,5 TO 42,116

   DEFINE RIBBONBAR oRBar WINDOW oVentPrinc PROMPT "Prueba" HEIGHT 125 TOPMARGIN 25
   oRBar:nLeftMargin = 45
   oRBar:CalcPos()

   ADD GROUP oGr RIBBON oRBar  TO OPTION 1 PROMPT "Datos de..." WIDTH 150

   @ 2 ,5 ADD BUTTON oBtn[1]  PROMPT " Prueba1 "  GROUP oGr ACTION XBrwDato("CUSTOMER",oVentPrinc,oBtn,oRbar)   ;
         SIZE 70,75

   @ 2, 75 ADD BUTTON obtn[2] PROMPT " Prueba2 "  GROUP oGr ACTION XBrwDato("DIARIO",oVentPrinc,oBtn,oRbar)   ;
         SIZE 70,75


   ACTIVATE WINDOW oVentPrinc MAXIMIZED
   //
   RETURN( NIL )

   **********************************************************************
   static function XBrwDato(cUsaBase,oVentPrinc,oBtn,oRbar)
   *********************************************************************
   local oTitulo, oFont1,oFont2,oFont3,oFont4,oBtnSalir,oBtnNuevo
   local oExBar, oPanel1, oPanel2, oPanel3, oPanel4
   local bClick
   local oBrw, oCol
   Local aCols:={}
   local ctitulo:=""
   LOCAL nFor

   oBtn[1]:Disable()
   oBtn[2]:Disable()
   //
   oRBar:SetOption( 1, .F. )

   IF cUsabase = "CUSTOMER"

      DEFINE FONT oFont1 NAME "MS SANS SERIF" SIZE 0,-10
      DEFINE FONT oFont2 NAME "MS SANS SERIF" SIZE 0,-10 BOLD
      DEFINE FONT oFont3 NAME "MS SANS SERIF" SIZE 0,-14 BOLD
      DEFINE FONT oFont4 NAME "ARIAL" SIZE 0,-24 BOLD

      cTitulo:= "Título de la prueba 1"
      @ 121,0 TITLE oTitulo size 1500, 40 of oVentPrinc SHADOWSIZE 0
      @ 08,260 TITLETEXT OF oTitulo TEXT cTitulo   FONT oFont4
      @ 162, 0 EXPLORERBAR oExBar OF oVentPrinc ;
           SIZE 250, 1110

      oPanel1 = oExBar:AddPanel( "PRUEBA1" )
      oPanel1:lSpecial = .T.

      oPanel1:AddLink( "")
      oPanel1:AddLink( " Prueba número 1", bClick:={ | o |  (Msginfo("Este es el mensaje de la prueba 1"),oBrw:SetFocus())}, "LEVELAZ" )
      oPanel1:AddLink( "")

      oPanel1:AddLink( " Salir", bClick := { | o | (oFont1:End(),oFont2:End(),oFont3:End(),oFont4:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ) }, "SALIR" )



      @ 160,251 XBROWSE oBrw SIZE -0, -20 PIXEL OF oVentPrinc ;
         COLUMNS "First", "Age", "Salary" ;
         ALIAS "CUSTOMER" CELL LINES NOBORDER FOOTERS  FONT oFont1

      XbrNumFormat( "E", .t. )
      //
      WITH OBJECT oBrw
         :Age:nFooterType     := AGGR_AVG
         :Salary:nFooterType  := AGGR_TOTAL
         :MakeTotals()
      END
      //
      oBrw:oWnd:bKeyDown := { | nKey | IIf( nKey = VK_ESCAPE, (oFont1:End(),oFont2:End(),oFont3:End(),oFont3:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ),)}
      oBrw:CreateFromCode()
      oBrw:SetFocus()

   ELSEIF cUsabase = "DIARIO"

      DEFINE FONT oFont1 NAME "MS SANS SERIF" SIZE 0,-10
      DEFINE FONT oFont2 NAME "MS SANS SERIF" SIZE 0,-10 BOLD
      DEFINE FONT oFont3 NAME "MS SANS SERIF" SIZE 0,-14 BOLD
      DEFINE FONT oFont4 NAME "ARIAL" SIZE 0,-24 BOLD

      @ 160,251 XBROWSE oBrw SIZE -0, -20 PIXEL OF oVentPrinc

      cTitulo:= "Título de la prueba 2"
      @ 121,0 TITLE oTitulo size 1500, 40 of oVentPrinc SHADOWSIZE 0
      @ 08,260 TITLETEXT OF oTitulo TEXT cTitulo   FONT oFont4
      @ 162, 0 EXPLORERBAR oExBar OF oVentPrinc ;
           SIZE 250, 1110

      oPanel1 = oExBar:AddPanel( "PRUEBA1" )
      oPanel1:lSpecial = .T.

      XbrNumFormat( "E", .t. )

      oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLROW
      oBrw:nColDividerStyle    := LINESTYLE_BLACK
      oBrw:lColDividerComplete := .t.
      oBrw:nHeaderLines      := 1.5
      oBrw:nFooterLines      := 1
      oBrw:lFooter := .T.
      oBrw:nDataLines        := 1.5

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || DIARIO->Fecha}
      oCol:cHeader   := "Fecha"
      oCol:oDataFont := oFont1
      AADD(aCols,1)

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || DIARIO->Concepto}
      oCol:cHeader   := "Concepto"
      oCol:oDataFont := oFont1
      AADD(aCols,2)

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || DIARIO->PtaDebe}
      oCol:cHeader   := "Debe"
      oCol:oDataFont := oFont1
      oCol:lTotal := .t.
      oCol:nTotal:=0
      oCol:nFooterType := AGGR_TOTAL
      AADD(aCols,3)

      oBrw:oWnd:bKeyDown := { | nKey | IIf( nKey = VK_ESCAPE, (oFont1:End(),oFont2:End(),oFont3:End(),oFont4:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ),)}

      oBrw:SetRdd()
      oBrw:CreateFromCode()
      oBrw:MakeTotals()
      oBrw:SetFocus()

ENDIF

Saludos.
 
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
Manuel Aranda
Posts: 605
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: XBrowse y Total en columna

Post by Manuel Aranda »

Francisco, muchísssimas gracias. Ha funcionado perfecto. Me temo que les seguiré dando la lata por algún tiempo, pues estoy pasando todos mis listbox a xbrowse y me surgen algunos problemillas.
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
Manuel Aranda
Posts: 605
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: XBrowse y Total en columna

Post by Manuel Aranda »

Bueno, he pulido un poco el código y lo dejo aquí por si es de interés para alguien.

Code: Select all | Expand


#include "FiveWin.Ch"
#include "ord.ch"
#include "xbrowse.ch"
#include "ribbon.ch"
#include "ttitle.ch"
//
STATIC oVentPrinc
REQUEST DBFCDX

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

function Main()
   local oRBar
   local oGr
   local oBtn:=Array(2)

   USE CUSTOMER SHARED NEW
   USE DIARIO   SHARED NEW

   DEFINE Window oVentPrinc FROM 3,5 TO 42,116

   DEFINE RIBBONBAR oRBar WINDOW oVentPrinc PROMPT "Prueba" HEIGHT 125 TOPMARGIN 25
   oRBar:nLeftMargin = 45
   oRBar:CalcPos()

   ADD GROUP oGr RIBBON oRBar  TO OPTION 1 PROMPT "Datos de..." WIDTH 150

   @ 2 ,5 ADD BUTTON oBtn[1]  PROMPT " Prueba1 "  GROUP oGr ACTION XBrwDato("CUSTOMER",oVentPrinc,oBtn,oRbar)   ;
         SIZE 70,75

   @ 2, 75 ADD BUTTON obtn[2] PROMPT " Prueba2 "  GROUP oGr ACTION XBrwDato("DIARIO",oVentPrinc,oBtn,oRbar)   ;
         SIZE 70,75


   ACTIVATE WINDOW oVentPrinc MAXIMIZED
   //
   RETURN( NIL )

   **********************************************************************
   static function XBrwDato(cUsaBase,oVentPrinc,oBtn,oRbar)
   *********************************************************************
   local oTitulo, oFont1,oFont2,oBtnSalir,oBtnNuevo
   local oExBar, oPanel1, oPanel2, oPanel3, oPanel4
   local bClick
   local oBrw, oCol
   Local aCols:={}
   local ctitulo:=""
   LOCAL nFor

   oBtn[1]:Disable()
   oBtn[2]:Disable()
   //
   oRBar:SetOption( 1, .F. )
   //
   DEFINE FONT oFont1 NAME "MS SANS SERIF" SIZE 0,-10
   DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-24 BOLD
   //
   IF cUsabase = "CUSTOMER"

      DbSelectArea("CUSTOMER")

      cTitulo:= "Título de la prueba 1"
      @ 121,0  TITLE oTitulo size 1500, 40 of oVentPrinc SHADOWSIZE 0
      @ 08,260 TITLETEXT OF oTitulo TEXT cTitulo   FONT oFont2
      @ 162, 0 EXPLORERBAR oExBar OF oVentPrinc ;
               SIZE 250, 1110

      oPanel1 = oExBar:AddPanel( "PRUEBA1" )
      oPanel1:lSpecial = .T.

      oPanel1:AddLink( "")
      oPanel1:AddLink( " Prueba número 1", bClick:={ | o |  (Msginfo("Este es el mensaje de la prueba 1"),oBrw:SetFocus())}, "LEVELAZ" )
      oPanel1:AddLink( "")

      oPanel1:AddLink( " Salir", bClick := { | o | (oFont1:End(),oFont2:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ) }, "SALIR" )


      @ 160,251 XBROWSE oBrw SIZE -0, -20 PIXEL OF oVentPrinc FONT oFont1

      oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLROW
      oBrw:nColDividerStyle    := LINESTYLE_BLACK
      oBrw:lColDividerComplete := .t.
      oBrw:nHeaderLines      := 1.5
      oBrw:nFooterLines      := 1
      oBrw:lFooter := .T.
      oBrw:nDataLines        := 1.5

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || CUSTOMER->First}
      oCol:cHeader   := "   Nombre   "
      oCol:oDataFont := oFont1
      AADD(aCols,1)

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || CUSTOMER->Age }
      oCol:cHeader   := "   Edad   "
      oCol:oDataFont := oFont1
      oCol:lTotal := .t.
      oCol:nTotal:=0
      oCol:nFooterType := AGGR_AVERAGE
      AADD(aCols,2)

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || CUSTOMER->Salary}
      oCol:cEditPicture = "@E 9,999,999,999.99"
      oCol:cHeader   := "   Salario   "
      oCol:oDataFont := oFont1
      oCol:lTotal := .t.
      oCol:nTotal:=0
      oCol:nFooterType := AGGR_TOTAL
      AADD(aCols,3)

      oBrw:oWnd:bKeyDown := { | nKey | IIf( nKey = VK_ESCAPE, (oFont1:End(),oFont2:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ),)}
      oBrw:SetRdd()
      oBrw:CreateFromCode()
      oBrw:MakeTotals()
      oBrw:SetFocus()

   ELSEIF cUsabase = "DIARIO"

      DbSelectArea("DIARIO")

      cTitulo:= "Título de la prueba 2"
      @ 121,0 TITLE oTitulo size 1500, 40 of oVentPrinc SHADOWSIZE 0
      @ 08,260 TITLETEXT OF oTitulo TEXT cTitulo   FONT oFont2
      @ 162, 0 EXPLORERBAR oExBar OF oVentPrinc ;
               SIZE 250, 1110

      oPanel1 = oExBar:AddPanel( "PRUEBA2" )
      oPanel1:lSpecial = .T.

      oPanel1:AddLink( "")
      oPanel1:AddLink( " Prueba número 2", bClick:={ | o |  (Msginfo("Este es el mensaje de la prueba 2"),oBrw:SetFocus())}, "LEVELAZ" )
      oPanel1:AddLink( "")

      oPanel1:AddLink( " Salir", bClick := { | o | (oFont1:End(),oFont2:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ) }, "SALIR" )



      @ 160,251 XBROWSE oBrw SIZE -0, -20 PIXEL OF oVentPrinc FONT oFont1

      oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLROW
      oBrw:nColDividerStyle    := LINESTYLE_BLACK
      oBrw:lColDividerComplete := .t.
      oBrw:nHeaderLines      := 1.5
      oBrw:nFooterLines      := 1
      oBrw:lFooter := .T.
      oBrw:nDataLines        := 1.5

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || DIARIO->Fecha}
      oCol:cHeader   := "   Fecha   "
      oCol:oDataFont := oFont1
      AADD(aCols,1)

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || DIARIO->Concepto}
      oCol:cHeader   := "   Concepto   "
      oCol:oDataFont := oFont1
      AADD(aCols,2)

      oCol := oBrw:AddCol()
      oCol:bEditValue  := { || DIARIO->PtaDebe}
      oCol:cEditPicture = "@E 9,999,999,999.99"
      oCol:cHeader   := "   Debe   "
      oCol:oDataFont := oFont1
      oCol:lTotal := .t.
      oCol:nTotal:=0
      oCol:nFooterType := AGGR_TOTAL
      AADD(aCols,3)

      oBrw:oWnd:bKeyDown := { | nKey | IIf( nKey = VK_ESCAPE, (oFont1:End(),oFont2:End(),;
                                                    oTitulo:End(),oBrw:End(),oExBar:End(),oRBar:SetOption( 1, .T. ),;
                                                    oBtn[1]:Enable(),oBtn[2]:Enable() ),)}

      oBrw:SetRdd()
      oBrw:CreateFromCode()
      oBrw:MakeTotals()
      oBrw:SetFocus()

ENDIF

RETURN NIL
 
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Post Reply