Page 1 of 1

array dos dimensiones

Posted: Wed Jan 02, 2008 10:37 pm
by rolando
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 :D

Posted: Wed Jan 02, 2008 11:04 pm
by Raymundo Islas M.

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

Posted: Thu Jan 03, 2008 11:07 am
by rolando
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 :D

Posted: Thu Jan 03, 2008 12:38 pm
by caducca
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

Posted: Fri Jan 04, 2008 3:48 am
by Willi Quintana
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

UPS falto er SetArray

Posted: Fri Jan 04, 2008 3:56 am
by Willi Quintana
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
....

Posted: Fri Jan 04, 2008 4:22 pm
by Raymundo Islas M.
Asi es Rolando.

Exactamente como lo comentas.


Saludos

Posted: Fri Jan 04, 2008 11:47 pm
by rolando
Muchas gracias a todos Quienes me ayudaron. Problema resuelto.

Saludos.

Rolando :D