Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Débutant
Débutant Pour bien débuter avec Delphi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/12/2012, 09h44   #1
F@bien.fd
Membre du Club
 
Homme
Enseignant
Inscription : octobre 2004
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : octobre 2004
Messages : 179
Points : 44
Points : 44
Par défaut intégration fichier d'aide .chm

Bonjour,

Auparavant mes fichiers d'aide étaient au format .hlp.

Les dernières versions de Windows les rendant difficilement utilisables.
J'ai donc grâce à la contribution du forum converti mes fichiers d'aides sans trop de difficulté au format .chm.

je souhaite maintenant les intégrer à mes applications, sachant qu'il n'y a pas de contexte à gérer....

Avec un bouton... ça passe.
Code :
1
2
3
  HtmlHelp(Application.Handle,
  PChar('NINAPERF.CHM'), 
  HH_DISPLAY_TOPIC, 0);
Il en va tout autrement de la gestion de la touche F1

j'ai modifié de la façon suivante le .DPR
Code :
1
2
3
4
5
6
7
8
9
10
11
...           
           If Main.Autorise_Appli then
              begin
                Application.CreateForm(TCopyrightNinaPerf, CopyrightNinaPerf);
                Application.CreateForm(TCorrection, Correction);
                Application.HelpFile := 'NINAPERF.CHM';
              end;  
            Application.Run;
            ReleaseMutex(Appli);
            CloseHandle(Appli);
          end;
Dans TMain.Form

HelpContext est mis à 1 // doit être different de zero.
HelpFile est mis à ‘NINAPERF.chm’

Même en ayant bien scruté le modèle phidels.com, rien n'y fait.

Merci par avance pour toute info.
F@bien.fd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 17h20   #2
cincap
Membre émérite
 
Inscription : janvier 2006
Messages : 1 401
Détails du profil
Informations personnelles :
Âge : 60

Informations forums :
Inscription : janvier 2006
Messages : 1 401
Points : 891
Points : 891
Bonsoir à toutes et à tous,

@ F@bien.fd, j'ai testé une approche :

Avec F1 :

Code :
1
2
3
4
5
6
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_F1 then  showmessage('touche F1 appuyée');
end;
Avec un Tbutton:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
var
noma, chappli : string;
begin
chappli := ExtractFilePath(Application.ExeName);
 
noma := chappli + 'NINAPERF.CHM';
 
if fileexists(noma) then
ShellExecute(Handle,'Open',PChar(noma),'', '',SW_SHOWMAXIMIZED) else
showmessage('le fichier d''aide n''existe pas ou n''est pas dans le bon dossier !');
end;
Edit, ceci fonctionne correctement sous D6 et Seven 64bits:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
noma, chappli : string;
begin
 
chappli := ExtractFilePath(Application.ExeName);
 
noma := chappli + 'NINAPERF.CHM';
 
if Key = VK_F1 then 
if fileexists(noma) then
 
ShellExecute(Handle,'Open',PChar(noma),'', '',SW_SHOWMAXIMIZED) 
else
showmessage('le fichier d''aide n''existe pas ou n''est pas dans le bon dossier !');
end;
@+,

Cincap
cincap est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2012, 14h50   #3
F@bien.fd
Membre du Club
 
Homme
Enseignant
Inscription : octobre 2004
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : octobre 2004
Messages : 179
Points : 44
Points : 44
Merci pour cette réponse...
Elle me pose néanmoins un soucis.

A chaque fois que l'on envoie F1, elle ouvre une aide supplémentaire. On peut l’empêcher par une variable sur le bouton mais pas sur F1.

J'ai bien trouvé une méthode qui permet de gérer les aides contextuelles, mais elle n'ouvre pas le fichier d'aide si on clic F1 après avoir cliqué sur la MainForm.

J'intègre dans les uses hh_funcs et hh en rajoutant les modules hh_funcs.pas et hh.pas issues de phidels.com.
Puis je rajoute le fichier aide.pas compilé par HelNDoc utilisant le fichier aide.chm. Ce fichier indique tous les topic de l'aide.
exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Project: Aide 
// Generated by HelpNDoc - http://www.helpndoc.com
 
