Personnalisation de l'aide F1 dans les applications VCL

De RAD Studio
Aller à : navigation, rechercher

Remonter à Appel de l'aide HTML depuis les applications


Le développeur peut explicitement programmer les gestionnaires d'événements OnHelp de l'objet Application et de fiches particulières.

Pour modifier le gestionnaire d'événements OnHelp d'une fiche, ouvrez la fiche dans le Concepteur de fiches.

Puis, dans l'inspecteur d'objets, sélectionnez l'onglet Evénements, localisez l'événement OnHelp et double-cliquez dans la colonne de droite. L'éditeur de code ouvre le fichier avec le code de gestion de la fiche, et place le curseur à l'intérieur du bloc begin … end du code du cadre généré pour le gestionnaire d'événements OnHelp. Le code généré a l'aspect suivant :

function TForm1.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;
begin
 ...
end;

Vous pouvez taper ici votre code de gestion d'aide. Puisque le gestionnaire d'événements TForm1.FormHelp est la méthode de l'objet Form1 de la classe TForm1, vous pouvez utiliser les fonctionnalités d'aide des objets Form1 et Application. Par exemple, vous pouvez écrire le code comme suit :

function TForm1.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;
begin
  HelpFile := ExtractFilePath(Application.ExeName) + HelpFile;
  Application.HelpShowTableOfContents();
  CallHelp :=  False; // True; - to execute the default OnHelp event handler
end;

Dans la première ligne, lors de la redéfinition de HelpFile, vous supposez que le HelpFile initial contient le chemin relatif de l'exécutable de l'application vers le fichier d'aide local à la fiche Form1. Cette redéfinition garantit que ce fichier d'aide sera toujours correctement localisé par l'application en cours d'exécution.

Application.HelpShowTableOfContents affiche le sommaire du fichier d'aide CHM défini dans le TForm1.HelpFile pour la fiche Form1.

Notez que la définition de CallHelp sur False indique que le gestionnaire d'événements OnHelp par défaut ne s'exécute pas. Si le gestionnaire d'événements OnHelp par défaut doit s'exécuter après votre gestionnaire d'événements programmé manuellement, vous devez alors définir :


 CallHelp :=  True;


Remarque : Notez que vous ne pouvez pas utiliser le Application.HelpCommand dans votre code du gestionnaire d'événements OnHelp.
Application.HelpCommand(NativeCommand, Data)


pour passer les options NativeCommand à la fonction de l'API HTMLHelp native (ou une autre API native). La fonction Application.HelpCommand déclenche l'événement OnHelp sur la fiche active. Par conséquent, l'appel de la fonction HelpCommand à l'intérieur du gestionnaire d'événements OnHelp génère une boucle infinie dans l'événement OnHelp.
Par conséquent, pour passer les options NativeCommand à la fonction de l'API HTMLHelp, vous devez appeler
IHelpSystem.GetHelpSystem(HelpSystem)


puis
HelpSystem.Hook(Handle, HelpFile, NativeCommand, Data);


Voir aussi