FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Borrar Panel me sale Access Violation
Hola a todos,
tengo un problema bastante gordo, tengo una aplicacion que creo botones en tiempo de ejecucion y al boton le asigno una accion a cada uno de ellos hasta aqui bien, pero cuando tengo que borrar los botones para insertar los nuevo de tanto en tanto me da un Acess Violation siempre es diferente por norma... pero he estado buscando y mirando y si le quite este codigo no me da un access violation pero claro despues no me borra los botones... Procedure TGesVentasBar.BorrarPanelPersonal; var i: Integer; begin for i:= ComponentCount -1 downto 0 do begin if (Components[i].ClassType = TSpeedButton)and (TSpeedButton(Components[i]).Parent = Personal) then Components[i].Free; end; end; que solucion puedo hacer, para evitar que me salte cada 2 por 3 el access violation y pueda usar este codigo para borrar los iconos antes de volverlos a crear... SAludos. |
#2
|
||||
|
||||
Tal vez deberías "debuggar" ese código paso a paso para saber exactamente dónde salta.
Ayudaría también, por ejemplo, si subieras un pequeño proyecto con el código de generar los botones, junto con este de destruirlos. En cuanto al código que colocas, yo optaria (para asegurarme) de dividir la condición del IF en dos, y utilizar:
Para comprobar que las diferentes propiedades están asignadas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Hola LiAnTe-
Hola. Si los TSpeedButton están dentro de un TPanel llamado 'Personal' no es necesario recorrer todos los componentes del form para seleccionar aquellos componentes cuyo Parent sea 'Personal'. Podés buscar directamente dentro de él.
Si los TSpeedButtons tienen como Owner y Parent a 'Personal', no tiene por que arrojar ningun error. Saludos. Última edición por ecfisa fecha: 25-11-2010 a las 20:39:59. |
#4
|
|||
|
|||
Hola ecfisa,
el problema que me da con tu codigo cuando lo coloco es que no me borra nada de nada... Hola Neftali, el problema que me da con tu codigo es que cuando lo pongo me dice en el ultimo assignen propiedad no validad tipos diferentes... os pego la creacion de los boton asi, igual podais tener mas ideas pero me estoy volviendo loco intentando solventar el tema del violation y viene por el borrado de los componentes y creacion de nuevo...
|
#5
|
||||
|
||||
Cita:
Cuando creas los botones añade como Owner el contenedor "Personal".
Y luego para liberarlos puedes usar un código como este
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
|||
|
|||
Bien ahora me borra y me crea, pero me sigue dando el acces violation...
te pego el ultimo codigo.... Lo que hace el programa es crear un menu de personas al inicio cuando pulsas en una persona pues borra las personas y pone las opciones de la persona pulsada... pero al destruir y dibujar de nuevo me va saliendo un Access Violation... y ando muy loco buscando el problema... Ya agradecerte la ayuda que me estas prestando... este es el ultimo codigo que se utiliza.... es como un bucle pulso se crea formulario crea personal, pulsas sobre el y destruye botones de personal y crea los nuevo botones de opciones... retrocedes y creas de nuevo las opciones de personal. ( gente ).
no se si sera importante pero el panel de personal esta encima de un componente TPageControl y el panel persona es un TTabSheet. Saludos. |
#7
|
||||
|
||||
Hola LiAnTe-
Verás, acabo de compilar el código que dejaste en el hilo. Lo he hecho con Delphi 2010, y con la "sensibilidad" de excepciones al máximo. Y funciona perfecto! El código es correcto. Creo que si sigues teniendo este problema, la cosa puede venir por alguna falla en tu Delphi: alguna dll dañada, o algún conflicto de versiones. A mi me pasó algo parecido hace tiempo, y era porque había desinstalado Delphi 2009 y al utilizar Delphi 2007 había alguna clave de registro que se había quedado huérfana. Si necesitas más ayuda, mándame un privado. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Access Violation con DLL | emeceuy | Varios | 8 | 17-08-2007 21:57:55 |
access violation | chona | Varios | 2 | 31-10-2006 01:36:04 |
Access Violation | Carliviris | Varios | 5 | 12-05-2006 19:21:45 |
Access violation at .... | Perio | Varios | 5 | 07-02-2006 15:50:36 |
Access violation | Giasl | Varios | 6 | 07-05-2003 12:35:51 |
|