Bonjour,

Ouf, j'ai enfin réussi à faire fonctionner sous D5 le code de ShaiLeTroll comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
procedure TfrmGen.ApplicationEventsHint(Sender: TObject);  //Shai
var
  i: Integer;
  PM: TPoint;
  HandleControl: HWND;
  lpRes: array[0..255] of Char;
  MenuRect: TRect;
  HintForm: THintWindow;
  HintRect: TRect;
begin
 
  for i := ComponentCount - 1 downto 0 do
  begin
    if Components[i] is THintWindow then
    begin
      THintWindow(Components[i]).ReleaseHandle();
      Components[i].Free();
    end;
  end;
 
  if Application.Hint <> '' then
  begin
 
    if GetCursorPos(PM) then
    begin
      HandleControl := WindowFromPoint(PM);
      if HandleControl > 0 then
      begin
 
        if GetClassName(HandleControl, lpRes, SizeOf(lpRes))<>0  then
        begin
          if SameText(StrPas(lpRes), '#32768') then
          begin
            if GetWindowRect(HandleControl, MenuRect) then
            begin
              MenuRect.Left := MenuRect.Right;
 
              HintForm := THintWindow.Create(Self); 
              HintForm.Color := clYellow;
 
              HintRect := HintForm.CalcHintRect(Screen.Width div 2, Application.Hint, nil);
              // HintForm.ActivateHint(Rect(MenuRect.Left + 4, PM.y, MenuRect.Left + 4 + HintRect.Right - HintRect.Left, PM.y + HintRect.Bottom - HintRect.Top), Application.Hint);
              // avec la ligne c-dessus le Hint se trouve entièrement caché sous le paneau du sous-menu lorsqu'il en existe un.
              // Avec la ligne suivante le Hint est au moins visible dans la largeur du panneau du MenuItem coresspondant.
              HintForm.ActivateHint(Rect(PM.x, PM.y+20, PM.x+HintRect.Right-HintRect.Left, PM.y + 20 + HintRect.Bottom - HintRect.Top), Application.Hint);
            end;
          end;
        end;
      end;
    end;
  end;
end;
 
procedure TfrmGen.FormCreate(Sender: TObject);
begin     ...
          Application.onHint:=ApplicationEventsHint;
          Application.ShowHint:=true;
          ShowHint:=true;
          Application.HintHidePause:=10000; 
          Application.HintColor:=clYellow;
          ....
end;
... il reste juste un petit problème : dans le cas d'un Hint très long associé à un MenuItem comportant un sous-menu ne sont visibles que le début et la fin du Hint la partie du milieu reste cachée sous le panneau du sous-menu.
... ce problème n'apparaît pas avec le code qui figure dans mon message du 19/08/2011 12h59 mais qui est bigrement plus long.
Mais du coup on dispose de deux solution : un code court pour des Hint's courts ... et un code plus long pour des Hint's longs.

A+.