FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ejemplo de xBrowse (Solucionado, thanks Mr. Rao)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Ejemplo de xBrowse
Posted:
Mr. Rao:

I'm afraid I can't adapt your code to my needs, this is my source code but I get an error,
as you can see I'm using Recordset, if you could help me I'll be very grateful

Code (fw): Select all Collapse
        oBrw:=TxBrowse():New(oDlg)

        oBrw:nMarqueeStyle          := MARQSTYLE_HIGHLROWMS
        oBrw:nColDividerStyle       := LINESTYLE_LIGHTGRAY
        oBrw:nRowDividerStyle       := LINESTYLE_LIGHTGRAY
        oBrw:lColDividerComplete    := (.F.)
        oBrw:nHeaderHeight          := 25
        oBrw:nRowHeight             := 22
        oBrw:nHeaderLines               := 1
        oBrw:nDataLines             := 1
        oBrw:nFooterHeight          := 20
        oBrw:nFooterLines               := 1
        oBrw:lFooter                    := (.T.)
        oBrw:lHScroll                   := (.F.)

       aCol[ 1]                         := oBrw:AddCol()
        aCol[ 1]:bStrData           := { || IF(oRsCxc:RecordCount() > 0,TRANSFORM(oRsCxc:Fields("CARCAR"):Value,"@Z 9999999"),SPACE(01))}
        aCol[ 1]:cHeader            := "Factura"
        aCol[ 1]:nHeadStrAlign      := AL_RIGHT
        aCol[ 1]:nDataStrAlign      := AL_RIGHT
        aCol[ 1]:nWidth             := 60

       aCol[ 2]                         := oBrw:AddCol()
        aCol[ 2]:bStrData           := { || IF(oRsCxc:RecordCount() > 0,TRANSFORM(oRsCxc:Fields("CARCLI"):Value,"@Z 99999"),SPACE(01))}
        aCol[ 2]:cHeader            := "Cliente"
        aCol[ 2]:nHeadStrAlign      := AL_RIGHT
        aCol[ 2]:nDataStrAlign      := AL_RIGHT
        aCol[ 2]:nWidth             := 60

       aCol[ 3]                         := oBrw:AddCol()
        aCol[ 3]:bStrData           := { || IF(oRsCxc:RecordCount() > 0,oRsCxc:Fields("CLINOM"):Value,SPACE(01))}
        aCol[ 3]:cHeader            := "Nombre o Raz贸n Social"
        aCol[ 3]:nHeadStrAlign      := AL_LEFT
        aCol[ 3]:nDataStrAlign      := AL_LEFT
        aCol[ 3]:nWidth             := 300

       aCol[ 4]                         := oBrw:AddCol()
        aCol[ 4]:bStrData           := { || IF(oRsCxc:RecordCount() > 0,Date2Txt(DameFecha(oRsCxc:Fields("CARFEC"):Value)),SPACE(01))}
        aCol[ 4]:cHeader            := "Emisi贸n"
        aCol[ 4]:nHeadStrAlign      := AL_RIGHT
        aCol[ 4]:nDataStrAlign      := AL_RIGHT
        aCol[ 4]:nWidth             := 85

       aCol[ 5]                         := oBrw:AddCol()
        aCol[ 5]:bStrData           := { || IF(oRsCxc:RecordCount() > 0,Date2Txt(DameFecha(oRsCxc:Fields("CARVTO"):Value)),SPACE(01))}
        aCol[ 5]:cHeader            := "Vencimiento"
        aCol[ 5]:nHeadStrAlign      := AL_RIGHT
        aCol[ 5]:nDataStrAlign      := AL_RIGHT
        aCol[ 5]:nWidth             := 85
        aCol[ 5]:cFooter                := { || Len( oBrw:aSelected ) }

       aCol[ 6]                         := oBrw:AddCol()
        aCol[ 6]:bStrData           := { || IF(oRsCxc:RecordCount() > 0,TRANSFORM(oRsCxc:Fields("CARIMP"):Value,"@Z 99,999,999.99"),SPACE(01))}
        aCol[ 6]:cHeader            := "Saldo"
        aCol[ 6]:nHeadStrAlign      := AL_RIGHT
        aCol[ 6]:nDataStrAlign      := AL_RIGHT
        aCol[ 6]:nWidth             := 48
        aCol[ 6]:nFooterType        := AGGR_SUM

        oBrw:bOnMultiSelect         := { || oBrw:MakeTotals() }
      oBrw:bChange                  := { || IF( LEN( oBrw:aSelected ) <= 1, ;
                                            ( oBrw:aCol[6]:nTotal := oBrw:aCol[ 6]:Value,;
                                                oBrw:aCol[6]:RefreshFooter() ),NIL ) }

       oBrw:l2007                       := (.F.)

        oBrw:nStretchCol                := STRETCHCOL_LAST

        oBrw:bClrHeader := { || {CLR_WHITE,CLR_BLACK} }
        oBrw:bClrStd        := { || {CLR_BLACK,CLR_WHITE} }
        oBrw:bClrFooter := { || {CLR_WHITE,CLR_BLACK} }
        oBrw:nRecSelColor   := oApp:nRowParClr                  // Triangulo de selecci贸n
        oBrw:bClrSel        := { || {CLR_BLACK,CLR_WHITE} }
        oBrw:bClrSel        := {|| IF( oRsCxc:AbsolutePosition % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
        oBrw:bClrSelFocus   := { || {oApp:nFClrFocus,oApp:nBClrFocus} }

        oBrw:bGoTop    := { || IF( ! oRsCxc:BOF() .AND. ! oRsCxc:EOF(), oRsCxc:MoveFirst(), ) }
        oBrw:bGoBottom := { || IF( ! oRsCxc:BOF() .AND. ! oRsCxc:EOF(), oRsCxc:MoveLast(), ) }
        oBrw:bBof      := { || oRsCxc:BOF() }
        oBrw:bEof      := { || oRsCxc:EOF() }
        oBrw:bBookMark := { | uBm | IF( oRsCxc:BOF() .AND. oRsCxc:EOF(), 0, IF( uBm == NIL, oRsCxc:BookMark, oRsCxc:BookMark := uBm ) ) }
        oBrw:bKeyNo    := { | n | IF( oRsCxc:BOF() .AND. oRsCxc:EOF(), 0, IF( n == NIL, oRsCxc:AbsolutePosition, oRsCxc:AbsolutePosition := n ) ) }
        oBrw:bKeyCount  := {|| oRsCxc:RecordCount() }

        oBrw:SetAdo(oRsCxc)
        oBrw:bClrStd    := {|| IF( oRsCxc:AbsolutePosition % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
        oBrw:nRecSelColor   := oApp:nRowParClr
        oBrw:CreateFromResource(201)



    Application
    ===========
    Path and name: C:\AppPag\AppPag.Exe (32 bits)
    Size: 3,613,184 bytes
    Compiler version: Harbour 3.2.0dev (r1801051438)
    FiveWin version: FWH 17.11
    C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
    Windows version: 6.1, Build 7601 Service Pack 1

    Time from start: 0 hours 0 mins 10 secs
    Error occurred at: 28/06/2018, 12:43:33
    Error description: Error BASE/1132 Bound error: array access
    Args:
    [ 1] = A { ... } length: 0
    [ 2] = N 1

    Stack Calls
    ===========
    Called from: Source\AppPag.Prg => BRWFAC( 911 )
    Called from: Source\AppPag.Prg => (b)APPPAG( 147 )
    Called from: .\source\classes\TGET.PRG => TGET:LVALID( 1657 )
    Called from: .\source\classes\CONTROL.PRG => TGET:FWLOSTFOCUS( 1136 )
    Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1706 )
    Called from: .\source\classes\TGET.PRG => TGET:HANDLEEVENT( 805 )
    Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
    Called from: => SYSREFRESH( 0 )
    Called from: .\source\classes\CONTROL.PRG => TCONTROL:KEYCHAR( 827 )
    Called from: .\source\classes\TGET.PRG => TGET:KEYCHAR( 1553 )
    Called from: => TWINDOW:HANDLEEVENT( 0 )
    Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1731 )
    Called from: .\source\classes\TGET.PRG => TGET:HANDLEEVENT( 805 )
    Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
    Called from: => DIALOGBOX( 0 )
    Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
    Called from: Source\AppPag.Prg => APPPAG( 272 )

    System
    ======
    CPU type: Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz 3093 Mhz
    Hardware memory: 1936 megs

    Free System resources: 90 %
    GDI resources: 90 %
    User resources: 90 %

    Windows total applications running: 5
    1 DDE Server Window, C:\Windows\syswow64\OLE32.DLL
    2 GDI+ Window, C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23894_none_5c0be957a00992
    3 MCI command handling window, C:\Windows\system32\WINMM.DLL
    4 TV tray notification,
    5 Transferencia de archivos iniciada, C:\AppPag\AppPag.Exe

    Variables in use
    ================
    Procedure Type Value
    ==========================
    BRWFAC
    Param 1: O Class: ERROR
    (b)APPPAG
    Param 1: O Class: TDIALOG
    Local 1: O Class: TDIALOG
    Local 2: O Class: TXBROWSE
    Local 3: O Class: TFONT
    Local 4: O Class: TICON
    Local 5: O Class: TBRUSH
    Local 6: A Len: 5
    Local 7: A Len: 6
    Local 8: N 0
    Local 9: N 0.00
    Local 10: U
    Local 11: U
    Local 12: O Class: TXBROWSE
    Local 13: P 0x350BB64
    Local 14: A Len: 0
    Local 15: N 1
    Local 16: U
    Local 17: U
    TGET:LVALID
    Param 1: O Class: TGET
    TGET:FWLOSTFOCUS
    Local 1: L .T.
    TCONTROL:HANDLEEVENT
    Param 1: N 1836104
    Local 1: U
    TGET:HANDLEEVENT
    Param 1: N 2057
    Param 2: N 1836104
    Param 3: N 0
    Local 1: U
    _FWH
    Param 1: N 2057
    Param 2: N 1836104
    Param 3: N 0
    Local 1: U
    Local 2: U
    SYSREFRESH
    Param 1: N 0
    Param 2: N 2057
    Param 3: N 1836104
    Param 4: N 0
    Param 5: N 15
    Local 1: O Class: TGET
    TCONTROL:KEYCHAR
    TGET:KEYCHAR
    Param 1: N 13
    Param 2: N 18612225
    Local 1: U
    Local 2: U
    Local 3: U
    TWINDOW:HANDLEEVENT
    Param 1: N 13
    Param 2: N 18612225
    Local 1: U
    Local 2: U
    Local 3: U
    Local 4: U
    TCONTROL:HANDLEEVENT
    Param 1: N 258
    Param 2: N 13
    Param 3: N 18612225
    TGET:HANDLEEVENT
    Param 1: N 258
    Param 2: N 13
    Param 3: N 18612225
    Local 1: U
    _FWH
    Param 1: N 258
    Param 2: N 13
    Param 3: N 18612225
    Local 1: U
    Local 2: U
    DIALOGBOX
    Param 1: N 18612225
    Param 2: N 258
    Param 3: N 13
    Param 4: N 18612225
    Param 5: N 15
    Local 1: O Class: TGET
    TDIALOG:ACTIVATE
    Param 1: N 4194304
    Param 2: C "QryPag"
    Param 3: N 0
    Param 4: O Class: TDIALOG
    APPPAG
    Param 1: U
    Param 2: U
    Param 3: U
    Param 4: L .T.
    Param 5: B {|| ... }
    Param 6: L .T.
    Param 7: U
    Param 8: U
    Param 9: U
    Param 10: U
    Param 11: U
    Local 1: N 0
    Local 2: S
    Local 3: O Class: TDIALOG

    Linked RDDs
    ===========
    DBF
    DBFFPT
    DBFBLOB
    DBFNTX

    DataBases in use
    ================

    Classes in use:
    ===============
    1 ERROR
    2 HBCLASS
    3 HBOBJECT
    4 TWINDOW
    5 TCONTROL
    6 TGET
    7 TAPLICACION
    8 WIN_OLEAUTO
    9 TOLEAUTO
    10 TPUBLIC
    11 TICON
    12 TBRUSH
    13 TFONT
    14 TDIALOG
    15 TSAY
    16 GET
    17 TCLIPGET
    18 TDATEPICK
    19 TXBROWSE
    20 TREG32
    21 TXBRWCOLUMN
    22 TBUTTON
    23 TBUTTONBMP
    24 TSCROLLBAR
    25 TBTNBMP
    26 TCLIPBOARD
    27 TRECT
    28 TSTRUCT

    Memory Analysis
    ===============
    389 Static variables

    Dynamic memory consume:
    Actual Value: 1638400 bytes
    Highest Value: 1638400 bytes
    [/list:u]

    Regards
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Ejemplo de xBrowse (Solucionado, thanks Mr. Rao)
Posted: Thu Jun 21, 2018 09:52 PM

Saludos al foro:

Alguien que me pueda proporcionar un peque帽o ejemplo de un xBrowse con selecci贸n
de varios renglones?

Un abrazo

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Ejemplo de xBrowse
Posted: Fri Jun 22, 2018 04:32 PM
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Ejemplo de xBrowse
Posted: Fri Jun 22, 2018 04:42 PM

Jos茅 Luis:

Muchas gracias, es un buen comienzo

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Ejemplo de xBrowse
Posted: Sat Jun 23, 2018 12:52 AM
Armando wrote:Jos茅 Luis:

Muchas gracias, es un buen comienzo

Saludos


Armando, ya al hacer el SELECT de los registros, xBrowse crea un ARRAY con los registros seleccionados, y luego solo manipulas ese array y listo...no se en si que buscar hacer al seleccionar los registros, eliminar, copiar, etc...cualquier duda EL FORO esta a la orden, jeje...gracias... :-)
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Ejemplo de xBrowse
Posted: Sat Jun 23, 2018 07:41 AM

Set oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROWMS // value 6

XBrowse automatically manages multi-row selection.
Select block of rows Shift-Click and toggle selection by Ctrl-Click.

At any time oBrw:aSelect is an array of selected record numbers.

Regards



G. N. Rao.

Hyderabad, India
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Ejemplo de xBrowse
Posted: Sat Jun 23, 2018 03:58 PM

Mr. Rao

Thanks a lot.

With best regards

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1487
Joined: Tue Jun 14, 2016 07:51 AM
Re: Ejemplo de xBrowse
Posted: Sun Jun 24, 2018 08:59 PM
If you want to do someting with the selection, use this :

Code (fw): Select all Collapse
聽 if msgyesno("Want to add to other database")
聽 聽 FOR I = 1 TO LEN(oBrwCol:aSELECTED) // obrw:aSELECTED is an array containing recnos marked
聽 聽 聽 oBrwCol:BookMark := oBrwCol:aSelected[ i ] 聽 // works for dbf, rowset, ado and all
聽 聽 聽 att->(dbappend())
聽 聽 聽 att->artcode = nofoto->id 聽// database of browse, but you can also use xbrowse data
聽 聽 聽 att->fab_name = nofoto->fabrikan
聽 聽 聽 att->colnaam = oBrwCol:A:value
聽 聽 聽 att->colstr = upper(alltrim(nofoto->id)+oBrwCol:A:value)
聽 聽 next
聽 聽 oBrwAtt:refresh()
聽 endif
Marc Venken

Using: FWH 23.08 with Harbour
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Ejemplo de xBrowse
Posted: Sun Jun 24, 2018 11:10 PM

Marc:

Great!

Thanks a lot

With best regards

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Ejemplo de xBrowse
Posted: Wed Jun 27, 2018 11:00 PM

Amigos:

Gracias a su valioso apoyo he logrado seleccionar varios registros de un xBrowse, ahora
lo que necesito es que cada que se elija un registro obtener la suma de una columna,
que m茅todo debo usar para sumar dicha columna?

Estoy usando FWH1711

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Ejemplo de xBrowse
Posted: Thu Jun 28, 2018 02:51 AM
Armando wrote:Amigos:

Gracias a su valioso apoyo he logrado seleccionar varios registros de un xBrowse, ahora
lo que necesito es que cada que se elija un registro obtener la suma de una columna,
que m茅todo debo usar para sumar dicha columna?

Estoy usando FWH1711

Saludos



Lo hago asi,

oBrowse:aCols[n]:nTotal := 0 // NECESARIA PARA TOTALIZAR COL.(MakeTotals)
oBrowse:aCols[n]:cFooterPicture := "@E 99,999,999" // PICT.FOOT(MakeTotals)

oBrowse:Maketotals()

asi sumaria la columna, y para obtener el valor uso

oBrowse:aCols[n]:nTotal / oBrowse:NombreColumna:nTotal

espero ayude, saludos...gracias... :-)
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Ejemplo de xBrowse
Posted: Thu Jun 28, 2018 04:31 AM
Please copy this sample to fwh\samples folder and build.
This sample works with DBF, MySql, ADO, etc without any changes. Just change the datasource.
You may adopt this logic to your needs.
Code (fw): Select all Collapse
#include "fivewin.ch"

