Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   OnHelp de Application y Form (https://www.clubdelphi.com/foros/showthread.php?t=10557)

lafirma 22-05-2004 00:40:31

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, :confused: 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?

marcoszorrilla 22-05-2004 00:46:25

Para que HelpContext se active tienes que dar un valor a esta propiedad en los formularios.

Un Saludo.

lafirma 22-05-2004 01:08:23

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.

__cadetill 22-05-2004 10:10:23

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

lafirma 22-05-2004 17:21:08

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

marcoszorrilla 22-05-2004 19:08:25

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.

roman 22-05-2004 19:46:45

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

marcoszorrilla 22-05-2004 20:14:20

Estoy utilizando D5 y W98.

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

Un Saludo.

roman 22-05-2004 20:18:02

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

__cadetill 23-05-2004 09:48:39

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 :rolleyes:

roman 23-05-2004 17:18:59

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

lafirma 25-05-2004 00:04:46

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.

roman 25-05-2004 03:27:42

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

roman 25-05-2004 06:40:17

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

lafirma 26-05-2004 18:09:46

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.


La franja horaria es GMT +2. Ahora son las 18:37:45.

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