Clipper/FiveWin - Problemas con Combobox

 
Vista:

Problemas con Combobox

Publicado por Luis (4 intervenciones) el 16/10/2008 21:46:34
Hola Amigos :
Tengo este problema.
Tengo 03 combobox el primero escoge la opcion de que tipo de listado necesita
01 impresion general, 02 por distrito y 3 por urbanizacion
el 2do depende del primer COMBOBOX y
el 3ero depende del segundo COMBOBOX
cuando la opcion 03 (por urbanizacion) del primer COMBOBOX busca BUSIMPO() Y BUSIMP1()
pregunto si BUSIMP1() esta en el 02 combobox que aun no he ejecutado por se activa este
procedimiento? COMO SE ESTO? por que lo he rastreado por MSGALERT() como se ve en los mudulos. Como haría para que esto no ocurra y como hacer para que el:
COMBOBOX 01 coja una opcion y de esto dependa el COMBOBOX 02 y el COMBOBOX 03 dependa de la opción del COMBOBOX 02. Alguien puede ayudarme, muchas gracias. Con esto aclararé las dudas de Gabriel que me solicito las otras funciones. Saludos a todos.
Luis

//----------------------
STATIC FUNCTION ImpLista()
Local oSayItem[03], oCbx1, oCbx2, oCbx3, vtItem1, vtItem4, vtItem2, vtItem3, vNopcmb1, vNopcmb2, vNopcbus
Local vVCbx2[0],vVCbx3[0], vVCbx1:={"General","Distrito","Urbanización"}
DEFINE DIALOG oDlg RESOURCE "XXX"

REDEFINE SAY oSayItem[1] ID 107 OF oDlg

REDEFINE COMBOBOX oCbx1 VAR vtItem1 ITEMS vVCbx1 ;
ID 115 OF oDlg ;
STYLE CBS_DROPDOWN ;
ON CHANGE ( vNopcmb1 := oCbx1:nAt, msgalert(vtItem1), Busimpo(vNopcmb1,oCbx2,@vVCbx2,oSayItem[2],oSayItem[3]),.T. ) ;
VALID ( vtItem4 := vtItem1, .T. )

REDEFINE SAY oSayItem[02] ID 109 OF oDlg
REDEFINE SAY oSayItem[03] ID 112 OF oDlg

REDEFINE COMBOBOX oCbx2 VAR vtItem2 ITEMS vVCbx2 ;
ID 113 OF oDlg UPDATE ;
STYLE CBS_DROPDOWN ;
ON CHANGE ( vNopcmb2 := oCbx2:nAt, msgalert(vtItem2), Busimp1(vtItem2,@vVCbx3,oCbx3)) ;
VALID ( vtItem3 := vtItem2, .T. )

REDEFINE COMBOBOX oCbx3 VAR vtItem3 ITEMS vVCbx3 ;
ID 105 OF oDlg UPDATE ;
STYLE CBS_DROPDOWN ;
ON CHANGE ( vNopcmb3 := oCbx3:nAt ) ;
VALID ( vtItem4 := vtItem3, .T. )

REDEFINE BUTTON ID 106 OF oDlg ACTION ( ImprimList(vtItem2) )

REDEFINE BUTTON ID 102 OF oDlg ACTION ( oDlg:End() )

oSayItem[1]:cTitle := "Ordenar por:"

ACTIVATE DIALOG oDlg

RETURN NIL

//----------------------
STATIC PROCEDURE Busimpo(vNopcmb,oCbx2,vVCbx2,oSay2,oSay3) // ,oCbx3 ,vVCbx3
msgalert("busimpo")
oCbx2:setitems({})
Do Case
Case vNopcmb = 1
MSGALERT("Esto es el :"+Str(vNopcmb,2))
Case vNopcmb = 2
n := Zonas->(RecCount())
ASIZE(vVCbx2,n)
AFILL(vVCbx2," ")
msgalert(len(ASIZE(vVCbx2,n)))
n := 1
Do while !ZONAS->(eof())
vVCbx2[n]:=OEMTOANSI(ZONAS->CODIGO+"-"+RTRIM(ZONAS->DISTRITO))
ZONAS->(dbSkip())
n++
Endd
oSay2:cTitle := "Distrito :"
oCbx2:SetItems(vVCbx2)
Case vNopcmb = 3
n := Zonas->(RecCount())
ASIZE(vVCbx2,n)
AFILL(vVCbx2," ")
msgalert(len(ASIZE(vVCbx2,n)))
n := 1
Do while !ZONAS->(eof())
vVCbx2[n]:=OEMTOANSI(ZONAS->CODIGO+"-"+RTRIM(ZONAS->DISTRITO))
ZONAS->(dbSkip())
n++
Endd
oSay2:cTitle := "Distrito :"
oSay3:cTitle := "Urbanización :"
oCbx2:SetItems(vVCbx2)
Endc
RETURN NIL

//----------------------
STATIC FUNCTION Busimp1(vtItem2,vVCbx3,oCbx3)
msgalert("bus1111")
msgalert(vtItem2)
oCbx3:setitems({})
n := MAEURB->(RecCount())
ASIZE(vVCbx3,n)
AFILL(vVCbx3," ")
msgalert(len(ASIZE(vVCbx3,n)))
n := 1
Do while !MAEURB->(eof())
If MAEURB->Codigo = Subs(vtItem2,1,3)
vVCbx3[n]:=OEMTOANSI(RTRIM(MAEURB->DETALLE))
Endi
MAEURB->(dbSkip())
n++
Endd
oCbx3:SetItems(vVCbx3)
RETURN NIL
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