Aide en ligne personnalisée

Résolu
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014
-
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014
-
Bonjsoir,

J'ai créé pour ma base Access une aide personnalisée avec Workshop,
que j'intègre à mon application en rajoutant à la propriété
Fichier d'aide d'un formulaire "Adhérent.chm", et au contexte aide un
numéro ,
mais lorsque j'appelle mon aide avec le ? j'ai une page blanche qui
s'affiche.

Merci pour votre aide.

Salutations.

<!-- / message -->

22 réponses

Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut  394302 DAVIMIKA,

effectivement, après vérification de ma part, on peut compiler un chm sans déclaration de fenêtre, et donc, sans fenêtre par défaut (pour info : lancé à partir de l'explorateur, il ne choisit pas de topic par défaut, et donc, il affiche une page blanche, même s'il contient des topic).

Toujours pour info, une fois défini un topic par défaut ([Options] DefaultTopic), le fichier compilé, exécuté à partir de l'explorateur, affiche le topic par défaut.

Dans ton cas, il te faut :
- 1/.déclarer une fenêtre
- 2/.définir cette fenêtre comme fenêtre par defaut
- 3/.compiler et tester

1/. 
   a. Dans l'onglet Projet, choisis l'icone Add/Modifiy Window definition (normalement la 3ème en partant du haut).
   b. Donne un nom à la définition de fenêtre, "LaFenetreMain" pour mon exemple.
   c. Dans la fenêtre Window Types ainsi obtenue, dans l'onglet General, vérifies que c'est bien "LaFenetreMain" qui est sélectionnée (normalement oui), et si tu le souhaites, définis lui un titre, "Fenêtre principale" pour mon exemple.
   d. (indispensable) Dans l'onglet Position, cliques le bouton Autosizer. Il t'ouvre une fenêtre vide, qui a la particularité d'être redimensionnable. Redimensionnes-la à la taille qui conviendrait pour ta fenêtre principale, et cliques OK.
   e. Cliques OK pour valider la fenêtre Window Types. Tu as maintenant une section [Windows] qui contient, pour mon exemple, LaFenetreMain = "Fenêtre principale".

Notes</gras>: il y a de nombreuses propriétés intéressantes dans la fenêtre Window Types, et on peut créer plusieurs définitions de fenêtres, qu'on affectera ensuite à divers topics
.

2/.
   a. Dans l'onglet Projet, cliques l'icones des propriétés de projet, et dans la fameuse liste déroulantes de Default Window, choisis la définition que tu viens de créer (attention, il est possible que la propriété DefaultTopic se soit ré-initialisée, si c'est le cas, re-sélectionnes ton DefaultTopic). Dans la section [Options], tu as maintenant une clé DefaultWindow (DefaultWindow = LaFenetreMain, pour mon exemple).

3/. à toi de jouer

voilà,
à+

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut DAVIMIKA,

d'abord chapeau bas, tout le monde ne fait pas de fichier d'aide pour l'utilisateur, et c'est un tort.

Bon, question bête (mais il faut un début), ton fichier Adhérent.chm, lorsque tu le lances sous Windows, il démarre bien (sans la page blanche)?

j'attend,
à+

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Bonjour rvblog,

Merci de t'occuper de mon problème, et la réponse est oui.

Salutations
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
C'est déjà une bonne chose,


je finis ce que je suis en train de faire, et je re-poste.


à+






rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
ah si, quelle version du Workshop?

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Je suis revenu,


tiens pas de réponse! pas grave.


D'ordinaire, le click sur ? n'ammène pas l'utilisateur sur un topic contextuel, mais plutôt sur le topic de démarrage, non ? Quel code as-tu mis dans le menu pour afficher le fichier, et où as-tu mis l'ID? Si c'est dans la proriété du menu, il faut survoler le menu, et appuyer sur [F1] pour que l'application comprenne que tu souhaites obtenir de l'aide contextuelle (et donc, ici, de l'aide sur le menu ?, très peu implémentée de nos jours:) ).

Si tu as renseigné l'ID d'un contrôle, genre TextBox par exemple, donne lui le focus, et appuies sur [F1], ou, si tu as implémenté l'aide "What's this", cliques droit, et click What's this. Si tout ça ne marche pas (je diagnostique à l'envers), as-tu fait un fichier de mappage dans ton projet WorkShop (tu sais bien, dans les ID VB, on mets des chiffres, alors que dans le Workshop, on met des constantes).

à+






rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Re bonsoir,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




La version est 4 74 8702



 





Le click sur ?  sauf erreur amène  l'utilisateur sur un topic contextuel.

