Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2004
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 22
lafirma Va por buen camino
OnHelp de Application y Form

Tengo una aplicacion lista, he desarrollado un archivo de ayuda HTML que esta casi listo, estoy intentando enlazarlo con la app mediante el evento OnHelp de la variable Application, al ejecutar la aplicacion y presionar F1 el evento simplemente no se ejecuta, he estado revisando documentacion y la ayuda menciona que este evento es llamado por los metodos HelpContext y HelpJump.
Esto es asi por diseño o a lo mejor estoy haciendo algo mal y por ello el evento no se ejecuta?
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #2  
Antiguo 22-05-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Para que HelpContext se active tienes que dar un valor a esta propiedad en los formularios.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 22-05-2004
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 22
lafirma Va por buen camino
Marcos
No es ese el problema, las propiedades HelpContext de los forms estan correctamente asignadas, el asunto es que tengo asignado un manejador para el evento OnHelp de la variable Application y ese evento no llega a ejecutarse, llama al archivo de ayuda y todo, pero el evento no se ejecuta, ese es el problema que tengo.
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #4  
Antiguo 22-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
El problema está en esto:
Cita:
Empezado por lafirma
...he desarrollado un archivo de ayuda HTML ...
Las ayudas HTML no pueden "dispararse" de forma automática asignando las propiedad HelpContext, sino que ha de hacerse de forma manual (vamos, si no voy equivocado)

Para ello puedes mirar de conrolar el evento OnKeyUp o OnKeyDown del formulario o componente o valerte de un TActionList
Responder Con Cita
  #5  
Antiguo 22-05-2004
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 22
lafirma Va por buen camino
creo que no me he explicado bien...
Realizando pruebas he establecido un archivo de ayuda HLP, al presionar F1 se abre el citado archivo, pero el evento OnHelp de un objeto TAplicationEvents que tengo asignado no se ejecuta, no se porque, segun entiendo antes de abrir el archivo de ayuda se debe llamar primero a este evento si esta asignado, pero no ocurre asi...
mi objetivo es usar un archivo CHM, para lo cual quiero interceptar la llamada al archivo de ayuda a traves del evento OnHelp mencionado antes, realizando las llamadas correspondientes de la unit HTMLHelpApi.pas y evitando la activacion del WinHelp mediante el parametro CallHelp del evento, pero sucede que el evento nunca se ejecuta, ni cuando hago pruebas con un archivo HLP valido, ni cuando uso el CHM que me genera un error.


Por cierto, alguien podria facilitarme a mi correo la unit HTMLHelpApi.pas? he estado buscando a traves de la red y la que he encontrado parece no ser la misma que he visto mencionada en los foros
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #6  
Antiguo 22-05-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Mira acabo de hacer la siguiente prueba, y me funciona sin ningún problema:
Código Delphi [-]
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.HelpFile := 'D:\pruebas\Ren2003e.hlp';
  Application.CreateForm(TForm1, Form1);
  Application.Run;

//---------

implementation

{$R *.DFM}

function TForm1.ApplicationEvents1Help(Command: Word; Data: Integer;
  var CallHelp: Boolean): Boolean;
begin
ShowMessage('Llamando a la ayuda');
end;

Cada vez que pulso F1 me muestra el mensaje que ves y ademas me abre el fichero de ayuda que he colocado circunstancialmente.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 22-05-2004
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
Cita:
Empezado por marcoszorrilla
Cada vez que pulso F1 me muestra el mensaje que ves y ademas me abre el fichero de ayuda que he colocado circunstancialmente.
Marcos, ¿que versión de Delphi estás usando y en que Windows? Acabo de probar tu mismo ejemplo y el evento simplemente nunca se lanza. La prueba la hago con Delphi 7 y Windows XP. Ayer al leer este hilo había probado, con los mismos resultados, pero pensé que estaba muy cansado y mejor lo veía después pero ahora corroboro que algo no está bien. ¿Será problema de D7?

