Buenas tardes y buen año para todos,
Nunca usé arrays de dos dimensiones y ahora necesito cargar un array con los datos de _ de una dbf y luego, hacer un browse con ellos.
Algo hago mal, porque no funciona. Adjunto el código simplificado para ver si alguien puede ayudarme. Obviamente en cAlias está el alias de la dbf en uso. y ya hice el go top.
El code es este´:
local aArray:=array(2)
do while ! eof()
Aadd(aArray , {((cAlias)->MODELO) , ((cAlias)->CHASIS)})
skip
loop
enddo
define dialog oDlg resource 1009 of oWnd
redefine listbox oLbx fields aArray[1], aArray[2] ;
headers "MODELO", "CHASSIS" ;
id 102 of oDlg ;
on dblclick oDlg:end()
oLbx:cTooltip:='Doble click para selectar ítem y salir'
activate dialog oDlg center
Gracias.
Rolando
array dos dimensiones
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Code: Select all
REDEFINE LISTBOX lbCptAdq ;
FIELDS aCptAdq[pCA,1],aCptAdq[pCA,2],aCptAdq[pCA,3], ;
aCptAdq[pCA,4],aCptAdq[pCA,5],aCptAdq[pCA,6] ;
HEAD "RENGLON","CLAVE Y DESCRIPCION DE LOS BIENES","CANT","UNIDAD","UNITARIO","IMPORTE" ;
ID 133 ;
FONT oFntBrw ;
FIELDSIZES 65,595,60,70,90,95 ;
OF oMainPgs:aDialogs[1]
lbCptAdq:SetArray( aCptAdq )
lbCptAdq:nLineStyle := 2
lbCptAdq:lDrawFocusRect := .F.
lbCptAdq:nClrLine := CLR_WHITE
// lbCptAdq:nClrBackHead := 13425898
lbCptAdq:BGOTOP := { || pCA :=1}
lbCptAdq:BGOBOTTOM := { || pCA := eVal( lbCptAdq:bLogicLen ) }
lbCptAdq:BSKIP := { | nwant, nold | nold := pCA , pCA += nwant, ;
pCA := Max( 1, Min( pCA, eVal( lbCptAdq:bLogicLen ) ) ), pCA - nOld }
lbCptAdq:BLOGICLEN := { || Len( aCptAdq ) }
lbCptAdq:AJUSTIFY := { 2,0,1,2,1,1 }
// lbCptAdq:AJUSTIFY := { .F.,.F.,.T.,.T.,.T.,.T. }
// lbCptAdq:bKeyDown := { | nKey | CAPVTSKEY( nKey ) }
lbCptAdq:nClrPane := { || IIF( pCA%2 == 0, ClrBrwsA, ClrBrwsB ) }
// lbCptAdq:AACTIONS := { ,,,{|| APLDSCTX(1) },,,{|| APLDSCTX(2) } }
lbCptAdq:lAdjLastCol:= .F.
Con eso te debe trabajar bien !
Saludos
FWH 10.6 + xHarbour + Borland 582
Raymundo,
Gracias por tu respuesta.
Estoy viendo el código que publicaste y te consulto, el [pCA,1], [pCA,2], etc, ¿Son para indicar, el "[pCA" la ubicación dentro del array y el ",1]" la dimensión que le corresponde?
Cuando vuelva de mi trabajo, desde donde estoy escribiendo lo pongo en práctica y comento los resultados, pero me interesa saber lo que te consulté antes.
Gracias.
Rolando
Gracias por tu respuesta.
Estoy viendo el código que publicaste y te consulto, el [pCA,1], [pCA,2], etc, ¿Son para indicar, el "[pCA" la ubicación dentro del array y el ",1]" la dimensión que le corresponde?
Cuando vuelva de mi trabajo, desde donde estoy escribiendo lo pongo en práctica y comento los resultados, pero me interesa saber lo que te consulté antes.
Gracias.
Rolando
Hola Rolando:
El problema aparente es en la definicion del ARRAY, ya que si lo defines como ARRAY(2) le estas indicando dos elementos al ARRAY, pero una sola dimencion, para definir dos dimenciones lo debes declarar como ARRAY(1,2), con esto indico que el ARRAY tiene una fila y dos columnas.
Saludos
Carlos A. Ducca
El problema aparente es en la definicion del ARRAY, ya que si lo defines como ARRAY(2) le estas indicando dos elementos al ARRAY, pero una sola dimencion, para definir dos dimenciones lo debes declarar como ARRAY(1,2), con esto indico que el ARRAY tiene una fila y dos columnas.
Saludos
Carlos A. Ducca
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Pan chancay.... (expresion que significa.... fácil.....)
local aArray:={}
DO WHILE !EOF()
AADD(aArray , {((cAlias)->MODELO) , ((cAlias)->CHASIS)})
DBSKIP()
ENDDO
IF LEN(aArray) = 0 // por si no se lleno el arreglo
AADD(aArray,{"",""})
ENDIF
DEFINE DIALOG oDlg RESOURCE 1009 OF oWnd
REDEFINE LISTBOX oLbx ;
FIELDS aArray[oLbx:nAt, 1], aArray[oLbx:nAt, 2] ;
HEADERS "MODELO", "CHASSIS" ;
ON DBLCLICK oDlg:End() ;
SIZES 100, 100 ;
ID 102 OF oDlg
oLbx:cTooltip:='Doble click para selectar ítem y salir'
ACTIVATE DIALOG oDlg CENTER
....
Salu2
local aArray:={}
DO WHILE !EOF()
AADD(aArray , {((cAlias)->MODELO) , ((cAlias)->CHASIS)})
DBSKIP()
ENDDO
IF LEN(aArray) = 0 // por si no se lleno el arreglo
AADD(aArray,{"",""})
ENDIF
DEFINE DIALOG oDlg RESOURCE 1009 OF oWnd
REDEFINE LISTBOX oLbx ;
FIELDS aArray[oLbx:nAt, 1], aArray[oLbx:nAt, 2] ;
HEADERS "MODELO", "CHASSIS" ;
ON DBLCLICK oDlg:End() ;
SIZES 100, 100 ;
ID 102 OF oDlg
oLbx:cTooltip:='Doble click para selectar ítem y salir'
ACTIVATE DIALOG oDlg CENTER
....
Salu2
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
UPS falto er SetArray
Pan chancay.... (expresion que significa.... fácil.....)
local aArray:={}
DO WHILE !EOF()
AADD(aArray , {((cAlias)->MODELO) , ((cAlias)->CHASIS)})
DBSKIP()
ENDDO
IF LEN(aArray) = 0 // por si no se lleno el arreglo
AADD(aArray,{"",""})
ENDIF
DEFINE DIALOG oDlg RESOURCE 1009 OF oWnd
REDEFINE LISTBOX oLbx ;
FIELDS aArray[oLbx:nAt, 1], aArray[oLbx:nAt, 2] ;
HEADERS "MODELO", "CHASSIS" ;
ON DBLCLICK oDlg:End() ;
SIZES 100, 100 ;
ID 102 OF oDlg
oLbx:SetArray(aArray)
oLbx:cTooltip:='Doble click para selectar ítem y salir'
ACTIVATE DIALOG oDlg CENTER
....
local aArray:={}
DO WHILE !EOF()
AADD(aArray , {((cAlias)->MODELO) , ((cAlias)->CHASIS)})
DBSKIP()
ENDDO
IF LEN(aArray) = 0 // por si no se lleno el arreglo
AADD(aArray,{"",""})
ENDIF
DEFINE DIALOG oDlg RESOURCE 1009 OF oWnd
REDEFINE LISTBOX oLbx ;
FIELDS aArray[oLbx:nAt, 1], aArray[oLbx:nAt, 2] ;
HEADERS "MODELO", "CHASSIS" ;
ON DBLCLICK oDlg:End() ;
SIZES 100, 100 ;
ID 102 OF oDlg
oLbx:SetArray(aArray)
oLbx:cTooltip:='Doble click para selectar ítem y salir'
ACTIVATE DIALOG oDlg CENTER
....
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO