DAVIMIKA
Messages postés118Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention10 janvier 2014
-
21 août 2006 à 00:13
DAVIMIKA
Messages postés118Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention10 janvier 2014
-
19 oct. 2006 à 00:57
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.
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>
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 20 sept. 2006 à 16:42
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>
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)
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
'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>
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.
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 21 sept. 2006 à 20:51
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>
DAVIMIKA
Messages postés118Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention10 janvier 2014 22 sept. 2006 à 11:45
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.
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 22 sept. 2006 à 12:47
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>
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>
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 17 oct. 2006 à 21:28
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>