FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour EDIT_LISTBOX con DBF en xBrowse
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
EDIT_LISTBOX con DBF en xBrowse
Posted: Tue Sep 22, 2009 03:56 PM
Saludos para todos

Quiero cargar un tabla desde un DBF para usarlo en XBrowse con EDIT_LISTBOX pero no me muestra los datos
hago lo siguiente:
Code (fw): Select all Collapse
     LOCAL aNombres:={}
     LOCAL oDlg,oBrw
     
     USE PERSONAL Alias PERS NEW SHARED
     Do While !Eof()
        AADD( aNombres,{ PERS->NOMBRE } )
        PERS->( DBSKIP() )
     Enddo
     PSUPER->( dBCloseArea() )

//En le Browse esta es la columna
  oCol:=oBrw:AddCol()
   oCol:bStrData  := { || DATPER->NOMBRE}
   oCol:nHeadStrAlign := AL_CENTER
   oCol:cHeader   := "N O M B R E"
   oCol:nWidth:=185
   oCol:nEditType := EDIT_LISTBOX
   oCol:aEditListTxt  := aNombres
   oCol:bOnPostEdit := {|o, v, n| (DBRLOCK(),DATPER->NOMBRE:=v) }

Si la cargo manualmente asi aNombres:={"NOMBRE1","NOMBRE2","NOMBRE3"} funciona

Gracias amigos por la ayuda

Adhemar
Saludos,



Adhemar C.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: EDIT_LISTBOX con DBF en xBrowse
Posted: Tue Sep 22, 2009 06:54 PM

Adhemar....

Intenta hacer el array de esta forma

AADD( aNombres, PERS->NOMBRE )

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: EDIT_LISTBOX con DBF en xBrowse
Posted: Tue Sep 22, 2009 08:23 PM
Gracias Daniel
Funciona.

Se puede hacer algo similar a lo del buscador de GOOGLE, que cuando se va pulsando las letras se vaya ubicando en el nombre para elegirlo.
Ahora solo acepta la primera letra.

He intentado con
Code (fw): Select all Collapse
oCol:nEditType:=EDIT_GET_BUTTON
oCol:bEditBlock:={|| BuscaNombre("PERS") }

Pero cuando obtengo en nombre desde el otro browse de BuscaNombre() no se como pasarlo, también no se como hacer para que el dialogo salga debajo de la celda del Browse como el EDIT_LISTBOX
Code (fw): Select all Collapse
Static FUNCTION BuscaNombre(cAlias)
     Local oDlg, oBrw3, lOk:=.F.,xClave:=""
      DbSelectArea( cAlias )
        
    DEFINE DIALOG oDlg FROM 0,0 TO 195,226 PIXEL STYLE nOr( WS_VISIBLE, WS_POPUP )
    oBrw3 := TXBrowse():New( oDlg )
  
    oBrw3:nMarqueeStyle:=MARQSTYLE_HIGHLROW
    oBrw3:lHScroll:= .f.
    oBrw3:nRowDividerStyle:= 0
   oBrw3:lRecordSelector := .f.
      
   oCol:=oBrw3:AddCol()
    oCol:bStrData := { || ALLTRIM(NOMBRE)}
    oCol:cHeader  := "NOMBRE"
    oCol:nWidth:=240
    oCol:blDClickData:= { || ( lOk := .T., oDlg:End() ) }
    oCol:nHeadStrAlign := AL_LEFT
        
    oBrw3:CreateFromCode()
    
   oBrw3:bKeyDown := {|nKey| iif( nKey >=96 .AND. nKey <=105, nKey-= 48, ), iif( nKey == VK_ESCAPE, (oDlg:End()),Nil ), ;
              iif( nKey == VK_RETURN,(lOk:= .t.,oDlg:End()),  ), ;
              iif( nKey == VK_BACK  , ( xClave:= SUBSTR( xClave,1,LEN( xClave )-1 ), iif(EMPTY(xClave),oBrw3:GoTop(),dBSeek( xClave )),  oBrw3:Refresh(), oVar:Refresh() ), ), ;
              iif( nKey>=32 .AND. nKey<=128, ( dBSeek( xClave+UPPER(CHR(nKey) ) ), ;
                   iif( !EOF(), xClave+=UPPER(CHR(nKey)), ), dBSeek(xClave), oBrw3:Refresh(), oVar:Refresh() ),)};

       @1.7,80 GET oVar VAR xClave SIZE 45,8 PIXEL OF oDlg READONLY UPDATE 
    
       ACTIVATE DIALOG oDlg CENTERED
Return Nil


Gracias una vez más

Saludos

Adhemar C.
Saludos,



Adhemar C.

Continue the discussion