Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-11-2006
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 22
Vlady Va por buen camino
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

Código Delphi [-]
procedure TFArqueo.FormCreate(Sender: TObject);
begin
   Application.OnHint := MiHint;
end;

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.
Responder Con Cita
  #2  
Antiguo 24-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 24-11-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 24
AzidRain Va camino a la fama
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||
Responder Con Cita
  #4  
Antiguo 27-11-2006
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 22
Vlady Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 27-11-2006
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 22
Vlady Va por buen camino
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:
Empezado por AzidRain
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 y mostrarlo application pero como lo desvinculo, si de pronto me pudiera ayudar con ejemplo.

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.
Responder Con Cita
  #6  
Antiguo 27-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Me parece que lo único que requieres es poner

Código Delphi [-]
Application.OnHint := nil;

en el OnClose de tus formularios. Con esto desvinculas el OnHint.

// Saludos
Responder Con Cita
  #7  
Antiguo 29-11-2006
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 22
Vlady Va por buen camino
Gracias roman prove con esta instrucción y todo me funcioné excelente


Gracias de nuevo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Reactivar onhint rafa_adrim OOP 5 24-01-2006 17:22:57


La franja horaria es GMT +2. Ahora son las 09:36:35.


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
Copyright 1996-2007 Club Delphi