![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Error "A control cannot have itself as its parent"
Buenos dias, les comento... estoy tratando de crear objetos(botones, edit y demas cosas que se me ocurran) en una grilla.. cuando ejecuto el programa recibo este error al hacer la llamada a mi procedimiento
"A control cannot have itself as its parent" la llamada es Código:
stgboton(1, StringGrid1, 'hola', EventoClick, 5 ); Código:
procedure stgboton(objeto:integer; Grid : TStringGrid; txtcaption:string; evento:TNotifyEvent; columna:integer);
var
i: Integer;
Btn: TObject;
begin
for i := Grid.FixedRows to Grid.RowCount -2 do
begin
if objeto = 1 then
begin
with TButton (btn) do
begin
Create(nil);
Caption := txtboton;
Width := 87;
Name := 'Button' + IntToStr(i);
BoundsRect:= Grid.CellRect(Columna, i);
ControlStyle := [csClickEvents];
onclick := evento;
Tag := i;
parent:= grid;
end;
Grid.Objects[Columna,i] := Btn;
end;
end;
end;
|
|
#2
|
||||
|
||||
|
Hola
Porque pones TButton(btn)??? No veo que crees el objeto (btn) en ninguna parte.
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar. Antonio Machado |
|
#3
|
||||
|
||||
|
No estas asignando ningun valor a la variable Btn, a la que luego le aplicas un casting a TButton usando el with
|
|
#4
|
||||
|
||||
|
De cualquier forma el no instanciar una variable generaría un Access Violation #000000... no un "A control cannot have itself as its parent"
Yo creo (no tengo compilador a la mano) que el problema está en la utilizacion del With (Ya nuestro amigo Al Gonzalez en algún hilo habló de su uso y abuso) Asumo que al hacer el Create(nil); quieres asignarlo a tu btn... pues no funciona asi.
La linea create dentro del with equivale a hacer:
instancia un objeto pero no lo asigna a la variable btn. Lo que está ocurriendo es que dentro del with está asignando las variables a otro objeto, y segun parece, se está haciendo al StringGrid, de forma que en la linea parent:= grid, genera el error que te está enviando Creo que deberias hacer algo como:
Saludo, |
|
#5
|
||||
|
||||
|
Cita:
Es eso, o bien en esa ejecucion se presento esa oportunidad y btn podria apuntar a cualquier lado |
|
#6
|
||||
|
||||
|
Cita:
es incorrecta, usando with podrías hacer: Por otro lado usar como el tipo de parámetro a la clase TObject va a limitar las propiedades disponibles y la totalidad de los eventos. Te pongo un ejemplo usando un parámetro con otro tipo de clase que te va a permitir crear muchos controles (no los que se te ocurran ), pero sí unos cuantos descendientes ella:
Salida: ![]() Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#7
|
|||
|
|||
|
Muchas gracias muchachos, tengo ganas de llorar de la emoción!
El ejemplo de ecfisa y la correccion de [gatosoft] funcionaron de 10...GraciasSaludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Usar TServerSocket y TClientSocket para enviar "streams" más o menos "grandes" | dec | Internet | 9 | 04-08-2015 16:11:50 |
| EInvalidOperation with message 'Control" has no parent | mrnovice | OOP | 4 | 18-08-2008 18:53:05 |
| Cómo acceder a las propiedades de un "Parent" | NeoAnderson | API de Windows | 14 | 12-02-2008 21:13:46 |
| Parent, ParentWindow, objetos y el error Control has no parent Window | dec | Varios | 18 | 07-08-2007 15:02:01 |
| Necesito llamar a métodos de clases "hija" desde su clase "padre" | Flecha | OOP | 17 | 20-04-2007 00:03:53 |
|