array dos dimensiones

Post Reply
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

array dos dimensiones

Post 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
User avatar
Raymundo Islas M.
Posts: 590
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Post 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
FWH 10.6 + xHarbour + Borland 582
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Post 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
caducca
Posts: 106
Joined: Wed Mar 08, 2006 2:24 pm

Post 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
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Post 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
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

UPS falto er SetArray

Post 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
....
User avatar
Raymundo Islas M.
Posts: 590
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Post by Raymundo Islas M. »

Asi es Rolando.

Exactamente como lo comentas.


Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Post by rolando »

Muchas gracias a todos Quienes me ayudaron. Problema resuelto.

Saludos.

Rolando :D
Post Reply