unit Aide_concernant_NinaPerf;
 
interface
 
const
  // Format: HELP_help-id = help-context
  HELP_AideNinaPerf = 1; 				 // Topic: "Aide NinaPerf"
  HELP_Sommaire = 2; 				 // Topic: "Sommaire."
  HELP_NiNaPerf = 3; 				 // Topic: "NiNaPerf..."
  HELP_Introduction = 4; 				 // Topic: "Introduction."
  HELP_TitrecodeIsinetcodeSicovam = 5; 				 // Topic: "Titre, code Isin et code Sicovam."
  HELP_Prixderevient = 6; 				 // Topic: "Prix de revient."
  HELP_Performance = 7; 				 // Topic: "Performance."
  HELP_Modedemploi = 8; 				 // Topic: "Mode d'emploi."
  HELP_Descriptiondelinterface = 9; 				 // Topic: "Description de l'interface."
..... etc....
ensuite voici sur une petite appli comment je le gère... Je n'ai rien inventé, j'ai simplement essayé d'adapter...

Après avoir chargé dans la propriété HelpContext des composants que l'on souhaite expliquer, la valeur correspondant au topic pour chacun d'eux.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Spin, Buttons, AppEvnts, hh,hh_funcs ,Menus;   // Aide_concernant_NinaPerf,
 
type
  TForm1 = class(TForm)
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    Edit1: TEdit;
    Label1: TLabel;
    ButtonPlus: TButton;
    ButtonMoins: TButton;
    ButtonAideResultatContexte: TButton;
    Memo3: TMemo;
    ButtonAideResultatTopic: TButton;
    Memo1: TMemo;
    procedure ButtonAideResultatContexteClick(Sender: TObject);
    procedure ButtonAideResultatTopicClick(Sender: TObject);
    function FormHelp(Command: Word; Data: Integer;
                      var CallHelp: Boolean): Boolean;
    procedure FormCreate(Sender: TObject);
    procedure FormClick(Sender: TObject);
 
  private
    {Déclarations privées }
    procedure MessageAide(var msg:TMessage); message WM_HELP;
    function HelpHook(Command: Word; Data: LongInt; var CallHelp: Boolean): Boolean;  //   HelpHook
 
  public
  {Déclarations publiques }
   mHelpFile: string; //Variable servant à stocker le chemin du fichier CHM
   function AfficheAide(Data: Integer): Boolean;
 
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
const
  HH_HELP_CONTEXT         = $000F;
  HH_DISPLAY_TOPIC        = $0000;
 
function HtmlHelp(hwndCaller: HWND;
  pszFile: PChar; uCommand: UINT;
  dwData: DWORD): HWND; stdcall;
  external 'HHCTRL.OCX' name 'HtmlHelpA';
 
function TForm1.HelpHook(Command: Word; Data: LongInt; var CallHelp: Boolean): Boolean;
begin
  CallHelp := False; //Désactivation des appels à l'aide 16-bit
  //Test sur le paramètre Command qui permet de savoir le type d'aide à ouvrir
  if (Command in [Help_Context]) then
    HtmlHelp(0, PChar(mHelpFile), HH_HELP_CONTEXT, Data) //Ouverture de l'aide
  else
    CallHelp := true; //En cas d'erreur, réactivation des appels à l'aide 16-bit
    result := true;
end;
 
 
function TForm1.AfficheAide( Data: Integer) : Boolean;
var Resultat:HWND;
begin
  Resultat:=HtmlHelp(Application.Handle,
                     PChar(HelpFile), // Propriété de Form1
                     HH_HELP_CONTEXT,
                     Data); // correspond à la propriété HelpContext
 
   Memo1.Lines.Add(inttostr(Resultat));  //  pour visualiser dans le test
 
   Result:= (0<>Resultat);
end;
 
