<!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>