// Notas: debo mencionar ke utilizo el FW192; para reactivar las matrices en los combos,
// no fue posible hasta ke use el ON CHANGE, con VALID se fue a las pailas; No pude usar
// los ADEL ni AINS, por eso redimensiono con ASIZE; ACLONE tambien fallo, por eso ACOPY.
// Tal vez exista otra forma de realizar esta operación, pero a pesar de consultar en
// reiteradas ocasiones, solo me decian "usa SetItems", pero no funcaba asi no ma',
// en todo caso espero ke te sirva, mientras.. comparte esto pa' ke too's lo cachen.. y
// lo arreglen.
// Ahora bien, un pedido, ke alguien please me muestre, asi como yo lo hice, una manera de
// poder saltar a algun objeto en particular sin pasar por los otros, por ejemplo:
// si el orden es : REDEFINE GET uno...,REDEFINE GET dos..,REDEFINE GET tres.........
// entonces por una condicion dada en el "uno" pudiera saltarme al "tres", sin pasar por
// el "dos", se entiende ?
// En todo caso, ke le aproveche.
// Mi nombre es Omar Aguirre C., alias TRONIX, de Calama-Chile.
// Mi correo es
[email protected]
FUNCTION Selecciona()
LOCAL oDlg, oCbx, oCbx2
LOCAL Clase, Tipo
LOCAL aClase := {"Zapatos","Zapatillas","Zapatones"} //array del 1° Combobox
//
LOCAL nPosCla := 1
LOCAL cClase := aClase[nPosCla] // Elemento del array ke aparece en el combo (posicion)
LOCAL aList := { {"Cuero","Sintetico","Mixto"},{"Nike","Reebook","Adidas","Converse"},;
{"Marca 1","Marca 2"} } // array del 2° Combobox "Bidimensional"
// (1) OJO-> Cantidad de elementos de los sub-array : aList[1]=3, aList[2]=4, aList[3]=2, o sea
// Si escoges Zapatillas, entonces nPosCla=2, por lo que aList[nPosCla] apunta a la segunda sub-
// matriz de aList ke contiene 4 elementos, debido a la variacion en la cantidad de elementos de
// cada sub-matriz, es ke lo redimensiono, en este caso a 4, porke... es la cantidad de elementos
// ke tengo en esa sub-matriz "LEN(aList[nPosCla])" = 4
LOCAL aTipo := {} // array ke va a contener en oCbx2, la seleccion de oCbx, ojo con (1)
LOCAL cTipo
// Caja de Dialogo ----------------------------------------------------
DEFINE DIALOG oDlg RESOURCE "FOLDER" TITLE "CALZADOS"
// recuerda ke se hace con ON CHANGE
REDEFINE COMBOBOX oCbx VAR cClase ID 27 ITEMS aClase OF oDlg UPDATE;
ON CHANGE (nPosCla:=ASCAN(aClase,cClase),; // encuentra el # de la eleccion
ASIZE(aTipo,LEN(aList[nPosCla]) ), ; // redimensiona el array al largo de la seleccion (1)
ACOPY(aList[nPosCla],aTipo,1),; // Copia los elementos de aList[nPoscla] en aTipo
oCbx2:SetItems(aTipo),; // setea los itemes de oCbx2 con el contenido de aTipo
oCbx2:Refresh(),; // refresca pa' ke no se olvide
Clase:=cClase) // guardamos en "Clase" la seleccion realizada en oCbx
REDEFINE COMBOBOX oCbx2 VAR cTipo ID 28 ITEMS aTipo OF oDlg UPDATE;
ON CHANGE(Tipo:=cTipo) // guarda en "Tipo" la seleccion realizada en oCbx2
ACTIVATE DIALOG oDlg NOWAIT CENTERED