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

Post Reply
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

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

Post 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] ) )
 
Last edited by El Loco on Mon Jun 16, 2014 10:25 am, edited 3 times in total.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Post by cnavarro »

Quizas definiendo

oCol:nMoveType:= MOVE_NONE
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

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

Post by El Loco »

cnavarro wrote:Quizas definiendo

oCol:nMoveType:= MOVE_NONE
Gracias por responder, pero no, sigue igual.
Abrazo.
Miguel
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Post 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

 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

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

Post 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
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

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

Post 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
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

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

Post 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
 
Regards

G. N. Rao.
Hyderabad, India
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

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

Post by El Loco »

Rao, funciona perfecto !!! :D :D :D

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