<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.6000.16850" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Amigos,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Estoy trabajando un programa sencillo, pero me he
trancado en un problema con el combobox.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Estoy cargando un combobox con data, alli coloco la
descripcion y tambien creo un array global al formulario donde guardo el id de
la data.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Digamos algo asi</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>var<BR> TxtQuery: String;<BR> nCont:
Integer;<BR>begin<BR> TxtQuery:='Select emp_id,emp_razsoc from
empresa';<BR> DataModule1.lstempresa.SQL.Text:=TxtQuery;<BR>
DataModule1.lstempresa.Open;<BR> cboempresa.Items.Clear;<BR> if
DataModule1.lstempresa.RecordCount >0 then<BR>
begin<BR> SetLength(aItems,
DataModule1.lstempresa.RecordCount
);<BR>
nCont:=1;<BR> while Not
DataModule1.lstempresa.EOF Do<BR>
begin<BR>
cboempresa.Items.Add(DataModule1.lstempresa.FieldByName('emp_razsoc').AsString);<BR>
<STRONG>aItems[nCont]:=DataModule1.lstempresa.FieldByName('emp_id').AsString;
//array creado para guardar el ID de
empresa.<BR></STRONG>
DataModule1.lstempresa.Next;<BR>
nCont:=nCont + 1;<BR>
end;<BR> end;<BR>
DataModule1.lstempresa.Close; </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2><STRONG>Hasta alli todo OK, el punto esta cuando
realizo la sinconizacion Combobox + Array desde el evento OnChange del
combobox.</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>if (cboempresa.ItemIndex>0)
then<BR> begin<BR>
DataModule1.lstcencosto.Close;<BR>
DataModule1.lstcencosto.Params.ParamByName('ID').AsString:=
aItems[cboempresa.ItemIndex];<BR>
DataModule1.lstcencosto.Open;<BR>
DataModule1.lstcencosto.Refresh;</FONT></DIV>
<DIV><FONT face=Arial size=2> // monitor de
valores<BR> stdato.caption:=aItems[cboempresa.ItemIndex]
;<BR> end; </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Como veran este me refresca otro DataSet con
informacion x empresa, pero el combobox no se ubica en la posicion que deberia
ser, siempre se salta un registro.Por tanto, el codigo de empresa no siempre es
el real.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Es problema de logica o no debi usa el evento
OnChange si no otro ?.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>No uso el DBCombobox ni el DBLookupCombox
porque no despliegan la lista, asi que estoy usando algo que siempre usaba en
VB6.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Saludos.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>FG</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV></BODY></HTML>