Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2007
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
Exception class EInvvalidOperation...

Estoy creando un sencillo componente descendiente de TCustomComboBox; intento cargar en un combo las provincias o las regiones españolas ordenadas alfabéticamente.

Al cargar los nombres (items.loadFromStream) me da el error: Exception class EInvalidOperation with message 'Control' has no parent window

He aquí el código fuente:

Código Delphi [-]
implementation

{$R *.dfm}
{$R hispania.res}

  // TCustomComboHispania
  type
    TCustomComboHispania = class(TCustomComboBox)
    private
      FProvincias : boolean;
      procedure SetProvincias(Value : boolean);
    protected
    public
      constructor Create(AOwner : TComponent); override;
      property Provincias : boolean read FProvincias write SetProvincias; 
    published
      
  end;

  constructor TCustomComboHispania.create(AOwner : TComponent);
  begin
    inherited Create(AOwner);
    style := csDropDownList;
    ShowHint := True;
    Sorted := false;
    Provincias := True;
  end;

  procedure TCustomComboHispania.SetProvincias(Value : boolean);
    var
     R : TResourceStream;
  begin
    FProvincias := Value;
    R := TResourceStream.create(hInstance, 'PROVINCIAS_ESPANNOLAS', RT_RCDATA);
    try
      items.loadFromStream(R);
    finally
      R.Free;
    end;

  end;

 /////////////////////////////////////////////////////////////////////////////

 // PROBANDO EL OBJETO ANTES DE INSTALARLO EN LA PALETA DE COMPONENTES

 var
  Combo : TCustomComboHispania;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Combo := TCustomComboHispania.create(form1);
  Combo.left := 30;
  Combo.Top := 30;
  Combo.parent := self;
end;

end

Última edición por dec fecha: 01-10-2007 a las 23:02:50.
Responder Con Cita
  #2  
Antiguo 03-10-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
El problema, está en que intentas cargas los items antes de que esté "configurado del todo".

Haciéndolo así, sí que funciona (debes añadir los items en "CreateWnd"):
Código Delphi [-]
implementation

{$R *.dfm}
{$R hispania.res}

  // TCustomComboHispania
  type
    TCustomComboHispania = class(TCustomComboBox)
    private
      FProvincias : boolean;
      procedure SetProvincias(Value : boolean);
    protected
      procedure CreateWnd; override; // añade esto
    public
      constructor Create(AOwner : TComponent); override;
      property Provincias : boolean read FProvincias write SetProvincias; 
    published
      
  end;

  constructor TCustomComboHispania.create(AOwner : TComponent);
  begin
    inherited Create(AOwner);
    style := csDropDownList;
    ShowHint := True;
    Sorted := false;
  end;

  procedure TCustomComboHispania.CreateWnd;
  begin
    inherited CreateWnd;
    Provincias := True; // aqui si puedes, decirle que añada las provincias
  end;

  procedure TCustomComboHispania.SetProvincias(Value : boolean);
    var
     R : TResourceStream;
  begin
    FProvincias := Value;
    R := TResourceStream.create(hInstance, 'PROVINCIAS_ESPANNOLAS', RT_RCDATA);
    try
      items.loadFromStream(R);
    finally
      R.Free;
    end;

  end;

 /////////////////////////////////////////////////////////////////////////////

 // PROBANDO EL OBJETO ANTES DE INSTALARLO EN LA PALETA DE COMPONENTES

 var
  Combo : TCustomComboHispania;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Combo := TCustomComboHispania.create(form1);
  Combo.left := 30;
  Combo.Top := 30;
  Combo.parent := self;
end;

end

Última edición por xEsk fecha: 03-10-2007 a las 02:01:44.
Responder Con Cita
  #3  
Antiguo 03-10-2007
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
¡Gracias, xEsk; ésa es la solución!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Class Helpers vtdeleon Noticias 7 12-04-2008 03:50:08
Class jakuna OOP 4 26-08-2007 01:42:20
Problemas con ActiveX: Exception class EOleSysError TriLoCBA OOP 0 16-04-2006 00:43:09
Error en previsualización:"Error raised exception class..." SGL Impresión 1 22-06-2005 12:28:16
Exception class EAccess violation... Giniromero Conexión con bases de datos 1 13-06-2003 12:47:38


La franja horaria es GMT +2. Ahora son las 20:24:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi