Hola Ignacio.
Podrías cargar el ComboBox desde el procedimiento directamente con el query:
Código Delphi
[-]
procedure TfrmElegirEmpresa.CargarEmpresas(AQuery: TZQuery; AComboBox:TComboBox);
begin
AQuery1.Connection := frmTablas.ConnectionJHL;
AQuery.SQL.Text:='SELECT * FROM TABLA_EMPRESAS';
AQuery.Open;
while not AQuery.Eof do
begin
AComboBox.Items.AddObject(AQuery.FieldByName('razon_social').AsString,
TObject(AQuery.FieldByName('cod_empresa').AsInteger));
AQuery.Next;
end;
AQuery.Close;
AComboBox.Sorted:= True;
end;
Aquí ya tendrías cargado en el ComboBox la razón social y el código. (ordenado por razón social)
Luego para obtener el código de empresa sólo basta con hacer:
Código Delphi
[-]
procedure TForm1.cmbEmpresaChange(Sender: TObject);
var
cod: Integer;
begin
cod:= Integer(cmbEmpresa.Items.Objects[cmbEmpresa.ItemIndex]);
ShowMessage(IntToStr(cod));
...
end;
Si cod_empresa es de tipo string, tendrías que cambiar:
Código Delphi
[-]
TObject(AQuery.FieldByName('cod_empresa').AsInteger)
TObject(AQuery.FieldByName('cod_empresa').AsString)
Y en el evento cmbEmpresaChange, cambiar el tipo de la variable cod y quitar la conversion.
Saludos.