Yo también he probado tu código y funciona perfectamente.
¿No tendrás por ahí escondido algún método de dibujado o algo similar que esté accediendo a los controles del panel y que no esté comprobando la existencia de los mismos?
Un error bastante frecuente sería escribir algo como esto:
ActiveControl:=Personal.Controls[0]
sin comprobar antes si Personal.Controlcount > 0
Otra opción sería que después de llamar a BorrarPanelPersonal, hagas algo más...
Usa mensajes:
ShowMessage('empiezo a borrar los botones')
ShowMessage('he terminado de borrar los botones')
ShowMessage('voy a hacer otra cosa')
para saber dónde salta la liebre.
También puedes usar un manejador de excepciones global al programa (Application.OnException), dónde puedes investigar un poco de dónde viene el fallo, usando datos del objeto exception que te llegue.
|