Ver la Versión Completa : OnHelp de Application y Form
lafirma
22-05-2004, 00:40:31
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:
...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:
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
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
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 (http://www.helpware.net/downloads/index.htm#D6OnHelpFix) 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
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
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
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 (http://groups.google.com.mx/groups?hl=es&lr=&ie=UTF-8&oe=UTF-8&group=borland.public.delphi) 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 (http://bdn.borland.com/article/0,1410,32337,00.html)
El bug esta mencionado en la seccion VCL y es el primero que aparece en dicha seccion:
VCL
* Context and keyword help does not fire for the OnHelp events.
vBulletin v3.6.8, Derechos ©2000-2013, Jelsoft Enterprises Ltd.