procedure TForm1.MessageAide( var msg:TMessage);
// cette procédure est déclenchée automatiquement à chaque fois
// qu'un utilisateur demande de l'aide (F1)
begin
    // S'il est différent de 0, on passe le HelpContext du contrôle (=du composant)
    //qui a le focus
    if ActiveControl.HelpContext<>0 then
    begin
      if not AfficheAide(ActiveControl.HelpContext)
      then ShowMessage('Erreur. Vérifiez la présence du fichier .chm dans le bon dossier');
    end;
    //inherited;// si on veut continuer à propager le message. Ici : non
end;
 
/////////////////////////////////////////////////////////////////////////////
// Implémentation des procédures propres aux boutons
/////////////////////////////////////////////////////////////////////////////
 
procedure TForm1.ButtonAideResultatContexteClick(Sender: TObject);
//Pour un Bouton "normal", il faut implémenter son
//évènement OnClick de façon à déclencher "à la main"
//l'aide. Ici, on montre une solution en utilisant un "Context"
begin
  AfficheAide(6);
end;
 
procedure TForm1.ButtonAideResultatTopicClick(Sender: TObject);
//Ici : un accès direct. (qui redonne la dernière page affichée).
begin
  HtmlHelp(Application.Handle,
  PChar('Aide.chm'),
  HH_DISPLAY_TOPIC, 0);
end;
 
function TForm1.FormHelp(Command: Word; Data: Integer;
                         var CallHelp: Boolean): Boolean;
begin
    HtmlHelp(Application.Handle,
    PChar('Aide.chm::/resultat.htm'),
    HH_DISPLAY_TOPIC, 0);
end;
 
end.
La mainForm ne redonne pas son topic mais seulement le dernier montré...
F@bien.fd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 16h46   #4
cincap
Membre émérite
 
Inscription : janvier 2006
Messages : 1 401
Détails du profil
Informations personnelles :
Âge : 60

Informations forums :
Inscription : janvier 2006
Messages : 1 401
Points : 891
Points : 891
@ F@bien.fd,

Citation:
A chaque fois que l'on envoie F1, elle ouvre une aide supplémentaire. On peut l’empêcher par une variable sur le bouton mais pas sur F1
Je n'ai pas de souci à ce niveau la avec une nouvelle application, l'appui sur F1 m'affiche mon fichier "chm".

As tu essayé directement dans l'inspecteur d'objets, les propriétés "HelpFile" et "HelpType", en principe ces propriétés sont gérée par F1 et ouvre le fichier "aide" qui se trouve dans le dossier de l'application.

La méthode que tu annonces, je l'ai testée depuis un certain temps et le résultat n'a jamais été performant.

Edit, impérativement la propriété "KeyPreview" de ta "form" à true.

Je viens d'inclure mon code proposé en 1er, dans une ancienne application et cela fonctionne sous Seven 64bits.

@+,

Cincap
cincap est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2012, 17h56   #5
F@bien.fd
Membre du Club
 
Homme
Enseignant
Inscription : octobre 2004
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : octobre 2004
Messages : 179
Points : 44
Points : 44
merci,
Déjà effectivement "KeyPreview" de ta "form" était à false.

je vais regarder où en sont les réglages que tu m'a indiqués de surveiller.
"HelpType" correspond bien suffixe .chm de l'aide ?

Apparemment j'ai toujours autant de fichiers d'aide qui s'ouvrent que de fois ou on appelle l'aide...
F@bien.fd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 18h50   #6
cincap
Membre émérite
 
Inscription : janvier 2006
Messages : 1 401
Détails du profil
Informations personnelles :
Âge : 60

Informations forums :
Inscription : janvier 2006
Messages : 1 401
Points : 891
Points : 891
F@bien.fd,

As tu vu ce lien :

http://www.jmdoudoux.fr/microsoft/htmlhelp/htmlhelp.htm

Sinon avec les unités HTMLHelpViewer, HelpFile dans le uses

Et ce code :

