fichero ayuda con formulario mdi

Rodri
13 de Octubre del 2005
Hola a todos los foreros, tengo un problema y es que cuando creo un formulario mdi con visual basic 6.0 y puslo a F1 no me sale la ayuda que he creado. Sin embargo si es un formulario normal y pulso F1 si que me sale la ayuda.

¿Alguien me puede ayudar?

Muchisimas gracias de antemano

gucesoft
13 de Octubre del 2005
TENGO QUE DECIRTE QUE LA AYUDA QUE UTILIZO ES EN FORMATO HTML, ES DECIR UN ARCHIVO CON EXTENSION '*.CHM'.

TENIA EL MISMO PROBLEMA, Y LO SOLUCIONE UTILIZANDO UNA API DE WINDOWS, 'HtmlHelp'. DECLARA LA FUNCION COMO SIGUE...
Public Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal H As Long, ByVal s As String, ByVal I As Integer, d As Any) As Long
...
DECLARA LAS SIGUIENTES CONSTANTES
Public Const HH_DISPLAY_TOPIC = &H0 ' Muestra la Ayuda
Public Const HH_DISPLAY_TOC = &H1 ' Muestra la Ayuda, concretando TOPIC por nombre
Public Const HH_DISPLAY_INDEX = &H2 ' Muestra el indice de la ayuda
Public Const HH_DISPLAY_SEARCH = &H3 ' Despliega la busqueda de la ayuda
Public Const HH_HELP_CONTEXT = &HF ' Muestra la Ayuda, concretando TOPIC por su ID de contexto

CREA UNA ENTRADA DE MENU EN EL FORMULARIO MDI, LA TIPICA OPCION DENTRO DEL MENU DE AYUDA A LA QUE PUEDES LLAMAR 'Contenido', EL TRUCO ESTA EN QUE DEBES ASOCIARLE UNA TECLA, 'F1'...

UNA VEZ HECHO ESTO, ASOCIAS TU ARCHIVO DE AYUDA A LA APLICACION, Y PARA MOSTRARLO CON LA PULSACION DE 'F1', UTILIZA EL EVENTO CLICK DEL MENU...
PARA MOSTRAR LA AYUDA...
HtmlHelp ByVal 0&, RutaCompletaArchivoAyuda, HH_DISPLAY_TOPIC, ByVal 0&
PARA MOSTRAR EL INDICE DE LA AYUDA...
HtmlHelp ByVal 0&, RutaCompletaArchivoAyuda, HH_DISPLAY_INDEX, ByVal 0&
PARA MOSTRA LA BUSQUEDA DE LA AYUDA...
HtmlHelp ByVal 0&, RutaCompletaArchivoAyuda, HH_DISPLAY_SEARCH, ByVal 0&
...
UN SALUDO.

Rodri
13 de Octubre del 2005
Muchisimas gracias, no se si te he entendido del todo porque he hecho un curso de visual de solo 50 horas pero voy a intentar hacerlo.

Gracias

Rodri
13 de Octubre del 2005
Ah y yo tambien uso ayuda chm

Rodri
13 de Octubre del 2005
Muchísimas gracias, he logrado que funcione. En la ruta del archivo de ayuda he metido entre comillas la ruta donde se instalara el programa, donde estara la ayuda ("C:\Archivos de programa\miprograma\ayuda.chm"). Claro, funciona suponiendo que instalas el programa en el directorio indicado.
Supongo que es asi la ruta que hay que poner y que lo he hecho bien...

Muchisimas gracias, voy a guardar el código para cuando lo necesite...

gucesoft
13 de Octubre del 2005
UTILIZA LA PROPIEDAD... APP.PATH, QUE TE DEVUELVE TANTO EN TIEMPO DE DISEÑO COMO EN TIEMPO DE EJECUCION LA RUTA COMPLETA EN LA QUE SE ENCUENTRA EL EJECUTABLE, CON LO QUE SI TIENES UNA CARPETA 'AYUDA' QUE CONTIENE EL ARCHIVO DE AYUDA, EN LA MISMA CARPETA QUE CONTIENE LA APLICACION, PODRAS ACCEDER AL ARCHIVO COMPONIENDO LA RUTA COMO SIGUE...

DIM RutaAyuda as string

RutaAyuda = APP.PATH & "AYUDAAYUDA.CHM"

UN SALUDO

Rodri
13 de Octubre del 2005
Sí, de esta forma se soluciona.

Había estudiado esa propiedad pero se me había olvidado su uso, y eso que es de las importantes.

Gracias
Un saludo

Gloria
13 de Octubre del 2005
Hola!
Tengo un problema relacionado con la ayuda, a ver si alguien me puede ayudar.

En un formulario MDIChild he comprobado que el F1 por defecto de visual no funciona ni para los botones, ni combos ni check.

Para forzar que en estos controles se abra la ayuda he programado el Keyup del formulario (KeyPreview está a true). Uso la api que habéis comentado y hago una llamada a HtmlHelp.

El problema viene si llamo a la ayuda con el HelpContextID a 0 o con un ID que no está creado en la ayuda, no me abre nada o me da un mensaje diciendo que el MAP no existe. Si el HelpContextID existe en el chm no hay ningún problema.

Con el programa de ayuda que tengo no puedo crear un MAP con ID 0.

Con el F1 de visual (sin programar nada) no hay problema, me abre la ayuda en el tópico que he marcado que sea el de por defecto.

¿Alguien sabe cómo solucionarlo?

Muchas gracias.

Un saludo.