![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Lo primero de todo es decir el error concreto que da, si es un access violation, un abstract error o lo que sea, mientras tanto es muy difícil ayudarte.
Lepe te cuento el erro que me da es este Proyecto Factura.exe raised exception class EAccessViolation with message ' Access violation at address 0067755...... etc ' En cuanto a lo de hint te cuento que esta asignación Application.Onhit := Mihint la realizo al crear cada ventana
lo mas extraño de este error es que cuando la creación automatica de ventanas las realizaba delphi al comenzar el programa y yo solo las mostraba con ShowModal no aparecia pero ahora como el programa a ido creciendo me a tocado manejar a mi las ventanas pero entonces me a aparecido este error, la unica solución que he podido hacer por el momento es quitar las ayudas de las ventanas. Otra cosa que veo que sucede es que cuando creo una ventana modal y esta a su vez llama a otra ventana modal parace el error cosa que no sucede cuando la ventana modal no llama a otra. En fin creo que es un problema con mensanjes ya que cuando cierro la ventan el mensaje del Onhin trata de buscar el statusbar donde se muestra la ayuda pero como este ya ha sido elimnado no lo encuentra y genera el error. En cuanto a lo otro que tu dices esa función que tu corregiste muy amablemente no es la que estoy utilizando, la que utilizo es la del mensaje original. Gracias ojala esto deje mas claro mi poblema. |
|
#2
|
||||
|
||||
|
Ahora si es posible contestarte "efectivamente".
Al poner esa línea de código en cada ventana, el Hint se mostrará en la última ventana que se abra, hasta ahí correcto. Si cerramos esa ventana, ¿el hint donde se mostrará?.... pues mientras no se cree otra ventana nueva, el hint se intentará mostrar en esa última ventana que ya ha sido cerrada, es decir, liberada de memoria RAM... o lo que es lo mismo, está intentando acceder a una zona de memoria donde ya no reside la ventana; supongo que ahora entiendes el "access violation". Si puedes, me gustaría que comentases qué tipo de interfaz usas, es decir, si es SDI ó MDI. Si es SDI, abres una ventana y después otra y después otra.. controlar el hint en este escenario puede ser "incómodo para ti". Si es MDI, la solución es muy fácil. El Hint se muestra en un statusbar de la ventana MDI; como esta ventana siempre está creada y mostrándose, se verá siempre el hint sin problemas. En este escenario la asignación Application.Onhint := hint sólo es necesario hacerlo en el OnCreate del formulario MDI. Ten en cuenta que estas asignando una propiedad del objeto Application, así que, una sola asignación es válida para todas las ventanas que tengas en tu programa. Cuando Delphi crea las ventanas, todas las ventanas están creadas y disponibles durante toda la ejecución de la aplicación, por tanto, siempre está disponible el procedimiento "Mihint" de cada ventana, por eso no da error. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#3
|
||||
|
||||
|
el problema según veo es la mezcla que haces de accesos entre TApplication y las formas que creas. El error de violation error es debido a que en algun punto estas accesando a un objeto o método que no ha sido creado aún o bien ya fue destruído.
Si revisas tu algoritmo te recomiendo que separes totalmente TApplication de tus TForms de manera que lo que muevas en uno no afecte al otro. En tu ejemplo se supone que las ventanas no deben de "saber" que existe Application que es quien las controla y no a la inversa. Puedes por ejemplo hacer lo siguiente: primero creas el form (pero sin mostralo) y una vez mostrado obtienes el hint y se lo pasas a la aplicacion. Despúes muestras la ventana. Al cerrar la ventana haces lo contrario.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
#4
|
||||
|
||||
|
Gracias por la ayuda que me han brindado:
Mi aplicación es MDI ya que se crea una ventana y hasta que esta no se cierra no se puede acceder a ninguna otra. Quisiera saber como se hace esto Puedes por ejemplo hacer lo siguiente: primero creas el form (pero sin mostralo) y una vez mostrado obtienes el hint y se lo pasas a la aplicacion. Despúes muestras la ventana. Al cerrar la ventana haces lo contrario. __________________ Es decir yo se como acceder al hint pero como hago lo contrario de pronto si es posible me lo de en un ejemplo. Gracias |
|
#5
|
||||
|
||||
|
Gracias por la ayuda:
Primero creo que mi aplicación es MDI ya que solo se accede a una ventana a la vez es decir se crean ventanas modales a partir de una principal. Otra cosa es que cada ventana tiene un componente statusbar que donde yo muestro el contenido de las ayudas de cada ventana. Quisiera saber como se hace esto Cita:
No he podido dar con el chiste y aun me sigue saliedo el error. Gracias Última edición por Vlady fecha: 27-11-2006 a las 22:16:02. |
|
#7
|
||||
|
||||
|
Gracias roman prove con esta instrucción y todo me funcioné excelente
Gracias de nuevo |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Reactivar onhint | rafa_adrim | OOP | 5 | 24-01-2006 17:22:57 |
|