FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
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...Gracias
Saludos |
|
|
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 |
|