Code: Select all | Expand
#include "fivewin.ch"
function Prue_Combo()
local oDlg, cCiudad, cComuna, oComuna
local aCiudades, aComunas, aArr, nZ1, nZ2, encon,i, nZona
aArr := CrearArrays2()
aCiudades := aArr[1]
aComunas := aArr[2]
cCiudad := 'TAMARUGAL' // <----- Aqui le asigno un valor cualquier, donde quiero que se ubique
cComuna := 'COLCHANE' // <----- Aqui le asigno un valor cualquier, donde quiero que se ubique
nZ1:=0
nZ2:=0
encon:=.F.
FOR i := 1 to len(aComunas)
nZona := ascan(aComunas[i],Trim(cComuna))
IF nZona > 0
encon := .T.
nZ1:=i
nZ2:=nZona
ENDIF
NEXT i
IF !encon
MsgInfo("No lo encontro")
ENDIF
DEFINE DIALOG oDlg FROM 1,1 TO 300, 600 PIXEL TITLE "Seleccione Ciudad y Comuna"
@ 20, 10 COMBOBOX cCiudad ITEMS aCiudades SIZE 130,200 PIXEL OF oDlg ;
ON CHANGE ( oComuna:SetItems( aComunas[ AScan( aCiudades, cCiudad ) ] ), oComuna:Set( oComuna:aItems[ 1 ] ) )
@ 20,160 COMBOBOX oComuna VAR cComuna ITEMS aComunas[ 1 ] SIZE 130,200 PIXEL OF oDlg
@ 100,(300/2)-(100/2) BUTTON "Mostrar seleccionado" SIZE 100, 20 PIXEL OF oDlg ;
ACTION MsgInfo( cCiudad, cComuna )
ACTIVATE DIALOG oDlg CENTERED ON INIT (oComuna:SetItems( aComunas[ nZ1] ), oComuna:Set( nZ2 ))
return nil
Function CrearArrays2()
local aArray1 := {}, aArray2 := {}, aItems := {}, nVar, n
local aCiudades:={ { 1,'ARICA'},;
{ 2,'PARINACOTA'},;
{ 3,'IQUIQUE'},;
{ 4,'TAMARUGAL'},;
{ 5,'ANTOFAGASTA'},;
{ 49,'SANTIAGO'},;
{ 54,'TALAGANTE'} }
local aComunas:= { { 1,'ARICA'},;
{ 1,'CAMARONES'},;
{ 2,'PUTRE'},;
{ 2,'GENERAL LAGOS'},;
{ 3,'IQUIQUE'},;
{ 3,'ALTO HOSPICIO'},;
{ 4,'POZO ALMONTE'},;
{ 4,'CAMIÑA'},;
{ 4,'COLCHANE'},;
{ 4,'HUARA'},;
{ 4,'PICA'},;
{ 5,'ANTOFAGASTA'},;
{ 5,'MEJILLONES'},;
{ 5,'SIERRA GORDA'},;
{ 5,'TALTAL'} }
// Aquí se generan los nuevos Array para hacer los filtro del combobox
For n := 1 To Len(aCiudades)
aadd(aArray1, aCiudades[n,2])
nVar := aCiudades[n,1]
aItems := {}
AEval( aComunas, {|a| if(a[1] == nVar, aadd(aItems, a[2]),) } )
if( len(aItems) = 0, aadd(aItems,"Sin Valor"), nil )
aadd(aArray2, aItems)
Next
SysRefresh()
Return { aArray1, aArray2 }