FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Array de controles - Control has no parent window
Hola,
Alguien sabe cual es la forma correcta de definir un array de controles. Algo asi como:
Esa definición esta presente en protected de una clase X que deriva de TPanel. Ahora bien, en Create y Destroy tengo el siguiente codigo: Create:
Destroy:
como podran notar en Create llamo a un procedimiento CreateObject que se encuentra declarado en Private dentro de la clase. El unico objectivo es crear los controles adiciones, que en este caso en particular son 8 etiquetas (TLabel). El codigo es el siguiente :
En Destroy llamo a otro procedimiento RemoveObjects declarado tambien el Private que lo unico que hace es destruir los objectos que han sido creados.
Ahora bien...Cual es mi problema. Cuando intento pegar el componente dentro de la Form, delphito me lanza un cuadro de dialogo con lo siguiente : Control has no parent window El objetivo de usar array es unicamente para poder tratarlos por lotes los controles TLabel. ¿Alguien sabe a que se debe este problema? Saludos desde Chile. |
#2
|
||||
|
||||
Cita:
Para el uso de controles... un TobjectList sería más cómodo. Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
||||
|
||||
Creo que el problema está en el procedimiento CreateObject, concretamente aquí:
Con el "with" estas dando a entender que utilice LabD[i], así que en la asignación que hay a continuación: en realidad lo que estás haciendo es O puede que no, no lo he comprobado, pero es lo que se me ha ocurrido. De todas formas, la sugerencia de utilizar un TObjectList es buena. |
#4
|
|||
|
|||
Hola, bueno realice el cambio en el codigo para probar, las lineas me quedaron asi:
Lo compile y lo volvi a colocar dentro de la Form obteniendo el mismo resultado "Control has no parent window" . Tengo que decir ademas, que tengo 4 botones definidos en un array cuya creacion no da problemas. con el codigo:
me tiene loco este maldito problema. Ya llevo mas de 5 horas cascandome la cabeza, la clase la hago una y otra vez obteniendo el mismo resultado. Estoy usando Delphi 2005 Professional con el Update3 A todo esto de que forma trabaja TObjectList? Gracias por su tiempo, saludos |
#5
|
||||
|
||||
Yo creo que hay algo de código que no nos pones y que es el causante del error.
Ahora bien, ya te han dicho que posiblemente quien se queja de no tener padre sea el panel y no las etiquetas. Puedes salir de dudas asignando la propiedad Name, tanto del panel como de las etiquetas y demás controles que crees, al principio del constructor, inmediatamente después de inherited. De esa forma, el mensaje de error dirá el nombre de la componente que da el problema. Por otra parte puedes hacer una depuración del código de tu componente. Intenta primero crear una componente en tiempo de ejecución y mira si te da el mismo error; así sabrás exactamente en qué línea se produce. Si eso no da resultado entonces el error sólo se produce en tiempo de diseño, lo cual hace un poco más difícil la depuración, pero puede hacerse. Ahora, cambiando un poco de tema. Self no es una propiedad, sino un parámetro (escondido) que se pasa a cualquier método de un objeto, de manera que lo que se indica del with, no aplica. Self siempre será el objeto al que pertenece el método. Finalmente, si el número de etiquetas es fijo, yo no me complicaría usando un TObjectList; te hará más difícil la escritura al tener que hacer moldeos de tipo para ajustar las propiedades de sus elementos. // Saludos |
#6
|
|||
|
|||
Como bien te dijeron antes, el problema es que el panel no tiene Owner en el constructor.
Lo que puedes hacer es quitar la creación de etiquetas del Create. Luego sobreescribes el método Loaded:
Loaded se ejecuta cuando el componente ya está creado e insertado en el Form, así ya tiene Owner. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
error con el parent window | antonio peña | Varios | 1 | 04-10-2006 10:18:50 |
QReport has no parent window | david duarte | Impresión | 1 | 19-01-2006 15:06:07 |
Ayuda: Control Has No Parent Window | pelaorb68 | Varios | 10 | 20-12-2005 20:36:26 |
Como Asignar Variable Tipo Array de Tform a otro Array del Mismo tipo | morfeo21 | Varios | 5 | 17-08-2004 17:39:51 |
Opciones de Parent | pepelu1975 | OOP | 7 | 26-05-2004 18:35:36 |
|