Mais là je suis dépassé par tes explications.



 




Voila ce que j’ai fait.



 





Extrait du fichier alias.h



IDH_Pro_Introduction                 =html\Adhérents_Introduction.html




IDH_Pro_Accueil                      =html\Adhérents_Accueil.html



 





Extrait du fichier map.h (table d’équivalence)



#define IDH_Pro_Adhérents_Introduction          1000




#define IDH_Pro_Adhérents_Accueil                  1010



 




Intégration du fichier d’aide à l’application Access:



1)      Copie du fichier Adhérents.chm dans le dossier où se situe l’application.



2)      Dans le formulaire en mode création, je renseigne <?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" /??><st1:personname w:st="on" productid="la propriété Fichier Aide"><st1:personname w:st="on" productid="la propriété Fichier">la propriété Fichier</st1:personname> Aide</st1:personname> en tapant Adhérents.chm



3)     
 Dans le formulaire en mode création, je renseigne <st1:personname w:st="on" productid="la propriété Contexte Aide">la propriété Contexte Aide</st1:personname> en tapant 1000 (du fichier map.h).



 




Intégration du sommaire dans l’application.



1)      par Api je ne sais pas faire.



2)      Donc j’ai fait Ajout d’un élément de menu personnalisé.



3)      Dans propriété, et sur action  j’ai tapé =Shell(" hh Adhérents.chm ",1)





Salutations. 
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut 394302 DAVIMIKA,


tiens, colles cette déclaration dans un module standard de ton application (Access, c'est bien ça?):

Declare Function htmlhelp Lib "hhctrl.ocx" _
    Alias "HtmlHelpA" (ByVal hwnd As Long, _
    ByVal lpHelpFile As String, _
    ByVal wCommand As Long, _
    ByVal dwData As Long) As Long

et dans ton formulaire :

Private Const HH_DISPLAY_TOC = &H1
Private Const HH_DISPLAY_TOPIC = &H0
Private Const HH_HELP_FINDER = &H0
Private Const HH_DISPLAY_INDEX = &H2
Private Const HH_DISPLAY_SEARCH = &H3 'pas sûr



Private Const HH_CLOSE_ALL = &H12




'Je te laisse le soin de trouver comment, à partir de la macro de ton
'menu, tu peux appeler AfficherAide

Public Sub AfficherAide()
Dim strPath As String
    strPath = CurrentProject.Path
 
    htmlhelp Me.hwnd, _
                strPath & "\Adhérents.chm > " & "LaFenetreMain", _
                HH_DISPLAY_TOC, _
                0
   'LaFenetreMainest la valeur DefaultWindow de la section [Option] du projet
   ' Workshop (Adhérents?.hhp).
End Sub



Private Sub Form_Unload(Cancel As Integer)
'ATTENTION, d'une façon ou d'une autre, tu dois exécuter
'ceci pour libérer l'objet HH, quand ce formulaire est déchargé,
'sinon, CRASH

    htmlhelp Me.hwnd, _
                strPath & "\Adhérents.chm > " & "LaFenetreMain", _
                HH_CLOSE_ALL, _
                0
End Sub

voilà,
à+






rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Bonjour rvblog



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




J’ai le message d’erreur suivant :



 





« The Window name « LafenetreMain » passed HH_GEN_WIN_TYPE has not been speaficed.






 





Est-ce que c’est <?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" /??><st1:personname w:st="on" productid="la Constante HH">la Constante HH</st1:personname>_GEN qui manque ?



 




En cliquant deux fois, l’aide apparaît.



 




Les Constantes je les ai déclarées en Public. Est-ce gênant ?



 




Salutations
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut 394302 DAVIMIKA,

non, les constantes en public, ce n'est pas gênant, mais il faut alors les mettre dans le module Standard, c'est mieux.

En ce qui concerne LaFenetreMain, je n'ai peut-être pas été assez précis, il faut que tu remplaces cette valeur par le nom de la fenêtre de ton fichier d'aide.

Mais quel est le nom de cette fenêtre?

Dans le fichier du projet Workshop (*.hhp), il existe, dans la section [Options], une clé nommée DefaultWindow. C'est la valeur de cette clé qu'il faut passer à l'appel de htmlhelp.

Donc, si tu trouves :

[Options]
DefaultWindow =LaFenetreMain

tu écris :

    htmlhelp Me.hwnd, _
                strPath & "\Adhérents.chm > " & "LaFenetreMain", _
                HH_DISPLAY_TOC, _
                0
c'est tout.

à+

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Re bonjour,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Toutes mes escuses si ce message fait double emploi.
 




Je ne trouve pas DefaultWindow.



 




Voila ce que j’ai sous [Options]



 





Compatibility=1.1 or later




Compile file= adhérents.chm


Contents Topic = Table Matières.hhc


Défault Topic = htmlFicheIntroductionAdhérents



Display compile progress=No





Langage= 0x40c





Tiltre=Adhérents Aide






 






Salutations






 







 
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Pas d'excuses,


tu as là la raison de ton problème, il te faut la solution.

Sur l'onglet Project, tu dois avoir une icone pour modifier les options du projet.
Dans l'écran des options de projet ainsi obtenu, tu devrais trouver une liste déroulante qui te permet de définir, parmi la liste des fenêtres définies, la fenêtre par défaut au démarrage du fichier d'Aide (La fameuse Default window).

Bien, évidemment, si tu n'as jamais défini de fenêtre, tu auras du mal, car la liste sera vide (je sens bien que je, là, ne t'apprend rien). Dans ce cas, repostes un message pour me l'indiquer (ça fait pas très pro ça, de ma part, mais en même, j'ai des tonnes de projets d'Aide, mais je n'en ai aucun sans fenêtre déclarée, du coup, je ne sais même pas si on peut [te voilà devenu mon laboratoire]).