// Saludos
Responder Con Cita
  #8  
Antiguo 22-05-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Estoy utilizando D5 y W98.

Acabo de probar con D7 y me muestra la ayuda pero no me lanza el evento.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 22-05-2004
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
Cita:
Empezado por marcoszorrilla
Acabo de probar con D7 y me muestra la ayuda pero no me lanza el evento.
Estuve buscando en los grupos de noticias de Borland y parece ser que éste es un problema con D6 y D7. Mencionan este parche pero a mi no me ha funcionado; veamos si alguien más lo prueba y logra hacerlo trabajar.

// Saludos
Responder Con Cita
  #10  
Antiguo 23-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por lafirma
Por cierto, alguien podria facilitarme a mi correo la unit HTMLHelpApi.pas? he estado buscando a traves de la red y la que he encontrado parece no ser la misma que he visto mencionada en los foros
Cuando me la pediste en privado, yo te la envié, note ha llegado?

Por cierto, referente al problema.... no creeis que os complicais demasiado la vida intentando engañar a Delphi poniendo un archivo de ayuda HLP para disparar dicho evento y así poder lanzar el CHM??

No se, existen cantidad de componentes que te permiten lanzar una ayuda en CHM por internet
Responder Con Cita
  #11  
Antiguo 23-05-2004
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
Cita:
Empezado por cadetill
Por cierto, referente al problema.... no creeis que os complicais demasiado la vida intentando engañar a Delphi poniendo un archivo de ayuda HLP para disparar dicho evento y así poder lanzar el CHM??
Ee que no se está trantando de hacer eso. lafirma puso lo del hlp para hacer pruebas pero el problema aquí es que al parecer en D6 y D7 el evento OnHelp simplemente no se lanza y debería ser así independientemente de hlp o html.

// Saludos
Responder Con Cita
  #12  
Antiguo 25-05-2004
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 22
lafirma Va por buen camino
lo que dice roman es realmente lo que me pasa, simplemente quiero que se ejecuta el OnHelp pero no se ejecuta...

Cadetill, te confirmo que he recibido la unit, te lo agradezco sinceramente...

En teoria al ejecutarse el OnHelp solo deberia escribir un par de sentencias para que funcione la ayuda HTML, una para llamar la funcion que corresponda de la unit HTMLHelpApi.pas y otra para establecer el parametro CallHelp del evento para que el WinHelp no sea llamado (que es el comportamiento predeterminado). Estoy usando Delphi 7 y WinXP asi que debe ser el bug mencionado.

Probare la solucion que aparece en el enlace proporcionado por roman y les notifico despues como resultó el asunto.
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #13  
Antiguo 25-05-2004
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
Cita:
Empezado por lafirma
Probare la solucion que aparece en el enlace proporcionado por roman y les notifico despues como resultó el asunto.
Si dicha solución no te sirve te recomiendo que le busques más en los grupos de noticias de borland ya que yo no revisé todos los enlaces y quizá haya alguna solución que si funcione.

// Saludos
Responder Con Cita
  #14  
Antiguo 25-05-2004
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
Pues no sé qué hice ayer (posiblemente no establecí ningún HelpContext) pero en realidad sí me funcionó el parche para D7.

Por otro lado acabo de instalar el Update de Delphi 7 y parece que corrige el problema sin necesidad del otro parche.

// Saludos
Responder Con Cita
  #15  
Antiguo 26-05-2004
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 22
lafirma Va por buen camino
En efecto, el parche funciona, y debo tambien confirmar que el Update 1 que acaba de salir para Delphi 7 corrige el problema. El archivo README de este Update se encuentra aqui

El bug esta mencionado en la seccion VCL y es el primero que aparece en dicha seccion:

Cita:
VCL
* Context and keyword help does not fire for the OnHelp events.
__________________
Saludos

Douglas Cruz
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 02:26:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi