IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Appel par code à une aide HTML [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Par défaut Appel par code à une aide HTML
    Bonjour,

    Je suis désolé de poser une nouvelle fois la question de l'appel à une aide HTLM dans une feuille Lazarus, d'autant plus que j'ai déja été confronté au problème mais cette fois la solution que j'avais retenue échoue .
    Je dispose du fune feuille appelée F_Lanc à partir de laquelle je souhaite faire apparaître une aide au format html par appui sur la touche F1 sachant que les fichiers constitutifs de cette aide qui s'appelle BD_FastAD.htlm est parfaitement affichée par mon navigateur Firefox. Elle est placée dans un répertoire appelé DocHTML qui est un sous répertoire de celui qui héberge l'application construite avec Lazarus version 1.6 sous W10.
    Pour cela j'ai placé sur cette feuille F_Lanc les contrôles de l'onglet System HTLMH_DB1 et HTLM_Br1 renseignés par :
    - pour HTLMH_DB1 : autoregister à True ; Base URL appelé par code plus tard ; KeywordPrefix : 'HTLM/'
    - pour HTLMBr_1 : Autoregister à True BrowserParams à %s

    J'ai ensuite programmé par code à la création de la feuille F_Lanc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TF_Lanc.FormCreate(Sender: TObject);
       Var CheminAide2 : String ; // chemin d'accès à l'aide
    begin
       // Accès à l'aide par F1
        CheminAide2 := 'File:///D:Ap_Lazarus/Gene_AD/DocHTML/BD_FastAD.html' ;// accès à l'aide par la touche F1 - ce chemin est provisoire pour le test et sera ensuite remplacé par 'File://' + ExtractFilePath(Application.ExeName) +'DocHTML/' ;extractpathfilename(.exe)
        EDit1.Text := CheminAide2 ;
        HTMLH_DB1.BaseURL := CheminAide2 ;
        F_lanc.HelpType := htKeyword  ;
        F_lanc.HelpKeyword :='HTML/BD_FastAD.html' ;  
        //Fin accès à l'aide
    end;
    J'ai toujours un message d'erreur qui s'affiche : Ne trouve pas le mot clef 'HTML/BD_FastAD.html'

    Je vous serais reconnaissant de m'indiquer où cela ne colle pas.

    Merci

    R. O.

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Yep !
    Citation Envoyé par OR34a Voir le message
    cette aide qui s'appelle BD_FastAD.htlm est parfaitement affichée par mon navigateur Firefox.

    CheminAide2 := 'File:///D:Ap_Lazarus/Gene_AD/DocHTML/BD_FastAD.html' ;

    J'ai toujours un message d'erreur qui s'affiche : Ne trouve pas le mot clef 'HTML/BD_FastAD.html'

    Je vous serais reconnaissant de m'indiquer où cela ne colle pas.
    Dans l'extension du nom de fichier, peut-être ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Par défaut Suite à la réponse de jipété
    Bonjour,

    Merci pour la réponse rapide à ma discussion. Malheureusement ce n'est pas simplement une erreur d'extension de nom du fichier (htlm à la place de html) qui n'était qu'une coquille de frappe dans mon message. L'erreur doit se trouver quelque part au niveau de la définition du KeywordPrefix ou du mode de gestion de la feuille dans les instructions concernant l'appel à l'aide ( HelpContext, HelpFile, HelKeyword, HelpType) que l'on laisse généralement aux valeurs par défaut lors de la construction du code mais où? . D'ailleurs j'en profite pour poser une autre question sachant que, dans le code définitif le chemin d'accès à l'aide sera indiqué par le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheminAide2 := 'File://' + extractFilePath(application.exeName) + 'DocHTML/' ;
    et que cette instruction renvoie D:Ap_Lazarus\Gene_AD\DocHTML/' et non pas D:Ap_Lazarus/Gene_AD/DocHTML/ ' est-ce que le renvoi de l'antiSlah au lieu du slah est-il génant ?
    Cordialement

    R.O.

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Yep !
    Citation Envoyé par OR34a Voir le message
    Malheureusement ce n'est pas simplement une erreur d'extension de nom du fichier (htlm à la place de html) qui n'était qu'une coquille de frappe dans mon message.
    Je ne pouvais pas le deviner, même si je l'ai supposé.

    Citation Envoyé par OR34a Voir le message
    L'erreur doit se trouver quelque part au niveau de la définition du KeywordPrefix ou du mode de gestion de la feuille dans les instructions concernant l'appel à l'aide (HelpContext, HelpFile, HelKeyword, HelpType) que l'on laisse généralement aux valeurs par défaut lors de la construction du code mais où ?.
    Pas la moindre idée, je passe

    Citation Envoyé par OR34a Voir le message
    D'ailleurs j'en profite pour poser une autre question sachant que, dans le code définitif le chemin d'accès à l'aide sera indiqué par le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheminAide2 := 'File://' + extractFilePath(application.exeName) + 'DocHTML/' ;
    et que cette instruction renvoie D:Ap_Lazarus\Gene_AD\DocHTML/' et non pas D:Ap_Lazarus/Gene_AD/DocHTML/ ' est-ce que le renvoi de l'antiSlah au lieu du slah est-il génant ?
    Facile à tester, ça : if FileExists(CheminAide2 + 'nom_de_fichier_témoin') then... else...

    Et agir en fonction du résultat.

  5. #5
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Par défaut
    Bonsoir à tous

    @OR34a

    ajouter LCLintf et LCLType à uses; keypreview=True.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TF_Lanc.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
     var str:string;
    begin
      if key=VK_F1 then
      begin
      str:=ExtractFilePath(Application.ExeName)+'/DocHTML/BD_FastAD.html'
      OpenUrl(str);
      end;
    end;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Par défaut
    Citation Envoyé par FOCUS77 Voir le message
    Bonsoir à tous

    @OR34a

    ajouter lclintf à uses; keypreview=True.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TF_Lanc.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
     var str:string;
    begin
      if key=VK_F1 then
      begin
      str:=ExtractFilePath(Application.ExeName)+'/DocHTML/BD_FastAD.html'
      OpenUrl(str);
      end;
    end;

    Bonjour Focus77,

    Merci pour votre réponse à ma question.

    J'ai bien compris que votre code indique que, lorsque l'on presse la touche F1 sur la procédure TF_Lanc.Form.KeyDown on ouvre l'URL correspondant au chemin indiqué dans la chaine de caractères str ce qui est parfait.
    J'ai 2 questions à ce sujet :
    - 1 : Chez moi (W10, Lazarus 32 version 1.6) l'essai renvoi une erreur sur if Key = VK_F1 Then ..... ( si je remplace VK_F1 par 'F1') j'obtien une erreur de type (String au lieu de Word) . Il s'agit certainement d'un problème de reconnaissance de la touche F1 par code dans l'EDI . Comment connaître ces codes pour le diverses touches ? J'utilise déjà #13 pour la touche Return sans problème.
    - 2 Est-ce que cette procédure dispense de la mise en place sur la feuille des contrôles THTMLHelpDatabase et THTMLBrowser et de la définition des propriétés liées à Help de la feuille ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Afficher une Aide HTML par la touche F1
    Par OR34a dans le forum Lazarus
    Réponses: 1
    Dernier message: 20/08/2015, 10h00
  2. Appel servlet depuis une page html
    Par aziz0108 dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 02/12/2008, 18h18
  3. Réponses: 1
    Dernier message: 08/09/2007, 17h12
  4. Comment appeller par code le contenu d'une liste
    Par sakia dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/05/2007, 19h50
  5. [HTML] Comment afficher une aide html & créer un jar // JDIC
    Par michaeljeru dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 24/04/2007, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo