![]() |
ERROR con formulario showmodal
Hola a todos y les agradecería que me ayudaran con un problemilla que fijo es una tontería pero que me trae locooooo.
Mi problema es que abro un formulario,donde introduzco una nueva provincia, con showmodal desde otro formulario. El formulario "showmodal" se abre bien, pero el problema viene cuando el padre tiene que evaluar si ha devuelto mrok o mrcancel. me sale el típico mensaje de "acces violation", ya he comprobado que los botones devuelven mrok y mrcancel. Dentro de mi locura transitoria he intentado incluso abrir el formulario con show y no con showmodal(evidentemente tb sin mrok ni mrcancel) y me lo hace de PM, pero solo una vez, la segunda me da el mismo "access violation". Les pido ayudo porque ya no se donde meterme. Gracias a tod@s |
Debes tener en cuenta dónde creas la instancia del formulario que muestras.
Tu problema parece que se debe a que destruyes el formulario y después intentas acceder a sus datos, y por esto te da error. Espero que te sirva Edu |
Gracias por contestar, lo he comprobado y el error me da en la linea:" if (frmprovincia.showmodal =true) then", luego no intento acceder a sus elementos, sino a ella misma. Tal vez sea algún problema en la configuracion de delphi. Uso delphi5 con ADO, por si os sirve de algo pa ayudarme.
|
Ya me imaginaba que te daba el error en esta línea, pero el tema está en dónde creas la instancia de frmprovincia. En algún lugar no lejos de ahí y un poco más arriba debería estar la creación, del tipo
Y más abajo la destrucción:
En general, cuando se usa un formulario modal la estructura es la siguiente:
Un saludo Edu |
En lugar de frmprovincias.Free,
pon FreeAndNil(frmprovincias). La diferencia es que con .Free, el puntero frmprovincias no queda apuntando a nil, sino a la dirección de memoria donde se encontraba la ventana, como ya se ha liberado, estas accediendo a una dirección no válida. Ten cuidado de que la forma no tenga cafree en su evento OnClose, ya que al cerrarse se destruirá, y puedes perder la referencia. saludos |
Gracias a los dos me ha servido mucho vuestra ayuda
|
| La franja horaria es GMT +2. Ahora son las 04:28:58. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi