Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Crear DBComobox con items (https://www.clubdelphi.com/foros/showthread.php?t=14222)

oliverinf 14-09-2004 01:18:50

Crear DBComobox con items
 
Hola a todos, deseo crear un componente que extienda a TDBCombobox, lo que quiero hacer es que ese nuevo componente tenga en la propiedad Items unos items por defecto.
Lo que hice fue heredar de TDBCombobox y sobreescribir el método Create, pero cuando habilito las líneas en Items.Add('Item X'), y cuando lo tiro sobre un form me aparece el error "Control '' has no parent window". Si las comento, anda bien pero no tengo los items.
La primera línea del método sobreescrito es inherited Create(AOwner);
En que me estoy equivocando?
Espero que me puedan dar una mano.

Desde ya muchas gracias.

Guillermo

Neftali [Germán.Estévez] 14-09-2004 10:09:45

Redefine en la parte Public el constructor de la siguiente forma:
Código Delphi [-]
constructor Create(AOwner: TComponent); override;

y en la implementación de ésta forma:

Código Delphi [-]
  // Método padre
  inherited;
  // Rellenar ítems
  Self.Items.Add('Lunes');
  Self.Items.Add('Martes');
  Self.Items.Add('Miercoles');
  ...

Hace poco hice algo similar y debe funcionar perfectamente.

oliverinf 14-09-2004 13:58:36

Hola, muchas gracias por tu respuesta. Hice exactamente lo que me indicás y sigue apareciendo el mismo error cuando tiro el componente sobre un form.
Otra dato, si utilizo otras propiedades como Style o Text, también tira el error.

Saludos.

Guillermo

Neftali [Germán.Estévez] 14-09-2004 15:43:48

Cierto, lo he probado y efectivamente "escupe" ese error. Ahora mismo no tengo claro pq es y no tengo mucho tiempo para mirarlo :( a ver si alguien te puede echar un cable por ese camino.
Una solución mientras tanto es redefinir el método Loaded; Éste no da error, pero tiene el inconveniente de que los elementos que añadas no se ven en diseño, se añaden durante la ejecución.

Código Delphi [-]
procedure Loaded; override;

y la implementación:

Código Delphi [-]
  // Método heredado
  inherited;
  // Añadir los elementos predefinidos
  Self.Items.Add('Lunes');
  Self.Items.Add('Martes');
No es la mejor solución, pero te da un poco de tiempo mientras investigas.

oliverinf 14-09-2004 17:20:21

Gracias. Apenas lo resuleva, si lo logro, les aviso.

Saludos.

Guillermo


La franja horaria es GMT +2. Ahora son las 02:51:51.

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