Code :
1
2
3
4
5
6
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_F1 then HtmlHelp(0, pchar(Application.HelpFile), HH_HELP_CONTEXT, 30);
end;
J'arrive bien au topic n° 30 indiqué dans le sommaire du fichier "Aide" de test !

@+,

Cincap
cincap est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2012, 18h52   #7
Andnotor
Rédacteur/Modérateur
 
Avatar de Andnotor
 
Inscription : septembre 2008
Messages : 2 884
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2 884
Points : 4 370
Points : 4 370
Depuis plusieurs versions déjà, l'aide en HTML est supportée.

Sinon il serait peut être plus judicieux d'intercepter le message WM_HELP plutôt que de tester la touche F1.
__________________
Mes tutoriels Delphi
Andnotor est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2012, 19h03   #8
F@bien.fd
Membre du Club
 
Homme
Enseignant
Inscription : octobre 2004
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : octobre 2004
Messages : 179
Points : 44
Points : 44
Citation:
Envoyé par cincap Voir le message
oui, je connais le lien de Doudou. Mais pour construire mes fichiers d'aide .HTML, .HCM ou .PDF, j'utilise HelpnDoc qui est super à mon sens.



Citation:
Envoyé par cincap Voir le message
Sinon avec les unités HTMLHelpViewer, HelpFile dans le uses
Et ce code :
Code :
1
2
3
4
5
6
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_F1 then HtmlHelp(0, pchar(Application.HelpFile), HH_HELP_CONTEXT, 30);
end;
J'arrive bien au topic n° 30 indiqué dans le sommaire du fichier "Aide" de test !
ça je vais examiner, j'avais essayé un code proche de cela mais ça me donnait toujours la page index...
F@bien.fd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 22h48   #9
F@bien.fd
Membre du Club
 
Homme
Enseignant
Inscription : octobre 2004
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : octobre 2004
Messages : 179
Points : 44
Points : 44
Citation:
Envoyé par cincap Voir le message

Code :
1
2
3
4
5
6
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_F1 then HtmlHelp(0, pchar(Application.HelpFile), HH_HELP_CONTEXT, 30);
end;
semble fonctionner si je laisse les uses hh_funcs et hh SANS rajouter les modules hh_funcs.pas et hh.pas issues de phidels.com au projet . Et si j'enlève le uses hh_funcs, ça fonctionne.

Par contre si je remplace par HTMLHelpViewer, HelpFile ça plante... HtmlHelp ne passe pas.
F@bien.fd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 00h40   #10
F@bien.fd
Membre du Club
 
Homme
Enseignant
Inscription : octobre 2004
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : octobre 2004
Messages : 179
Points : 44
Points : 44
La solution fonctionne mais me chagrine...
Ne disposant pas des uses HTMLHelpViewer et HelpFile, j'ai laissé uniquement la uses hh SANS rajouter au projet les modules hh_funcs.pas et hh.pas issues de phidels.com. J'ai uniquement conservé dans le dossier de travail le module hh.dcu suffisant pour la compilation au projet.
Voici le code du test :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Spin, Buttons, AppEvnts, Menus, hh, shellapi;
 
type
  TForm1 = class(TForm)
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    Edit1: TEdit;
    Label1: TLabel;
    ButtonPlus: TButton;
    ButtonMoins: TButton;
    ButtonAideResultatContexte: TButton;
    Memo3: TMemo;
    ButtonAideResultatTopic: TButton;
    Memo1: TMemo;
    Button1: TButton;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
                          Shift: TShiftState);
    procedure Button1Click(Sender: TObject);
 
  private
    {Déclarations privées }
    procedure MessageAide  (var msg:TMessage); message WM_HELP;
 
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
 
procedure TForm1.MessageAide( var msg:TMessage);
begin
// A conserver pour ne pas récupérer de message d'erreur
end;
 
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
                             Shift: TShiftState);
begin
 if Key = VK_F1 then HtmlHelp(0, pchar('Aide concernant NinaPerf.chm'), HH_HELP_CONTEXT, 3);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  HtmlHelp(0, pchar('Aide concernant NinaPerf.chm'), HH_HELP_CONTEXT, 3);
end;
 
end.
Voici ce qui m'ennuie...
Je suis obliger dans la déclaration privée de laissé subsister la procédure
MessageAide (var msg:TMessage); message WM_HELP; sous peine de récupérer message d'erreur suivant en appuyant sur F1 alors que ça passe tout seul avce le clic sur le bouton

message d'erreur
F@bien.fd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 08h54   #11
cincap
Membre émérite
 
Inscription : janvier 2006
Messages : 1 401
Détails du profil
Informations personnelles :
Âge : 60

Informations forums :
Inscription : janvier 2006
Messages : 1 401
Points : 891
Points : 891
Bonjour à toutes et à tous,

@ F@bien.fd, je vais essayer de transmettre les fichiers HTMLHelpViewer et HelpFile pour ton test.

@ Andnotor, je n'ai jamais affiché mon fichier d'aide personnelle avec F1 mais avec un TButton, je vais tenter d'explorer ta suggestion.

@+,

Cincap
Fichiers attachés
Type de fichier : zip HTMLHelpViewer.zip (20,2 Ko, 1 affichages)
cincap est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2012, 09h49   #12
cincap
Membre émérite
 
Inscription : janvier 2006
Messages : 1 401
Détails du profil
Informations personnelles :
Âge : 60

Informations forums :
Inscription : janvier 2006
Messages : 1 401
Points : 891
Points : 891
@ F@bien.fd

Rien que ceçi fonctionne correctement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, HTMLHelpViewer;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
   procedure WMHELP(var Msg: TWMHelp); message WM_HELP;
  public
    { Déclarations publiques }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.WMHELP(var Msg: TWMHelp);
var
   ActiveCtrlID: Integer;
begin
   ActiveCtrlID:= Screen.ActiveControl.HelpContext;
   //handle help ton message içi.
  //Test showmessage('ok');
  HtmlHelp(0, pchar(Application.HelpFile), HH_HELP_CONTEXT, 30);//Fichier avec Index !
//ShellExecute(Handle,'Open', PChar(Application.HelpFile),nil,nil,SW_SHOWDEFAULT); //Si simple fichier *.chm sans Index et sans "HTMLHelpViewer" dans le uses
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.HelpFile := ExtractFilePath(Application.ExeName) +
    'HelpFile.chm'; //Fichier sans index "Aide.chm"
end;
 
end.
@+,

Cincap
cincap est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2012, 14h44   #13
F@bien.fd
Membre du Club
 
Homme
Enseignant
Inscription : octobre 2004
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : octobre 2004
Messages : 179
Points : 44
Points : 44
merci pour l'envoi ...

dans les prochaines appli, je pense que je l'intégrerai. Pour l'heure voici comment j'ai pratiqué sur l'appli que je mets à jour. Sachant qu'elle peut fonctionner de 95 à seven, évidemment les fichiers d'aides doivent être distinctifs.J'avais déjà été ammené à identifier les différentes configurations.
Je les ai réparties ensuite en deux groupe :
- avant Xp
- XP et les suivantes...
une variable globale identifie les deux cas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
unit UnitMain;
interface
uses
  Windows, Messages, [...], ImgList, Appel_PVMV, WinInet, hh;

  private                                      
  { Déclarations privées }
    procedure MessageAide(var msg:TMessage); message WM_HELP;

var
....
  Version_type_XP: Boolean; // Signale si la version est du type XP.ou +

Code :
1
2
3
4
procedure TMain.MessageAide( var msg:TMessage);
begin
// A conserver pour ne pas récupérer de message d'erreur
end;

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TMain.FormCreate(Sender: TObject);
var
  I, J        : Integer;
  Jour        : String;
  PathAppli   : String;
  Rect        : TRect;
  Fichier_Info: TIniFile;
  BitMap      : TBitMap;
 