à+






rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Bonsoir,

Tu est vraiment sympa de t'occuper de mon problème, et en effet la liste déroulante est vide.


Salutations
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Bonjour rvblog,


Bravo ça marche correctement, mais sans vouloir abuser de la situation j'aimerais poursuivre cette sympatyque conversation pour mettre en place ces fonctions:

1) Se servir du ? de chaque formulaire pour appeler une page bien précise de l'aide
2) Appeler l'aide à partir de la touche F1.

Et quoi qu'il en soit, un grand merci.


Bon week-end


Salutations
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
T'es fonctionnnaire?


non, parce que bon week, à part si c'est pour me dire que je ne te reverrais pas aujourd'hui, c'est limite :)

J'aimerais qu'auparavant, tu cliques sur le bouton "Accepter la réponse" de la réponse valide (Accepter la réponse, ça aide, dans la liste des derniers messages, quelqu'un qui lit le titre de ta 1ère question, à savoir qu'elle a trouvé une solution, et la réponse valide, ça aide, pendant la relecture du fil des réponses, à savoir où est la solution).

pour tes 2 nouvelles questions, je ne vais pas te demander de re-créer un fil de topic (pourtant, le réglement de CodeS-SourceS le demande), car elles sont compatibles avec le fil existant, mais juste un peu de temps (ce soir, peut-être) pour que j'y réponde.

d'avance, merci, et bon week-end à toi aussi.

à+






rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Re Bonjour,

Non, non , je ne suis pas fonctionnaire!... et surtout prends ton temps car je suis un jeune retraité, et j'ai tout mon temps...

Salutations
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Bonjour rvbLog,

Je reprends mon projet d'aide, et je m'aperçois que je n'ai plus de tes nouvelles.

Est-ce que tu as oublié mon fil, ou est-ce qu'il n'y a pas de solution à mon problème ?

Salutations
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut DAVIMIKA,

non, des problèmes sans solutions, je n'en ai plus pour l'instant :) J'avais bel et bien perdu le fil! Heureusement qu'il y a des mails de notification et que tu as reposté!

je regarde et je te dis.
à+

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Pour la réaction à la touche F1, il existe une propriété Fichier Aide dans les propriétés de chaque formulaire (avec un identificateur de contexte pour le formulaire, en plus de chaque identificateur prévu par contrôle dans le formulaire). Attention à avoir une valeur différente de zéro, sinon, c'est l'aide d'Access qui s'affiche.

Autre petit jeu amusant, mets un identificateur de contexte en négatif, dans les propriétés des contrôles (ou du formulaire), pas dans le fichier d'aide, et observes.

Pour ce qui concerne la réaction au ?, il me faut des précisions. Comment est fait le ?, un CommandButton, une ToolBar, un menu Macro ? Si tu as un bout de code qui peut se déclencher au click du ?, il suffit d'appeler la fonction htmlhelp avec les bons arguments (HH_DISPLAY_TOPIC me semble-t-il).

à+

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
Messages postés
119
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2014

Bonjour rvblog,

Dans le formulaire sur Fichier Aide , j'ai mis Adhérents.chn et aucun résultat.

Quand au ? c'est celui du formulaire qui apparait en haut à droite  à coté du X du formulaire lorsque l'on met la propriété Bouton Aide sur Oui.

Salutations.