En mi diálogo existe un combobox, el cual debo poder cambiar según el nombre de la ciudad, es decir, si digito "SANTIA", inmediatamente debe posicionarme en la ciudad de "SANTIAGO", el tema es que esto funciona solamente con el combobox de pelles c con el atributo sort, el cual me arroja como resultado cualquier cosa, es decir, si digito "SANTIA", este me devuelve "IQUIQUE". Existe alguna forma de hacer esto, pero con el valor correcto del item?
Codigo Fuente:
Code: Select all
Function New_City()
Local o4001,o4002,o4003,o4004,o4005,o4006,o4007,o4008,o1001,o1002,oDlg,oImg,oBrush,lSave
Public Codigo:=Space(5),Descrip:=Space(40),Code_Planta:=Space(5),D_Planta:=Space(40),aPlanta:={},aCodes:={}
Set Resources To "AztecCode.dll"
DEFINE DIALOG oDlg RESOURCE "AGREGAR_DESTINO" Title "Crear Nueva Ciudad" Font oFont Color CLR_BTNFACE ,CLR_BTNFACE
oQry[21] := oConected:Query( "SELECT * FROM destinos ORDER BY Planta" )
D_Planta := oQry[21]:Planta+" "+Str(oQry[21]:Codigo_Planta,5)
Do While !oQry[21]:Eof()
aAdd(aPlanta,oQry[21]:Planta+" "+Str(oQry[21]:Codigo_Planta,5))
oQry[21]:Skip(1)
EndDo
oQry[21]:GoTop()
aSort(aPlanta,,, { |x, y| UPPER(x[1]) < UPPER(y[1]) })
Redefine Say o4001 Id 4001 Of oDlg Font oFont Color CLR_BLACK ,CLR_BTNFACE
Redefine Say o4002 Id 4002 Of oDlg Font oFont Color CLR_BLACK ,CLR_BTNFACE
Redefine Say o4003 Id 4003 Of oDlg Font oFont Color CLR_BLACK ,CLR_BTNFACE
Redefine Get o4004 Var Codigo Picture "@ #####" Id 4004 Of oDlg Valid (Valida_Cod_City(Codigo,oDlg))
Redefine Get o4005 Var Descrip Picture "@K!" Id 4005 Of oDlg Valid (!Empty(Descrip))
Redefine Get o4006 Var Code_Planta Picture "@ #####" Id 4006 Of oDlg Update
REDEFINE COMBOBOX o4007 VAR D_Planta PICTURE "@K!" ; // esto es lo que intento con el combobox
ITEMS aPlanta ID 4007 OF oDlg UPDATE ; // Pero, me arroja cualquier resultado, aún ordenando el array que contiene los items
ON EDIT CHANGE (o4007:Refresh(),Busca_Code_Planta(D_Planta,oDlg)) ; // Alguna idea?
ON CHANGE (Busca_Code_Planta(D_Planta,oDlg),o4006:Refresh(),oDlg:Update())
// Valid (Busca_Code_Planta(D_Planta,oDlg))
o1001 := Cancel := TBtnBmp():ReDefine( 1001,,, "Save.Bmp",,, {|Self|(lSave:=.T.,oDlg:End())}, oDlg, .T.,, .F.,,,,,,,, .T.,,, .T. )
o1002 := Cancel := TBtnBmp():ReDefine( 1002,,, "Volver.Bmp",,, {|Self|(lSave:=.F.,oDlg:End())}, oDlg, .T.,, .F.,,,,,,,, .T.,,, .T. )
o4004:bKeyDown:={|nKey| IIF( nKey==27,(oDlg:End,lSave:=.F.), )}
ACTIVATE DIALOG oDlg Centered
IF lSave
oClientsQry:GetBlankRow(.F.)
oClientsQry:Codigo_Planta:=Codigo
oClientsQry:Planta :=Descrip
oClientsQry:Save()
ENDIF
Return Nil
Function Busca_Code_Planta(Codigo,oDlg)
Local lRet:=.F.,cOrder:="Codigo_Planta",nSeek,cWhere:="Codigo_Planta="+Right(Codigo,5),I
oQry[21]:SetWhere(cWhere)
*MsgAlert(cWhere)
*xBrowse(oQry[21])
IF oQry[21]:nRecCount<>0
lRet:=.T.
Code_Planta:=oQry[21]:Codigo_Planta
oDlg:Update()
Else
lRet:=.F.
MsgAlert("Sr. Usuario, la Planta Especificada NO EXISTE...","Advertencia...")
ENDIF
oQry[21]:SetWhere("")
Return lRet