![]() |
Ayuda con ControlCount
Hola amigos de la Comunidad de Delphi!, Hoy los molesto para que me ayuden con un problemita que tengo a la hora de liberar unos objetos de mi formulario aqui les muestro el codigo que estoy utilizando
for I:=0 to (sender as TPanel).ControlCount - 1 do If (sender as TPanel).Controls[i].Name[1]='B' then (sender as TPanel).Controls[i].free; Pero no me elimina los objetos y me genera una Exception de EAccesViolation. he intentado varias cosas pero nada, por eso prefiero preguntarle a los que saben ;) . Muchas Gracias!! |
Utiliza TAG's en tus mensajes, se leen mejor (compara tu código con el mío):
Modifica el código y cambialo por éste:
|
¿Por que liberas los controles de esta forma?
¿No confias en que se liberarán automaticamente cuando se libere el dueño? :confused: |
Cita:
|
Cita:
If (sender as TPanel).Controls[i].Name[1]='B' then |
Los controles, ¿los creaste tú mismo en código? De ser así, ¿estás seguro de haberles asignado algo a la propiedad Name?
// Saludos |
Cita:
Deberías ejecutarlo paso a paso y ver en ésta línea que es lo que no está asignado. Por ejemplo, se me ocurre que si el control no tienen nada en la propiedad Name (cadena vacía), al intentar acceder a la posición [1] va a dar error (Access Violation). |
Saludos
Creo que si se muestra el codigo para crear los controles, se podria solucionar mas facil.! |
Cita:
yo le coloco If (sender as TPanel).Controls[i].Name[1]<>'' Then If (sender as TPanel).Controls[i].Name[1]='B' Pero Igual |
Cita:
|
Listo Amigos muchas Gracias
for I:= ((sender as TPanel).ControlCount - 1) downto 0 do If (sender as TPanel).Controls[i].Name<>'' then If (sender as TPanel).Controls[i].Name[1]='B' then (sender as TPanel).Controls[i].free; mi error era que estaba preguntando If (sender as TPanel).Controls[i].Name[1]<>'' then y eso esta errado porque si esta '' es imposible que consiga algo en este indice [1]; Muchas Gracias :D |
Te recomiendo no abusar tanto del operador as. Si como te indicó el amigo Neftali compruebas que Sender es un TPanel por medio de:
Entonces ya puedes usar directamente:
Con esto ganarás en velocidad y eficiencia. Saludos |
Amigo JerS. Te llamo a usar las etiquetas [code], [delphi], [sql] o [php] para publicar trozos de código. Ya con tu "edad" en los foros, resulta inaceptable que no la uses aún.
Mas información, aqui. Hasta luego. ;) |
La franja horaria es GMT +2. Ahora son las 10:33:07. |
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