Page 1 of 1

Que estoy haciendo mal ??? (xBrowse) - SOLUCIONADO!!!

Posted: Wed Jun 11, 2014 5:41 pm
by El Loco
Amigos, hace ya como seis horas que estoy con esto.... y no hay forma, no descubro que pasa con xBrowse.
Una función carga un array que se la pasa a otra función para que la muestre y devuelva un valor.
Este valor puede ser el numero de elemento seleccionado o su valor. Si el array es unidimensional, todo bien.
Ahora cuando es multidimensional, si doy doble click o escape me devuelve el valor correcto, ahora si doy Enter me devuelve el valor de la próxima celda.
EJ. {{"Elemento 01" , "A01" , "B01" , "C01"}
{"Elemento 02" , "A02" , "B02" , "C02"}
{"Elemento 03" , "A03" , "B03" , "C03"} , etc
Si esta seleccionado "Elemento 01" y doy enter me devuelve "A01" , si estoy en "A01" me devuelve "B01" y así sucesivamente.
Adjunto código de muestra a ver que no estoy viendo o que estoy haciendo mal.
Desde ya muchísimas gracias.
Un gran abrazo.

FTDN Febrero 2014 (FWH 14.02)

Code: Select all

#include "FiveWin.ch"

REQUEST DbfCdx

Function Main()
 Local aArray1:= Array(12)
 Local aArray2:= Array(12)
 Local A

 For A:= 1 to 12
     aArray1[A]:= "Elemento : " + StrZero(A,4)
     aArray2[A]:= {"Elemento : " + StrZero(A,4) , "AA " + StrZero(A,4), "BB "+ StrZero(A,4) , "CC "+ StrZero(A,4)}
 Next A
 
 MsgInfo(GMsgList(aArray1,"Numero de Elemento"))
 MsgInfo(GMsgList(aArray1,"Numero de Elemento",2))
 MsgInfo(GMsgList(aArray2,"Multidimensional",2))
 
Return Nil

//
//----------------------------------------------------------------------------------------------------------
Static Function GMsgList(aArray,cTitulo,nValor)
 Local oDlg, oBrw, oFont
 Default cTitulo:= "Seleccione Item"
 Default nValor:= 1

 Define Font oFont Name 'SEGOE UI' Size 0,-16
 Define Dialog oDlg Size 640,440 Pixel ;
    Title cTitulo ;
    Font oFont
 
 @ 10,10 xBrowse oBrw Size 300,200 Pixel OF oDlg //AUTOCOLS//NOBORDER
 
    WITH OBJECT oBrw
       //:nStretchCol  := STRETCHCOL_WIDEST
       :lHeader   = .F.
       :lVScroll  = .F.
       :bKeyChar  := { |nKey| If( nKey == VK_RETURN, ( oDlg:End() , oBrw:End() ), nil ) }
       :bLDblClick:= { || oDlg:End() , oBrw:End() }
       :SetArray(aArray)
       :CreateFromCode()
    END
 
   Activate Dialog oDlg Center
   Release Font oFont
 
Return If( nValor == 1 , oBrw:nArrayAt ,  If( Len(oBrw:aCols) > 1 , aArray[oBrw:nArrayAt,oBrw:nColSel] , oBrw:aArrayData[oBrw:nArrayAt] ) )
 

Re: Que estoy haciendo mal ??? (xBrowse)

Posted: Wed Jun 11, 2014 7:09 pm
by cnavarro
Quizas definiendo

oCol:nMoveType:= MOVE_NONE

Re: Que estoy haciendo mal ??? (xBrowse)

Posted: Wed Jun 11, 2014 7:44 pm
by El Loco
cnavarro wrote:Quizas definiendo

oCol:nMoveType:= MOVE_NONE
Gracias por responder, pero no, sigue igual.
Abrazo.
Miguel

Re: Que estoy haciendo mal ??? (xBrowse)

Posted: Wed Jun 11, 2014 8:03 pm
by cnavarro
Prueba definiendo el bKeyChar

Code: Select all

      :bKeyChar         := { |nKey| if ( nKey == VK_RETURN .and. oBrw:nLen > 0,;
                                         oBrw:SelectedCol(), nil ) }
      // Es un ejemplo

 

Re: Que estoy haciendo mal ??? (xBrowse)

Posted: Wed Jun 11, 2014 8:13 pm
by cmsoft
Si lo pruebas asi, tal vez te de una pista. A mi me mostro bien el dato en el mismo evento del bKeyDown

Code: Select all

Static Function GMsgList(aArray,cTitulo,nValor)
 Local oDlg, oBrw, oFont, i
 Default cTitulo:= "Seleccione Item"
 Default nValor:= 1

 Define Font oFont Name 'SEGOE UI' Size 0,-16
 Define Dialog oDlg Size 640,440 Pixel ;
    Title cTitulo ;
    Font oFont
 
 @ 10,10 xBrowse oBrw Size 300,200 Pixel OF oDlg //AUTOCOLS//NOBORDER
 
    WITH OBJECT oBrw
       //:nStretchCol  := STRETCHCOL_WIDEST
       :lHeader   = .F.
       :lVScroll  = .F.
       :bKeyChar  := { |nKey| (MsgInfo(Eval(oBrw:aCols[oBrw:nColSel]:bstrdata)),If( nKey == VK_RETURN, ( oDlg:End() , oBrw:End() ), nil )) } // Aca esta el msg
       :bLDblClick:= { || oDlg:End() , oBrw:End() }
       :SetArray(aArray)
       :CreateFromCode()
       :nMoveType := 5
    END
 
   Activate Dialog oDlg Center
   Release Font oFont
 
Return nil

Re: Que estoy haciendo mal ??? (xBrowse)

Posted: Wed Jun 11, 2014 9:22 pm
by El Loco
Gracias Cristobal y cmsoft.
Cristobal no funciona.
cmsoft (como es tu nombre???) es verdad, con tu sugerencia lo muestra bien en el evento bKeyDown. Voy a seguir investigando.

Gracias a los dos por la gran ayuda que me dieron.
Un gran abrazo.
Miguel

Re: Que estoy haciendo mal ??? (xBrowse)

Posted: Mon Jun 16, 2014 12:23 am
by nageswaragunupudi
Please try

Code: Select all

Static Function GMsgList(aArray,cTitulo,nValor)

   Local oDlg, oBrw, oFont, uRet

   Default cTitulo:= "Seleccione Item"
   Default nValor:= 1

   Define Font oFont Name 'SEGOE UI' Size 0,-16
   Define Dialog oDlg Size 640,440 Pixel ;
      Title cTitulo ;
      Font oFont

   @ 10,10 xBrowse oBrw Size 300,200 Pixel OF oDlg ;
     DATASOURCE aArray AUTOCOLS NOBORDER

      WITH OBJECT oBrw
         //:nStretchCol  := STRETCHCOL_WIDEST
         :lHeader   = .F.
         :lVScroll  = .F.

         :bLDblClick:= { || uRet := If( nValor == 1, oBrw:nArrayAt, oBrw:SelectedCol():Value ), oDlg:End() }
         :bKeyChar  := { |nKey| If( nKey == VK_RETURN, Eval( oBrw:bLDblClick ), nil ) }

         :CreateFromCode()
      END

     Activate Dialog oDlg Center
     Release Font oFont

Return uRet
 

Re: Que estoy haciendo mal ??? (xBrowse)

Posted: Mon Jun 16, 2014 10:25 am
by El Loco
Rao, funciona perfecto !!! :D :D :D

Muchísimas gracias !!!
Un gran abrazo. Miguel