Ver Mensaje Individual
  #8  
Antiguo 20-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
  {
    Liberar aquí los objetos
  }

  inherited;
end;

// Saludos
Responder Con Cita