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] ) )