Como pegar coluna do browse
Enviado: 06 Mai 2025 13:22
Estou tentando pegar a coluna do browse.
Tentei oBrowse:ColPos mas tá sempre 1
Tentei oBrowse:ColPos mas tá sempre 1
Código: Selecionar todos
al_DOKs := { {"1", "12" } , {"2", "22"} , {"3", "23"} , {"4", "24"} }
Código: Selecionar todos
hwg_CREATEARLIST( oBrwArr, al_DOKs )
oBrwArr:acolumns[1]:heading := "DOKs" // Header string
oBrwArr:acolumns[1]:length := 50
oBrwArr:bcolorSel := hwg_ColorC2N( "800080" )
oBrwArr:aColumns[2]:Heading := "X"
oBrwArr:aColumns[2]:Length := 10
Código: Selecionar todos
STATIC FUNCTION BrwArrayEditElem( oBrow )
* Edit the Element in the array
LOCAL nlaeng, cGetfield, cOldget, aRow
hwg_Msginfo( hb_ValToExp( oBrow:nCurrent ) ) // ok, retorna a linha
hwg_MsgInfo( hb_ValToExp( oBrow:ColPos ) ) // retorna sempre 1
Código: Selecionar todos
hwg_MsgInfo( hb_ValToExp( oBrow:aArray[ oBrow:nCurrent ] ) )
Código: Selecionar todos
aBrowseList := Array(10,10)
FOR EACH aRow IN aBrowseList
FOR EACH aCol IN aRow
aCol := Ltrim( Str( aRow:__EnumIndex() ) ) + "." + Ltrim( Str( aCol:__EnumIndex() ) )
NEXT
NEXT
Código: Selecionar todos
hwg_CREATEARLIST( oBrowse, aBrowseList )
FOR EACH oCol IN oBrowse:aColumns
oCol:Heading := Ltrim( Str( oCol:__EnumIndex() ) )
oCol:Length := 20
NEXT
Código: Selecionar todos
hwg_MsgInfo( hb_ValToExp( oBrow:aArray[ oBrow:nCurrent ,Brow:nCol ] ) )Código: Selecionar todos
//hwg_CREATEARLIST( oBrowse, aBrowseList )
oBrowse:aArray := aBrowseList
FOR EACH oCol IN aBrowseList[1]
FOR EACH nTmp IN { oCol:__EnumIndex() }
oBrowse:AddColumn( HColumn():New( Ltrim(Str(nTmp, 5)),{|v,o|(v),o:aArray[o:nCurrent,nTmp]},"C",10,0,.F.,DT_CENTER ) )
NEXT
NEXT
Código: Selecionar todos
/*
*$Id$
*
* HWGUI - Harbour Win32 and Linux (GTK) GUI library
* testbrw.prg - another browsing sample (array)
*
* Copyright 2005 Alexander S.Kresin <alex@kresin.ru>
* www - http://www.kresin.ru
*/
* Status:
* WinAPI : Yes
* GTK/Linux: Yes , see comment above
* GTK/Win : No
* -------------------------
* Sample crashes on GTK,
* method Add standard not
* working here, so
* the image add as hex value.
*
* -------------------------
* Only Field "Age" is editable.
* HBROWSE class on GTK:
* Obscure behavior on editable field "Age" need to fix !
* The modified value not accepted.
#include "hwgui.ch"
FUNCTION Main()
LOCAL oMainWindow
INIT WINDOW oMainWindow MAIN TITLE "Example" ;
AT 200,0 SIZE 400,150
* GTK: Submenus required, otherwise only display "Activate"
MENU OF oMainWindow
MENU TITLE "&Exit"
MENUITEM "&Quit" ACTION hwg_EndWindow()
ENDMENU
MENU TITLE "&Dialog"
MENUITEM "&Start Browse" ACTION DlgGet()
ENDMENU
ENDMENU
ACTIVATE WINDOW oMainWindow
RETURN Nil
FUNCTION DlgGet()
LOCAL oBmp
LOCAL oModDlg, oBrw1, oBrw2
LOCAL aSample1 := { {"Alex",17,2500}, {"Victor",42,2200}, {"John",31,1800}, ;
{"Sebastian",35,2000}, {"Mike",54,2600}, {"Sardanapal",22,2350}, {"Sergey",30,2800}, {"Petr",42,2450} }
LOCAL aSample2 := { {.t.,"Line 1",10}, {.t.,"Line 2",22}, {.f.,"Line 3",40} }
LOCAL cValTrue
INIT DIALOG oModDlg TITLE "About" AT 190,10 SIZE 600,320
@ 20,16 BROWSE oBrw1 ARRAY SIZE 280,220 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL
@ 310,16 BROWSE oBrw2 ARRAY SIZE 280,220 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL
oBrw1:aArray := aSample1
oBrowse:AddColumn( HColumn():New( "Name",{|v,o|o:aArray[o:nCurrent,1]},"C",12,0,.F.,DT_CENTER ) )
oBrowse:AddColumn( HColumn():New( "Age",{|v,o|o:aArray[o:nCurrent,2]},"N",6,0,.T.,DT_CENTER,DT_RIGHT ) )
oBrowse:AddColumn( HColumn():New( "Koef",{|v,o|o:aArray[o:nCurrent,3]},"N",6,0,.F.,DT_CENTER,DT_RIGHT ) )
oBrowse:aColumns[2]:footing := "Age"
oBrowse:aColumns[2]:lResizable := .F.
hwg_CREATEARLIST( oBrw2,aSample2 )
#ifdef __GTK__
* Standard image OBM_CHECK not available on GTK
* Take it from hex value
cValTrue := hwg_cHex2Bin(true_bmp())
oBmp := HBitmap():AddString( "true" , cValTrue )
#else
oBmp := HBitmap():AddStandard( OBM_CHECK )
#endif
oBrw2:aColumns[1]:aBitmaps := { { {|l|l}, oBmp } }
oBrw2:aColumns[2]:length := 6
oBrw2:aColumns[3]:length := 4
oBrw2:bKeyDown := {|o,key|BrwKey(o,key)}
oBrw2:bcolorSel := oBrw2:htbColor := 0xeeeeee
oBrw2:tcolorSel := 0xff0000
@ 210,260 OWNERBUTTON ON CLICK {|| hwg_EndDialog()} ;
SIZE 180,36 FLAT ;
TEXT "Close" COLOR hwg_ColorC2N("0000FF")
ACTIVATE DIALOG oModDlg
RETURN Nil
STATIC FUNCTION BrwKey( oBrw, key )
IF key == 32
oBrw:aArray[ oBrw:nCurrent,1 ] := !oBrw:aArray[ oBrw:nCurrent,1 ]
oBrw:RefreshLine()
ENDIF
RETURN .T.
#ifdef __GTK__
FUNCTION true_bmp()
* Hexdump of true.bmp, needed for GTK
RETURN ;
"42 4D 36 05 00 00 00 00 00 00 36 04 00 00 28 00 " + ;
"00 00 0D 00 00 00 10 00 00 00 01 00 08 00 00 00 " + ;
"00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 " + ;
"00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80 " + ;
"00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 " + ;
"00 00 C0 C0 C0 00 C0 DC C0 00 F0 CA A6 00 00 20 " + ;
"40 00 00 20 60 00 00 20 80 00 00 20 A0 00 00 20 " + ;
"C0 00 00 20 E0 00 00 40 00 00 00 40 20 00 00 40 " + ;
"40 00 00 40 60 00 00 40 80 00 00 40 A0 00 00 40 " + ;
"C0 00 00 40 E0 00 00 60 00 00 00 60 20 00 00 60 " + ;
"40 00 00 60 60 00 00 60 80 00 00 60 A0 00 00 60 " + ;
"C0 00 00 60 E0 00 00 80 00 00 00 80 20 00 00 80 " + ;
"40 00 00 80 60 00 00 80 80 00 00 80 A0 00 00 80 " + ;
"C0 00 00 80 E0 00 00 A0 00 00 00 A0 20 00 00 A0 " + ;
"40 00 00 A0 60 00 00 A0 80 00 00 A0 A0 00 00 A0 " + ;
"C0 00 00 A0 E0 00 00 C0 00 00 00 C0 20 00 00 C0 " + ;
"40 00 00 C0 60 00 00 C0 80 00 00 C0 A0 00 00 C0 " + ;
"C0 00 00 C0 E0 00 00 E0 00 00 00 E0 20 00 00 E0 " + ;
"40 00 00 E0 60 00 00 E0 80 00 00 E0 A0 00 00 E0 " + ;
"C0 00 00 E0 E0 00 40 00 00 00 40 00 20 00 40 00 " + ;
"40 00 40 00 60 00 40 00 80 00 40 00 A0 00 40 00 " + ;
"C0 00 40 00 E0 00 40 20 00 00 40 20 20 00 40 20 " + ;
"40 00 40 20 60 00 40 20 80 00 40 20 A0 00 40 20 " + ;
"C0 00 40 20 E0 00 40 40 00 00 40 40 20 00 40 40 " + ;
"40 00 40 40 60 00 40 40 80 00 40 40 A0 00 40 40 " + ;
"C0 00 40 40 E0 00 40 60 00 00 40 60 20 00 40 60 " + ;
"40 00 40 60 60 00 40 60 80 00 40 60 A0 00 40 60 " + ;
"C0 00 40 60 E0 00 40 80 00 00 40 80 20 00 40 80 " + ;
"40 00 40 80 60 00 40 80 80 00 40 80 A0 00 40 80 " + ;
"C0 00 40 80 E0 00 40 A0 00 00 40 A0 20 00 40 A0 " + ;
"40 00 40 A0 60 00 40 A0 80 00 40 A0 A0 00 40 A0 " + ;
"C0 00 40 A0 E0 00 40 C0 00 00 40 C0 20 00 40 C0 " + ;
"40 00 40 C0 60 00 40 C0 80 00 40 C0 A0 00 40 C0 " + ;
"C0 00 40 C0 E0 00 40 E0 00 00 40 E0 20 00 40 E0 " + ;
"40 00 40 E0 60 00 40 E0 80 00 40 E0 A0 00 40 E0 " + ;
"C0 00 40 E0 E0 00 80 00 00 00 80 00 20 00 80 00 " + ;
"40 00 80 00 60 00 80 00 80 00 80 00 A0 00 80 00 " + ;
"C0 00 80 00 E0 00 80 20 00 00 80 20 20 00 80 20 " + ;
"40 00 80 20 60 00 80 20 80 00 80 20 A0 00 80 20 " + ;
"C0 00 80 20 E0 00 80 40 00 00 80 40 20 00 80 40 " + ;
"40 00 80 40 60 00 80 40 80 00 80 40 A0 00 80 40 " + ;
"C0 00 80 40 E0 00 80 60 00 00 80 60 20 00 80 60 " + ;
"40 00 80 60 60 00 80 60 80 00 80 60 A0 00 80 60 " + ;
"C0 00 80 60 E0 00 80 80 00 00 80 80 20 00 80 80 " + ;
"40 00 80 80 60 00 80 80 80 00 80 80 A0 00 80 80 " + ;
"C0 00 80 80 E0 00 80 A0 00 00 80 A0 20 00 80 A0 " + ;
"40 00 80 A0 60 00 80 A0 80 00 80 A0 A0 00 80 A0 " + ;
"C0 00 80 A0 E0 00 80 C0 00 00 80 C0 20 00 80 C0 " + ;
"40 00 80 C0 60 00 80 C0 80 00 80 C0 A0 00 80 C0 " + ;
"C0 00 80 C0 E0 00 80 E0 00 00 80 E0 20 00 80 E0 " + ;
"40 00 80 E0 60 00 80 E0 80 00 80 E0 A0 00 80 E0 " + ;
"C0 00 80 E0 E0 00 C0 00 00 00 C0 00 20 00 C0 00 " + ;
"40 00 C0 00 60 00 C0 00 80 00 C0 00 A0 00 C0 00 " + ;
"C0 00 C0 00 E0 00 C0 20 00 00 C0 20 20 00 C0 20 " + ;
"40 00 C0 20 60 00 C0 20 80 00 C0 20 A0 00 C0 20 " + ;
"C0 00 C0 20 E0 00 C0 40 00 00 C0 40 20 00 C0 40 " + ;
"40 00 C0 40 60 00 C0 40 80 00 C0 40 A0 00 C0 40 " + ;
"C0 00 C0 40 E0 00 C0 60 00 00 C0 60 20 00 C0 60 " + ;
"40 00 C0 60 60 00 C0 60 80 00 C0 60 A0 00 C0 60 " + ;
"C0 00 C0 60 E0 00 C0 80 00 00 C0 80 20 00 C0 80 " + ;
"40 00 C0 80 60 00 C0 80 80 00 C0 80 A0 00 C0 80 " + ;
"C0 00 C0 80 E0 00 C0 A0 00 00 C0 A0 20 00 C0 A0 " + ;
"40 00 C0 A0 60 00 C0 A0 80 00 C0 A0 A0 00 C0 A0 " + ;
"C0 00 C0 A0 E0 00 C0 C0 00 00 C0 C0 20 00 C0 C0 " + ;
"40 00 C0 C0 60 00 C0 C0 80 00 C0 C0 A0 00 F0 FB " + ;
"FF 00 A4 A0 A0 00 80 80 80 00 00 00 FF 00 00 FF " + ;
"00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF " + ;
"00 00 FF FF FF 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF FF 00 FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF 00 00 00 FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF 00 00 00 00 00 FF FF FF " + ;
"FF FF FF 00 00 00 FF FF 00 00 FF 00 00 00 FF FF " + ;
"FF FF FF 00 00 00 FF FF 00 FF FF FF 00 00 00 FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF 00 00 FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF 00 FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 FF FF FF FF FF FF FF FF FF FF " + ;
"FF FF FF 00 00 00 "
#endif
* ========================== EOF of testbrw.prg ==========================
Código: Selecionar todos
/*
*
* demobrowsearr.prg
*
* $Id$
*
* HWGUI - Harbour Win32 GUI and GTK library source code:
* Sample for HBROWSE class for arrays
*
* Copyright 2002 Alexander S.Kresin <alex@kresin.ru>
* www - http://www.kresin.ru
* Copyright 2020 Wilfried Brunken, DF7BE
*/
/*
More samples for ARRAY BROWSE in
utils\devtools\memdump.prg
Because the HBROWSE class for arrays have some bugs,
so this sample demonstrates a suitable working browse function
for full editing of arrays (mainly without crash's).
This sample is for an array with one column of type "C", but
it could be possible to extend it for more columns with other types.
For editing features you need buttons for adding, editing and
deleting lines.
We will fix the bugs as soon as possible.
The HBROWSE class for DBF's is very stable.
Sample for read out the edited array:
@ 360,410 BUTTON oBtn4 CAPTION "OK " SIZE 80,26 ;
ON CLICK { | | bCancel := .F. , ;
aBrowseList := oBrowse:aArray , ;
hwg_EndDialog() }
*/
* Status:
* WinAPI : Yes
* GTK/Linux: Yes
* GTK/Win : Yes
#include "hwgui.ch"
#include "common.ch"
#ifdef __XHARBOUR__
#include "ttable.ch"
#endif
FUNCTION DemoBrowseArr( lWithDialog, oDlg )
LOCAL oBrowse , oFont , oBtn1 , oBtn2 , oBtn3 , oBtn4
LOCAL aBrowseList, aRow, aCol, oCol, nTmp
#ifdef __PLATFORM__WINDOWS
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
#else
PREPARE FONT oFont NAME "Sans" WIDTH 0 HEIGHT 12 && vorher 13
#endif
/*
If the base array has one dimension, you need to convert it
first into a 2 dimension array
(and back again for storage after editing)
*/
aBrowseList := Array(10,10)
FOR EACH aRow IN aBrowseList
FOR EACH aCol IN aRow
aCol := Ltrim( Str( aCol:__EnumIndex() ) ) + "." + Ltrim( Str( aCol:__EnumIndex() ) )
NEXT
NEXT
IF lWithDialog
INIT DIALOG oDlg ;
TITLE "demobrowsearr.prg - Browse Array" ;
AT 0,0 ;
SIZE 600, 500 ;
NOEXIT ;
STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER
ENDIF
/*
Do not use parameters AUTOEDIT and APPEND, they are buggy.
*/
ButtonForSample( "demobrowsearr.prg" )
@ 21, 80 BROWSE oBrowse ;
ARRAY ;
ON CLICK { | | BrwArrayEditElem( oBrowse ) };
STYLE WS_VSCROLL + WS_HSCROLL + WS_BORDER ;
SIZE 500, 300
* Pressing ENTER starts editing of element, too
//hwg_CREATEARLIST( oBrowse, aBrowseList )
oBrowse:aArray := aBrowseList
FOR EACH oCol IN aBrowseList[1]
FOR EACH nTmp IN { oCol:__EnumIndex() }
oBrowse:AddColumn( HColumn():New( Ltrim(Str(nTmp, 5)),{|v,o|(v),o:aArray[o:nCurrent,nTmp]},"C",10,0,.F.,DT_CENTER ) )
NEXT
//oCol:Heading := Ltrim( Str( oCol:__EnumIndex() ) )
//oCol:Length := 20
NEXT
oBrowse:bcolorSel := hwg_ColorC2N( "800080" )
* FONT setting is mandatory, otherwise crashes with "Not exported method PROPS2ARR"
oBrowse:ofont := oFont && HFont():Add( 'Arial',0,-12 )
@ 10, 410 BUTTON oBtn1 ;
CAPTION "Edit" ;
SIZE 60,25 ;
ON CLICK { || BrwArrayEditElem( oBrowse ) } ;
TOOLTIP "Click or ENTER: Edit element under cursor"
@ 70, 410 BUTTON oBtn2 ;
CAPTION "Add" ;
SIZE 60,25 ;
ON CLICK { || BrwArrayAddElem( oBrowse ) } ;
TOOLTIP "Add element"
@ 140, 410 BUTTON oBtn3 ;
CAPTION "Delete" ;
SIZE 60,25 ;
ON CLICK { || BrwArrayDelElem( oBrowse ) } ;
TOOLTIP "Delete element under cursor"
@ 260,410 BUTTON oBtn4 ;
CAPTION "OK " ;
SIZE 80,26 ;
ON CLICK { || hwg_EndDialog() }
IF lWithDialog
oDlg:Activate()
ENDIF
RETURN .T.
STATIC FUNCTION BrwArrayEditElem( oBrowse )
* Edit the Element in the array
LOCAL nlaeng, cGetfield, cOldget, aRow
hwg_Msginfo( ;
"RowPos: " + hb_ValToExp( oBrowse:RowPos ) + hb_Eol() + ;
"ColPos: " + hb_ValToExp( oBrowse:ColPos ) )
nlaeng := oBrowse:acolumns[ oBrowse:ColPos ]:length
* Should be an element with one dimension and one element
aRow := oBrowse:aArray[ oBrowse:nCurrent ]
cGetField := Padr( aRow[ oBrowse:ColPos ], nlaeng )
cOldget := cGetfield
* Call edit window (GET)
cGetfield := BrwArrayGetElem( oBrowse, cGetfield )
* Write back, if modified or not cancelled
IF ( .NOT. EMPTY( cGetfield ) ) .AND. ( cOldget != cGetfield )
oBrowse:aArray[ oBrowse:nCurrent, oBrowse:ColPos ] := { cGetfield }
oBrowse:lChanged := .T.
oBrowse:Refresh()
ENDIF
RETURN Nil
STATIC FUNCTION BrwArrayAddElem( oBrowse )
* Add array element
LOCAL oTotReg , i , nlaeng , cGetfield
oTotReg := {}
nlaeng := oBrowse:acolumns[1]:length
cGetfield := SPACE(nlaeng)
IF (oBrowse:aArray == NIL) .OR. EMPTY(oBrowse:aArray)
// ( LEN(oBrowse:aArray) == 1 .AND. oBrowse:aArray[1] == "" )
oBrowse:aArray := {}
ENDIF
* Copy browse array and get number of elements
FOR i := 1 TO LEN( oBrowse:aArray )
AADD( oTotReg, oBrowse:aArray[ i ] )
NEXT
* Edit new element
cGetfield := BrwArrayGetElem( oBrowse, cGetfield )
IF .NOT. EMPTY( cGetfield )
* Add new item
AADD( oTotReg, { cGetfield } )
oBrowse:aArray := oTotReg
oBrowse:Refresh()
ENDIF
RETURN Nil
STATIC FUNCTION BrwArrayDelElem( obrw )
* Delete array element
IF ( obrw:aArray == Nil ) .OR. Empty( obrw:aArray )
* Nothing to delete
RETURN NIL
ENDIF
Adel( obrw:aArray, obrw:nCurrent )
ASize( obrw:aArray, Len( obrw:aArray ) - 1 )
obrw:lChanged := .T.
obrw:Refresh()
RETURN Nil
STATIC FUNCTION BrwArrayGetElem( oBrowse, cgetf )
* Edit window for element
* Cancel: return empty string
LOCAL clgetf , lcancel , oDlg
LOCAL oLabel1, oLabel2, oGet1, oButton1, oButton2
lcancel := .F.
clgetf := cgetf
INIT DIALOG oDlg ;
TITLE "Edit array element" ;
AT 437,74 ;
SIZE 635,220 ;
CLIPPER STYLE WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU + WS_SIZEBOX + DS_CENTER
@ 38,12 SAY oLabel1 ;
CAPTION "Record number:" ;
SIZE 136,22
@ 188,12 SAY oLabel2 ;
CAPTION Alltrim( Str( oBrowse:nCurrent ) ) ;
SIZE 155,22
@ 38,46 GET oGet1 ;
VAR clgetf ;
SIZE 534,24 ;
STYLE WS_BORDER
@ 38,100 BUTTON oButton1 ;
CAPTION "Save" ;
SIZE 80,32 ;
STYLE WS_TABSTOP + BS_FLAT ;
ON CLICK { | | oDlg:Close() } ;
TOOLTIP "Save changes and return to array browse list"
@ 169,100 BUTTON oButton2 ;
CAPTION "Cancel" ;
SIZE 80,32 ;
STYLE WS_TABSTOP + BS_FLAT ;
ON CLICK { | | lcancel := .T. , oDlg:Close() } ;
TOOLTIP "Return to array browse list without saving modifications"
ACTIVATE DIALOG oDlg CENTER
* Cancelled ?
IF lcancel
clgetf := ""
ENDIF
RETURN clgetf
* ============================ EOF of demobrowsearr.prg ==============================
Código: Selecionar todos
#include "hwgui.ch"
FUNCTION Test
LOCAL oDlg
INIT DIALOG oDlg ;
TITLE "About" ;
AT 0, 0 ;
SIZE 1024, 768
Browse1()
Browse2()
Browse3()
Browse4()
ACTIVATE DIALOG oDlg CENTER
RETURN Nil
FUNCTION Browse1()
LOCAL oBrw1
LOCAL aSample1 := { {"Alex",17,2500}, {"Victor",42,2200}, {"John",31,1800}, ;
{"Sebastian",35,2000}, {"Mike",54,2600}, {"Sardanapal",22,2350}, {"Sergey",30,2800}, {"Petr",42,2450} }
@ 20, 20 BROWSE oBrw1 ;
ARRAY ;
SIZE 280, 300 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
ON CLICK { || BrowseClick( oBrw1 ) }
oBrw1:aArray := aSample1
oBrw1:AddColumn( HColumn():New( "Name", {|v,o| (v), o:aArray[o:nCurrent,1]},"C",12,0,.F.,DT_CENTER ) )
oBrw1:AddColumn( HColumn():New( "Age", {|v,o| (v), o:aArray[o:nCurrent,2]},"N",6,0,.T.,DT_CENTER,DT_RIGHT ) )
oBrw1:AddColumn( HColumn():New( "Koef", {|v,o| (v), o:aArray[o:nCurrent,3]},"N",6,0,.F.,DT_CENTER,DT_RIGHT ) )
oBrw1:aColumns[2]:footing := "Age"
oBrw1:aColumns[2]:lResizable := .F.
RETURN Nil
FUNCTION Browse2()
LOCAL oBrw2
LOCAL aSample2 := { {"1","Line 1",10}, {"1","Line 2",22}, {"0","Line 3",40} }
@ 20, 350 BROWSE oBrw2 ;
ARRAY ;
SIZE 280, 300 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
ON CLICK { || BrowseClick( oBrw2 ) }
hwg_CREATEARLIST( oBrw2,aSample2 )
oBrw2:aColumns[2]:length := 6
oBrw2:aColumns[3]:length := 4
//oBrw2:bKeyDown := { |o,key| BrwKey( o, key ) }
//oBrw2:bcolorSel := oBrw2:htbColor := 0xeeeeee
//oBrw2:tcolorSel := 0xff0000
RETURN Nil
FUNCTION Browse3()
LOCAL oBrw3, aRow, aCol
LOCAL aList := Array(10,10)
FOR EACH aRow IN aList
FOR EACH aCol IN aRow
aCol := Str( aRow:__EnumIndex(), 3 ) + "." + Str( aCol:__EnumIndex(), 3 )
NEXT
NEXT
@ 500, 20 BROWSE oBrw3 ;
ARRAY ;
SIZE 280, 300 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
ON CLICK { || BrowseClick( oBrw3 ) }
oBrw3:aArray := aList
oBrw3:AddColumn( HColumn():New( "Name", {|v,o| (v), o:aArray[o:nCurrent,1]},"C",12,0,.F.,DT_CENTER ) )
oBrw3:AddColumn( HColumn():New( "Age", {|v,o| (v), o:aArray[o:nCurrent,2]},"C",10,0,.T.,DT_CENTER,DT_RIGHT ) )
oBrw3:AddColumn( HColumn():New( "Koef", {|v,o| (v), o:aArray[o:nCurrent,3]},"C",10,0,.F.,DT_CENTER,DT_RIGHT ) )
oBrw3:AddColumn( HColumn():New( "Name", {|v,o| (v), o:aArray[o:nCurrent,4]},"C",12,0,.F.,DT_CENTER ) )
oBrw3:AddColumn( HColumn():New( "Age", {|v,o| (v), o:aArray[o:nCurrent,5]},"C",10,0,.T.,DT_CENTER,DT_RIGHT ) )
oBrw3:AddColumn( HColumn():New( "Koef", {|v,o| (v), o:aArray[o:nCurrent,6]},"C",10,0,.F.,DT_CENTER,DT_RIGHT ) )
oBrw3:AddColumn( HColumn():New( "Name", {|v,o| (v), o:aArray[o:nCurrent,7]},"C",12,0,.F.,DT_CENTER ) )
oBrw3:AddColumn( HColumn():New( "Age", {|v,o| (v), o:aArray[o:nCurrent,8]},"C",10,0,.T.,DT_CENTER,DT_RIGHT ) )
oBrw3:AddColumn( HColumn():New( "Koef", {|v,o| (v), o:aArray[o:nCurrent,9]},"C",10,0,.F.,DT_CENTER,DT_RIGHT ) )
oBrw3:AddColumn( HColumn():New( "Name", {|v,o| (v), o:aArray[o:nCurrent,10]},"C",12,0,.F.,DT_CENTER ) )
oBrw3:aColumns[2]:lResizable := .T.
RETURN Nil
FUNCTION Browse4()
LOCAL oBrw4, aRow, aCol
LOCAL aList := Array(10,10)
FOR EACH aRow IN aList
FOR EACH aCol IN aRow
aCol := Str( aRow:__EnumIndex(), 3 ) + "." + Str( aCol:__EnumIndex(), 3 )
NEXT
NEXT
@ 500, 350 BROWSE oBrw4 ;
ARRAY ;
SIZE 280, 300 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
ON CLICK { || BrowseClick( oBrw4 ) }
hwg_CREATEARLIST( oBrw4, aList )
oBrw4:aColumns[1]:length := 10
oBrw4:aColumns[2]:length := 10
oBrw4:aColumns[3]:length := 10
oBrw4:aColumns[4]:length := 10
oBrw4:aColumns[5]:length := 10
oBrw4:aColumns[6]:length := 10
oBrw4:aColumns[7]:length := 10
oBrw4:aColumns[8]:length := 10
oBrw4:aColumns[9]:length := 10
oBrw4:aColumns[10]:length := 10
//oBrw4:bKeyDown := { |o,key| BrwKey( o, key ) }
//oBrw4:bcolorSel := oBrw2:htbColor := 0xeeeeee
//oBrw4:tcolorSel := 0xff0000
RETURN Nil
FUNCTION BrowseClick( oBrowse )
hwg_MsgInfo( ;
hb_ValToExp( oBrowse:RowPos ) + hb_Eol() + ;
hb_ValToExp( oBrowse:ColPos ) )
RETURN Nil