2009-03-16 13 views
0

J'essaye de capturer la clé F10 dans Delphi, mais il semble continuer à activer le menu parce qu'il est converti de vk_F10 en vk_menu ou quelque chose.Capturer F10 dans Delphi

+0

Y at-il une raison particulière pour laquelle vous souhaitez désactiver le comportement standard de l'interface utilisateur de Windows? Ce n'est pas parce que vous n'utilisez pas F10 pour activer le menu que vos clients ne le feront pas. –

+0

Commentaire très important par Rob Kennedy - vous ne devriez jamais utiliser l'un des raccourcis clavier Windows standard (voir http://msdn.microsoft.com/en-us/library/bb545461.aspx) pour une commande différente de celle par défaut, et F10 est parmi eux. – mghie

+0

À moins, bien sûr, que ce ne soit pas pertinent. Si vous écrivez une application en plein écran, par exemple, vous ne voulez certainement pas que l'utilisateur tire vers le haut le système de menu Windows. (Là encore, vous n'aurez probablement pas de menus dans ce cas, mais vous comprendrez l'idée générale ...) –

Répondre

6

L'événement OnKeyDown suivant ajouté à ma forme principale devrait fonctionner. Notez que vous devez définir le paramètre clé sur zéro pour empêcher l'activation du menu:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; 
    Shift: TShiftState); 
begin 
    if key = VK_F10 then begin 
    Label1.Caption := 'You hit F10'; 
    key := 0; 
    end; 
end; 
+0

En effet. Mais pour empêcher F10 d'activer le menu, le paramètre Key doit également être réglé sur 0. – mghie

+0

En fait, il n'active pas le menu tel quel. –

+0

cela active probablement le menu, mais cela sera perdu par le changement de focus du showmessage. Essayez de définir une légende d'étiquette à la place, et voir si elle le fait alors (avec un menu présent bien sûr!) – mj2008