begin
// Que l'on soit en mode Anglais(US) ou Français le format
// des dates et du séparateur décimal seront conservés.
  DecimalSeparator := ',';  // 2012/11/30
  ShortDateFormat := 'dd/mm/yy'; // 2012/11/30
 
 
  Version_Windows := WindowsVersion;
  If (Version_Windows = 'Windows XP') or
     (Version_Windows = 'Windows Vista') or
     (Version_Windows = 'Windows Seven')
    then Version_type_XP := True
    else Version_type_XP := False;
...
 
// Choix du type de fichier d'aide selon la configuration.
// Par défaut il s'agit de Ninaperf.hlp :
// par défaut HelpFile est à 'Ninaperf.hlp',
// par défaut HelpContext est à 2000,
// par défaut KeyPreview reste à True.
  If Version_type_XP then
    begin
      HelpFile := 'Ninaperf.chm';
      HelpContext := 1;
    end;
Traitement de l'aide sur l'application en utilisant la touche F1 :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TMain.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  nom: String;
begin
  If Key = VK_F1 then
    begin
      If not Desactivationdescommandes1.Checked then // Mise à jour du journal de bord.
        begin
          If Version_type_XP then nom := 'NinaPerf.chm'
                             else nom := 'NinaPerf.hlp';
          EcrireFichierLog('-> appel au fichier d''aide ' + '''' + nom + '''' +
                           ' avec la touche ' + '''' + 'F1' + '''' + '.', 2)
        end;
      If Version_type_XP // Si la version est au moins égale à Windows XP...
        then HtmlHelp(0, pchar('NinaPerf.chm'), HH_HELP_CONTEXT, 1) // appeler l'aide '.CHM'...
        else Application.HelpJump('som'); // sinon appeler l'aide '.HLP'...
    end
end;
Traitement de l'aide avec action sur le bouton d'appel :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TMain.AideNinaPerf1Click(Sender: TObject);
var
  nom: String;
begin
  If not Desactivationdescommandes1.Checked then // Mise à jour du journal de bord.
    begin
      If Version_type_XP then nom := 'NinaPerf.chm'
                         else nom := 'NinaPerf.hlp';
      EcrireFichierLog('-> appel au fichier d''aide ' + '''' + nom + '''' + '.', 2)
    end;
  If Version_type_XP // Si la version est au moins égale à Windows XP...
    then HtmlHelp(0, pchar('NinaPerf.chm'), HH_HELP_CONTEXT, 8) // appeler l'aide '.CHM'...
    else Application.HelpJump('som'); // sinon appeler l'aide '.HLP'...
end;
merci de toute l'attention que vous avez apporté à mon soucis.

Dès que je mets en ligne, je vous donne les liens pour éventuellement l'utiliser.
F@bien.fd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 10h16   #14
F@bien.fd
Membre du Club
 
Homme
Enseignant
Inscription : octobre 2004
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : octobre 2004
Messages : 179
Points : 44
Points : 44
Par défaut Pour ceux que ça intéresse.

Pour l'installateur de l'application :
http://fabien.fd.free.fr/Bourse/Appl...on%20Alpha.zip ou http://fabien.fd.free.fr/Bourse/Appl...on%20Alpha.rar

Après enregistrement et décompression lancer l'installation avec Lanceur.exe.

rappel : Une fois installée, on peut la copier/coller autant de fois que l'on veut l'application dans différents dossiers, mais elles ne peuvent pas fonctionner simultanément, c'est délibéré.

La dernière version de l'application mise à jour est systématiquement en ligne à l'adresse suivante :
http://fabien.fd.free.fr/Bourse/Appl...s/NinaPerf.zip ou http://fabien.fd.free.fr/Bourse/Appl...s/NinaPerf.rar

La dernière version de l'aide mise à jour est systématiquement en ligne à l'adresse suivante :
http://fabien.fd.free.fr/Bourse/Appl.../aide_Nina.zip ou http://fabien.fd.free.fr/Bourse/Appl.../aide_Nina.rar

Encore merci à tous
F@bien.fd est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h48.


 
 
 
 
Partenaires

Hébergement Web