Pero tú estás creando un objeto TStrings distinto.
Buscando en los foros de Borland veo que el problema al parecer radica en que los strings de un combobox realmente pertenecen al sistema y para cuando se llama a Destroy, estos items ya no existen. Al no existir, el control intenta crearlos de nuevo, lo cual ya no puede hacer porque el Handle del combo ya no existe.
Vi una solución que al parecer funciona pero habrá que probarla más a fondo. Consiste en definir un manejador para el mensaje WMDestroy y liberar ahí los objetos:
Código Delphi
[-]
type
TCustomComboIData = class(TComboBox)
private
procedure WMDestroy(var Msg: TWMDestroy); message WM_DESTROY;
end;
implementation
procedure TCustomComboIData.WMDestroy(var Msg: TWMDestroy);
begin
inherited;
end;
// Saludos