REQUEST DBFCDX

function Main()

聽 聽local oDlg, oBrw, oFont

聽 聽USE CUSTOMER NEW ALIAS CUST VIA "DBFCDX"

聽 聽DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14

聽 聽DEFINE DIALOG oDlg SIZE 700,500 PIXEL TRUEPIXEL FONT oFont ;
聽 聽 聽 TITLE FWVERSION + " : MULTISELECT"

聽 聽@ 60,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
聽 聽 聽 DATASOURCE "CUST" ;
聽 聽 聽 COLUMNS .F., "FIRST", "CITY", "SALARY" ;
聽 聽 聽 HEADERS "" ;
聽 聽 聽 CELL LINES FOOTERS NOBORDER

聽 聽WITH OBJECT oBrw
聽 聽 聽 :nMarqueeStyle 聽 聽:= MARQSTYLE_HIGHLROWMS
聽 聽 聽 WITH OBJECT :aCols[ 1 ]
聽 聽 聽 聽 聽:bEditValue 聽 聽:= { || AScan( oBrw:aSelected, oBrw:BookMark ) > 0 }
聽 聽 聽 聽 聽:SetCheck()
聽 聽 聽 聽 聽:nHeadBmpNo 聽 聽:= 2
聽 聽 聽 聽 聽:bFooter 聽 聽 聽 := { || Len( oBrw:aSelected ) }
聽 聽 聽 END
聽 聽 聽 WITH OBJECT :Salary
聽 聽 聽 聽 聽:nFooterType 聽 := AGGR_SUM
聽 聽 聽 聽 聽:bSumCondition := { || AScan( oBrw:aSelected, oBrw:BookMark ) > 0 }
聽 聽 聽 END
聽 聽 聽 :bOnMultiSelect 聽 := { || oBrw:MakeTotals() }
聽 聽 聽 :bChange 聽 聽 聽 聽 聽:= { || If( Len( oBrw:aSelected ) <= 1, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ( oBrw:Salary:nTotal := oBrw:Salary:Value, 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:Salary:RefreshFooter() ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 nil ) }

聽 聽 聽 :MakeTotals()
聽 聽 聽 //
聽 聽 聽 :CreateFromCode()
聽 聽END

聽 聽@ 10, 20 BTNBMP PROMPT "SelectAll" SIZE 100,40 PIXEL OF oDlg FLAT ;
聽 聽 聽 ACTION ( oBrw:SelectAll(), oBrw:SetFocus() )

聽 聽@ 10,140 BTNBMP PROMPT "ClearAll" 聽SIZE 100,40 PIXEL OF oDlg FLAT ;
聽 聽 聽 ACTION ( oBrw:SelectNone(), oBrw:SetFocus() )

聽 聽@ 10,300 SAY "Shift-Click to Select Block or Rows" + CRLF + ;
聽 聽 聽 聽 聽 聽 聽 聽 "Ctrl-Click to Toggle Selection" ;
聽 聽 聽 聽 聽 聽 SIZE 380,40 PIXEL OF oDlg RIGHT ;
聽 聽 聽 聽 聽 聽 COLOR CLR_HRED,CLR_WHITE TRANSPARENT

聽 聽ACTIVATE DIALOG oDlg CENTERED
聽 聽RELEASE FONT oFont

return nil


Regards



G. N. Rao.

Hyderabad, India
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Ejemplo de xBrowse
Posted: Thu Jun 28, 2018 03:04 PM

Jos茅 Luis And Mr. Rao:

Thanks a lot for your advise, I will try it.
Muchas gracias por sus consejos, lo voy a intentar.

Best Regards
Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Ejemplo de xBrowse
Posted: Fri Jun 29, 2018 12:39 AM
We keep recommending to use command syntax for creating XBrowse, if you want to use advanced features of XBrowse.
Use of bStrData was deprecated many years back. For example, please consider this code:
Code (fw): Select all Collapse
聽 聽 聽 聽 aCol[ 6]:bStrData 聽 聽 聽 聽 聽 := { || IF(oRsCxc:RecordCount() > 0,TRANSFORM(oRsCxc:Fields("CARIMP"):Value,"@Z 99,999,999.99"),SPACE(01))}
aCols[ 6 ]:nFooterType := AGGR_SUM

The column value is character value. It is obvious that XBrowse can not total character values. It requires numeric values to total.

Please replace your entire code with this code:
Code (fw): Select all Collapse
FWNumFormat( "A", .t. )

REDEFINE XBROWSE oBrw ID 201 OF oDlg;
聽 聽DATASOURCE oRsCxc ;
聽 聽COLUMNS "CARCAR", "CARCLI", "CLINOM", "CARFEC", "CARVIO", "CARIMP" ;
聽 聽HEADERS "Factura", "Cliente", "Nombre o Raz贸n Social", "Emisi贸n", "Vencimiento", "Saldo" ;
聽 聽COLSIZES 60,60,300,85,85 ;
聽 聽FOOTERS

// Your preferences
WITH OBJECT oBrw
聽 聽:l2007 聽 聽 聽 聽 聽 聽:= .f.
聽 聽:lHScroll 聽 聽 聽 聽 := .f.
聽 聽:nMarqueeStyle 聽 聽:= MARQSTYLE_HIGHLROWMS
聽 聽:nColDividerStyle := LINESTYLE_LIGHTGRAY
聽 聽:nRowDividerStyle := LINESTYLE_LIGHTGRAY
聽 聽:nStretchCol 聽 聽 聽:= STRETCHCOL_WIDEST
聽 聽:bClrHeader 聽 聽 聽 := { || {CLR_WHITE,CLR_BLACK} }
聽 聽:bClrFooter 聽 聽 聽 := { || {CLR_WHITE,CLR_BLACK} }
聽 聽:bClrSel 聽 聽 聽 聽 聽:= {|| IF( oBrw:KeyNo % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
聽 聽:bClrSelFocus 聽 聽 := { || {oApp:nFClrFocus,oApp:nBClrFocus} }
聽 聽:bClrStd 聽 聽 聽 聽 聽:= {|| IF( oBrw:KeyNo % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
聽 聽:nRecSelColor 聽 聽 := oApp:nRowParClr
聽 聽//
聽 聽:lDisplayZeros 聽 聽:= .f. // zero values are not displayed. Added by GNRao. No need to use @Z 
END


// Settings for Totals and Count
WITH OBJECT oBrw
聽 聽:aCols[ 5]:bFooter 聽 聽 聽 := { || Len( oBrw:aSelected ) }
聽 聽WITH OBJECT :aCols[ 6]
聽 聽 聽 :nFooterType 聽 聽 聽 聽 := AGGR_SUM
聽 聽 聽 :bSumCondition 聽 聽 聽 := { || AScan( oBrw:aSelected, oBrw:BookMark ) > 0 }
聽 聽END
聽 聽 聽 
聽 聽:bOnMultiSelect 聽 聽 聽 聽 := { || oBrw:MakeTotals() }
聽 聽:bChange 聽 聽 聽 聽 聽 聽 聽 聽:= { || IF( LEN( oBrw:aSelected ) <= 1, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽( oBrw:oCol(6):nTotal := oBrw:oCol(6):Value,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:oCol(6):RefreshFooter() ),NIL ) }
聽 聽 聽 聽 
聽 聽:MakeTotals()
END

ACTIVATE DIALOG oDlg // <other clauses>



Please do not use this code. XBrowse automatically provides these codeblocks correctly.
Code (fw): Select all Collapse
oBrw:bGoTop 聽 聽:= { || IF( ! oRsCxc:BOF() .AND. ! oRsCxc:EOF(), oRsCxc:MoveFirst(), ) }
oBrw:bGoBottom := { || IF( ! oRsCxc:BOF() .AND. ! oRsCxc:EOF(), oRsCxc:MoveLast(), ) }
oBrw:bBof 聽 聽 聽:= { || oRsCxc:BOF() }
oBrw:bEof 聽 聽 聽:= { || oRsCxc:EOF() }
oBrw:bBookMark := { | uBm | IF( oRsCxc:BOF() .AND. oRsCxc:EOF(), 0, IF( uBm == NIL, oRsCxc:BookMark, oRsCxc:BookMark := uBm ) ) }
oBrw:bKeyNo 聽 聽:= { | n | IF( oRsCxc:BOF() .AND. oRsCxc:EOF(), 0, IF( n == NIL, oRsCxc:AbsolutePosition, oRsCxc:AbsolutePosition := n ) ) }
oBrw:bKeyCount 聽:= {|| oRsCxc:RecordCount() }

oBrw:SetAdo(oRsCxc)
oBrw:CreateFromResource(201)


Please try this and provide your feedback.
Regards



G. N. Rao.

Hyderabad, India
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Ejemplo de xBrowse
Posted: Fri Jun 29, 2018 02:13 AM
Mr. Rao:

Thanks to you the xbrowse is improving and I am learning a better way to work with xBrowse,
now I have an error that attached

Code (fw): Select all Collapse
聽 聽 聽 聽 REDEFINE XBROWSE oBrw ID 201 OF oDlg;
聽 聽聽聽 聽 DATASOURCE oRsCxc ;
聽 聽聽聽 聽 COLUMNS "CARCAR", "CARCLI", "CLINOM", "CARFEC", "CARVTO", "CARIMP" ;
聽 聽聽聽 聽 HEADERS "Factura", "Cliente", "Nombre o Raz贸n Social", "Emisi贸n", "Vencimiento", "Saldo" ;
聽 聽聽聽 聽 COLSIZES 60,60,300,85,85 ;
聽 聽聽聽 聽 FOOTERS

聽 聽 聽 聽 // Your preferences
聽 聽 聽 聽 WITH OBJECT oBrw
聽 聽聽聽 聽 :l2007 聽 聽 聽 聽 聽 聽:= .f.
聽 聽聽聽 聽 :lHScroll 聽 聽 聽 聽 := .f.
聽 聽聽聽 聽 :nMarqueeStyle 聽 聽:= MARQSTYLE_HIGHLROWMS
聽 聽聽聽 聽 :nColDividerStyle := LINESTYLE_LIGHTGRAY
聽 聽聽聽 聽 :nRowDividerStyle := LINESTYLE_LIGHTGRAY
聽 聽聽聽 聽 :nStretchCol 聽 聽 聽:= STRETCHCOL_WIDEST
聽 聽聽聽 聽 :bClrHeader 聽 聽 聽 := { || {CLR_WHITE,CLR_BLACK} }
聽 聽聽聽 聽 :bClrFooter 聽 聽 聽 := { || {CLR_WHITE,CLR_BLACK} }
聽 聽聽聽 聽 :bClrSel 聽 聽 聽 聽 聽:= { || IF( oBrw:KeyNo % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
聽 聽聽聽 聽 :bClrSelFocus 聽 聽 := { || {oApp:nFClrFocus,oApp:nBClrFocus} }
聽 聽聽聽 聽 :bClrStd 聽 聽 聽 聽 聽:= { || IF( oBrw:KeyNo % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
聽 聽聽聽 聽 :nRecSelColor 聽 聽 := oApp:nRowParClr
聽 聽聽聽 聽 :lDisplayZeros 聽 聽:= .f. // zero values are not displayed. Added by GNRao. No need to use @Z
聽 聽 聽 聽 END


聽 聽 聽 聽 // Settings for Totals and Count
聽 聽 聽 聽 WITH OBJECT oBrw
聽 聽聽聽 聽 :aCol[ 5]:bFooter 聽 聽 聽 := { || Len( oBrw:aSelected ) } 聽 聽 聽 // this line produces the error
聽 聽聽聽 聽 WITH OBJECT :aCol[ 6]
聽 聽 聽 聽 聽 聽 :nFooterType 聽 聽 聽 聽 := AGGR_SUM
聽 聽 聽 聽 聽 聽 :bSumCondition 聽 聽 聽 := { || AScan( oBrw:aSelected, oBrw:BookMark ) > 0 }
聽 聽聽聽 聽 END

聽 聽聽聽 聽 :bOnMultiSelect 聽 聽 聽 聽 := { || oBrw:MakeTotals() }
聽 聽聽聽 聽 :bChange 聽 聽 聽 聽 聽 聽 聽 聽:= { || IF( LEN( oBrw:aSelected ) <= 1, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽 聽聽 聽 ( oBrw:oCol(6):nTotal := oBrw:oCol(6):Value,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽聽 聽 oBrw:oCol(6):RefreshFooter() ),NIL ) }
聽 聽聽聽 聽 :MakeTotals()
聽 聽 聽 聽 END




    Application
    ===========
    Path and name: C:\AppPag\AppPag.Exe (32 bits)
    Size: 3,613,184 bytes
    Compiler version: Harbour 3.2.0dev (r1801051438)
    FiveWin version: FWH 17.11
    C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
    Windows version: 6.1, Build 7601 Service Pack 1

    Time from start: 0 hours 0 mins 9 secs
    Error occurred at: 28/06/2018, 21:05:28
    Error description: Error BASE/1004 Message not found: TXBROWSE:ACOL

    Stack Calls
    ===========
    Called from: .\source\function\HARBOUR.PRG => _CLSSETERROR( 247 )
    Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:ACOL( 9999 )
    Called from: Source\AppPag.Prg => BRWFAC( 932 )
    Called from: Source\AppPag.Prg => (b)APPPAG( 147 )
    Called from: .\source\classes\TGET.PRG => TGET:LVALID( 1657 )
    Called from: .\source\classes\CONTROL.PRG => TGET:FWLOSTFOCUS( 1136 )
    Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1706 )
    Called from: .\source\classes\TGET.PRG => TGET:HANDLEEVENT( 805 )
    Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
    Called from: => SYSREFRESH( 0 )
    Called from: .\source\classes\CONTROL.PRG => TCONTROL:KEYCHAR( 827 )
    Called from: .\source\classes\TGET.PRG => TGET:KEYCHAR( 1553 )
    Called from: => TWINDOW:HANDLEEVENT( 0 )
    Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1731 )
    Called from: .\source\classes\TGET.PRG => TGET:HANDLEEVENT( 805 )
    Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
    Called from: => DIALOGBOX( 0 )
    Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
    Called from: Source\AppPag.Prg => APPPAG( 272 )
    [/list:u]

    With best regards
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero