Ir al contenido


Foto

[RESUELTO] Abrir archivo de ayuda CHM en una parte concreta y no al inicio


  • Por favor identifícate para responder
48 respuestas en este tema

#1 ramonrafe

ramonrafe

    Member

  • Miembros
  • PipPip
  • 24 mensajes
  • LocationEspaña

Escrito 12 noviembre 2009 - 12:56

Hola a tod@s.

Quiero hacer un fichero de ayuda para un programa hecho con delphi 7 en Win XP.

Anteriormente usé archivos *.hlp ; pero ahora quiero hacerlos del tipo *.chm, pues creo que son más atractivos visualmente y quiero que se puedan usar en Vista y Win 7 (donde directamente no se aceptan ficheros *.hlp).

Puedo hacer los archivos *.chm sin problemas y uso el programa HelpMaker 7.3 .

La pregunta que quiero hacer es: ¿Hay alguna forma de enlazar a una parte concreta de la ayuda al llamarla?. Me explico, si hay una parte del programa que realiza el proceso ABC, que la ayuda lleve directamente a la explicación de ese proceso y que el usuario no se vea en el menú principal y deba hacer varios clic de ratón hasta llegar a esa explicación.

Con las ayudas *.hlp podía hacer eso, pero no sé como hacerlo llamando a las ayudas *.chm.

A propósito, quizás no sea la forma correcta, pero para abrir las ayudas en *.chm uso este proceso:

  ShellExecute(Handle,nil,PChar( 'c:\Archivo_Ayuda.chm' ),'','',SW_SHOWNORMAL);
 
Muchas gracias de antemano.

Ramón.  ;)

  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 12 noviembre 2009 - 01:44

en torry pude encontrar esto amigo:

http://www.swissdelp...code.php?id=402


y aquí en la web de martin esto

http://www.martinsto...tml#VclHtmlHelp


espero que te sirva

saludos
  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 12 noviembre 2009 - 01:45

A ver, no sé si funcione con archivos *.chm, pero ahí van:

Uses HelpIntfs;



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var Ayuda: IHelpSystem;
  3. begin
  4.   Ayuda.ShowHelp('Funcion o proceso', 'Ubicacion del archivo');
  5. end;
  6.  
  7. procedure TForm1.Button1Click(Sender: TObject);
  8. var Ayuda: IHelpSystem;
  9. begin
  10.   Ayuda.ShowTopicHelp('Topico', 'ubicacion del archivo');
  11. end;



Saludos.
  • 0

#4 ramonrafe

ramonrafe

    Member

  • Miembros
  • PipPip
  • 24 mensajes
  • LocationEspaña

Escrito 12 noviembre 2009 - 05:07

Hola de nuevo.

Gracias por sus orientaciones.

Enecumene, no pude hacer funcionar lo que aportaste. Posiblemente funcione, pero no supe hacerlo.

Poliburro, la información del primer enlace no la entendí. Pero sí logré hacer funcionar la del segundo enlace.

Por si otra persona tiene esta misma duda, le comento como pude hacerlo.

En ese enlace:

http://www.martinstoeckli.ch/delphi/delphi.html#VclHtmlHelp


se puede descargar una Unit que viene comprimida ( unit StoHtmlHelp ).

Se añade al proyecto que estemos haciendo:  Project/Add to Project.

Luego, en el código hacemos la llamada al archivo:



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.  
  4.   Application.HelpFile := 'C:\Archivo_Ayuda.chm';
  5.   Application.HelpContext( 54 );
  6.  
  7. end;



Primero se indica la ruta completa al archivo de ayuda.

Luego, se llama al Help Context Number (número de contexto de la ayuda), que en este ejemplo es el 54. Ese número indica a qué parte de la ayuda se va a acceder.

Y creo que nada más...

Muchas gracias por la ayuda, Enecumene y Poliburro.

Ramón.

  • 0

#5 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 13 noviembre 2009 - 08:33

Hola de nuevo.

Gracias por sus orientaciones.

Enecumene, no pude hacer funcionar lo que aportaste. Posiblemente funcione, pero no supe hacerlo.

Poliburro, la información del primer enlace no la entendí. Pero sí logré hacer funcionar la del segundo enlace.

Por si otra persona tiene esta misma duda, le comento como pude hacerlo.

En ese enlace:

http://www.martinstoeckli.ch/delphi/delphi.html#VclHtmlHelp


se puede descargar una Unit que viene comprimida ( unit StoHtmlHelp ).

Se añade al proyecto que estemos haciendo:  Project/Add to Project.

Luego, en el código hacemos la llamada al archivo:



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.  
  4.   Application.HelpFile := 'C:\Archivo_Ayuda.chm';
  5.   Application.HelpContext( 54 );
  6.  
  7. end;



Primero se indica la ruta completa al archivo de ayuda.

Luego, se llama al Help Context Number (número de contexto de la ayuda), que en este ejemplo es el 54. Ese número indica a qué parte de la ayuda se va a acceder.

Y creo que nada más...

Muchas gracias por la ayuda, Enecumene y Poliburro.

Ramón.


Gracias a ti amigo por compartir la solución :p 
  • 0

#6 mariarosina1984

mariarosina1984

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 215 mensajes

Escrito 03 julio 2010 - 11:04

yo tmb tengo ese mismo problema compilo el pas posteado y bajado no jala me marca error en el dcu hay alguna manera para delphi 5?
  • 0

#7 mariarosina1984

mariarosina1984

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 215 mensajes

Escrito 03 julio 2010 - 11:10

no jala en d5
  • 0

#8 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 03 julio 2010 - 11:42

no jala en d5


que error te marca?
  • 0

#9 felipe

felipe

    Advanced Member

  • Moderador
  • PipPipPip
  • 3.283 mensajes
  • LocationColombia

Escrito 03 julio 2010 - 04:30

Hola, una solución alternativa y a mi parecer más efectiva:

  • Descargas este archivo http://download.jgso...UseHTMLHelp.zip (Proporcionado desde la página de HelpScribble)
  • Lo que haces es descomprimir y añadir a tu proyecto el archivo HTMLHelpViewer.pas
  • Listo... ahora puedes usar la típica sentencia Application.HelpFile para llamar tu archivo


Saludos!
  • 0

#10 mariarosina1984

mariarosina1984

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 215 mensajes

Escrito 05 julio 2010 - 08:35


no jala en d5


que error te marca?


QUE EL ARCHIVO ESTA DAÑADO CUANDO LE PICO EN EL BOTON KE ES LLAMADO AL HELPFILE YA LE PUSE EL .PAS Y TAMPCO JALA EN D5 NO SE ALGO MEJOR ME FALTA UN DETALLITO este es mi codigo:

procedure TForm3.Button5Click(Sender: Tobject) ;
begin
Application.HelpFile:='Project1.chm';
application.HelpCommand(HELP_CONTENTS,0);
end;
en el uses puse el htmlhlp o algo asi.pas lo agregue a mi projecto ese codigo no es tocado a lo mejor le falta que en ese codigo le ponga .onhelp podria ser? si es asi como se hace? gracies


  • 0

#11 ramonrafe

ramonrafe

    Member

  • Miembros
  • PipPip
  • 24 mensajes
  • LocationEspaña

Escrito 05 julio 2010 - 08:49

Hola Felipe.

    * Descargas este archivo http://download.jgso...UseHTMLHelp.zip  (Proporcionado desde la página de HelpScribble)
    * Lo que haces es descomprimir y añadir a tu proyecto el archivo HTMLHelpViewer.pas
    * Listo... ahora puedes usar la típica sentencia Application.HelpFile para llamar tu archivo

Gracias por tu aportación. Estuve en la página inicial del enlace que proporcionas a HTMLHelpViewer.pas , pero me pareció un programa comercial.
¿El autor permite su uso de forma gratuita o hay que registrarse (pagarle) para usarlo?.
Aclaro que no lo he probado aún.
Saludos.
Ramon
  • 0

#12 mariarosina1984

mariarosina1984

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 215 mensajes

Escrito 05 julio 2010 - 11:12

lo unico es que lo agregas  el .pas en tu project pero no se de ahi como funcione a lo mejor me comi un paso o algo parecido
  • 0

#13 felipe

felipe

    Advanced Member

  • Moderador
  • PipPipPip
  • 3.283 mensajes
  • LocationColombia

Escrito 05 julio 2010 - 12:49

Hola Felipe.


    * Descargas este archivo http://download.jgso...UseHTMLHelp.zip  (Proporcionado desde la página de HelpScribble)
    * Lo que haces es descomprimir y añadir a tu proyecto el archivo HTMLHelpViewer.pas
    * Listo... ahora puedes usar la típica sentencia Application.HelpFile para llamar tu archivo

Gracias por tu aportación. Estuve en la página inicial del enlace que proporcionas a HTMLHelpViewer.pas , pero me pareció un programa comercial.
¿El autor permite su uso de forma gratuita o hay que registrarse (pagarle) para usarlo?.
Aclaro que no lo he probado aún.
Saludos.
Ramon


Hola, el programa como tal se puede usar gratuitamente y por tiempo indefinido con un mensaje de marca registrada, la versión de pago elimina esto y posiblemente añada otras funciones. El archivo .pas se puede descargar de forma gratuita, dentro esta el típico léeme con las indicaciones licencia y demás.

lo unico es que lo agregas  el .pas en tu project pero no se de ahi como funcione a lo mejor me comi un paso o algo parecido


Su uso es muy simple, tal como lo mencionas, no tienes que llamar nada más, ya solo lo usas por ejemplo así:



delphi
  1. procedure TForm1.Button1Click(Sender: Tobject) ;
  2. begin
  3. Application.HelpFile := 'Ayuda.chm';
  4. Application.HelpContext(10);
  5. end;




Saludos!
  • 0

#14 mariarosina1984

mariarosina1984

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 215 mensajes

Escrito 06 julio 2010 - 11:45

ahora tengo otra duda como jalas de un boton la ayuda por capitulo o secciones el archivo .chm? gracias
  • 0

#15 ramonrafe

ramonrafe

    Member

  • Miembros
  • PipPip
  • 24 mensajes
  • LocationEspaña

Escrito 06 julio 2010 - 12:10

El programa que te permite crear la Ayuda, incluye la opción de asignar un número de índice a cada sección de la ayuda.

En el ejemplo que ya se ha puesto en este hilo:



delphi
  1. procedure TForm1.Button1Click(Sender: Tobject) ;
  2. begin
  3. Application.HelpFile := 'Ayuda.chm';
  4. Application.HelpContext(10);
  5. end;



El índice de la ayuda al que se accede supongo que debe ser el 10.

Cada botón que se usa para acceder a la ayuda, en cada parte diferente del programa debe indicar a qué parte de la ayuda se va a acceder.

De esa forma, al abrir la ayuda, se abre directamente en la sección que interesa.

Saludos.

Ramón.
  • 0

#16 mariarosina1984

mariarosina1984

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 215 mensajes

Escrito 07 julio 2010 - 08:41

ya lo hize pero no jala se crean .hhk los indices no se como funcionan no dice numeros se hacen llavesitas pero no dice ningun numero
  • 0

#17 mariarosina1984

mariarosina1984

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 215 mensajes

Escrito 07 julio 2010 - 08:47

no soporta el helpcontext en delphi 5
  • 0

#18 felipe

felipe

    Advanced Member

  • Moderador
  • PipPipPip
  • 3.283 mensajes
  • LocationColombia

Escrito 07 julio 2010 - 09:50

no soporta el helpcontext en delphi 5


Podrías listar las opciones que te aparecen al escribir Application.Help... para saber cuál de ellas te puede servir.


Saludos!
  • 0

#19 mariarosina1984

mariarosina1984

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 215 mensajes

Escrito 07 julio 2010 - 10:00

application.helpcommand
application.helpcontext
application.helpjump
  • 0

#20 felipe

felipe

    Advanced Member

  • Moderador
  • PipPipPip
  • 3.283 mensajes
  • LocationColombia

Escrito 07 julio 2010 - 10:16

application.helpcommand
application.helpcontext
application.helpjump


¿Está o no está? *-)

Si eso te aparece en Delphi 5 esta bien, quizá el error es al asignar mal el índice de la ayuda, revisa eso.


Saludos!
  • 0