[Lazarus-es] Load combobox

Jesus Reyes jesusrmx en yahoo.com.mx
Mar Jun 16 05:25:15 CEST 2009


>        
> SetLength(aItems, DataModule1.lstempresa.RecordCount);
>         
> nCont:=1;
> while Not DataModule1.lstempresa.EOF Do       
> begin
>cboempresa.Items.Add(DataModule1.lstempresa.FieldByName('emp_razsoc').AsString);
>      
> aItems[nCont]:=DataModule1.lstempresa.FieldByName('emp_id').AsString; 


Suponiendo que emp_id es de tipo entero quizas puedas hacer algo como esto:

cboEmpresa.Items.AddObject(
  DataModule1.lstempresa.FieldByName('emp_razsoc').AsString,
  TObject(PtrInt(DataModule1.lstempresa.FieldByName('emp_id').AsInteger))
);

De tal manera que cuando uses OnChange u OnSelect del combo y necesites el valor del emp_id, puedes recuperarlo con:

Id := PtrInt(cboEmpresa.Items.Objects[cboEmpresa.ItemIndex]));

De esta forma y al costo del feo casting te ahorras algo de codigo y te evitas el manejo del array que como has comprobado puede llegar a causar confusion al tener que manter paralelamente sincronia entre los elementos.

Saludos.

Jesus Reyes A.



      ¡Obtén la mejor experiencia en la web! Descarga gratis el nuevo Internet Explorer 8. http://downloads.yahoo.com/ieak8/?l=mx




More information about the Lazarus-es mailing list