Clipper/FiveWin - combos

 
Vista:

combos

Publicado por RUBEN MUCINO (25 intervenciones) el 28/04/2007 16:46:20
TENGO QUE FILTRAR INFORMACION USANDO COMBOS Y NO SE COMO.

POR EJEMPLO.
SI YO TENGO UN COMBO1 CON LAS SUBDIRECCIONES DE UNA EMPRESA Y ELIGO UNA EN EL COMBO2 DEBE DARME SUS GERENCIAS Y ASI CON LAS OTRAS DIRECCIONES SIN SALIRME DEL MISMO CUADRO DE DIALOGO.

AGRADECERE SU AYUDA.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:combos

Publicado por Gabriel Pascual (913 intervenciones) el 29/04/2007 21:12:15
Un pelin complejo pero nada del otro mundo.

Este ejemplo es tomado del codigo del Maestro Rene Flores:

aCombo1 := {"Ventas","Compras","Cuentas por Pagar","Cuentas por Cobrar"}

aCombo2[1] := {"Nacionales", "Internacionales","Gubernamentales","Otras"}
aCombo2[2] := {"Nacionales","Internacionales"}
aCombo2[3] := {"Por compras","Por consignación"}
aCombo2[4] := {"15 dias","30 dias", "45 dias","Incobrables }

nCombo1 := 1
nCombo2 := 1

REDEFINE COMBOBOX oCombo1;
VAR nCombo1;
ITEMS aCombo1 ID 101 OF oDlg;
ON CHANGE (nCombo2 := 1,
oCombo2:SetArray(aCombo2[nCombo1],;
oCombo2:Refresh()) UPDATE

REDEFINE COMBOBOX oCombo2;
VAR nCombo2:
ITEMS aCombo2[1] ID 102 OF oDlg UPDATE

Listo, la mecanica es simple, cuando cambia oCombo1, es decir cada vez que seleccionas un item del primer combo, el evento OnChange de este hace lo siguiente:
setea la variable del segundo combo a 1, para que apunte al primer elemento del array, luego, usando el metodo ::SetArray() de la clase combo, cambia el array a desplegar en oCombo2, usando para esto el valor actual de "nCombo1", por ejemplo si te mueves al segundo elemento del combo1, el valor de nCombo1 es igual a 2, por lo tanto el array que se utilizara en el Combo2 sera aCombo2[2], como te haz movido en el combo1, se ha disparado el evento ONCHANGE de este, y entoces se establecen los nuevos valores del combo2 y luego simplmente un ::Refresh() re pinta el combo 2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar