J'ai un bouton par défaut sur un formulaire qui a un contrôle Tspinedit sur celui-ci. Lorsque le contrôle Tspinedit a la mise au point et l'utilisateur appuie sur la touche Entrée, au lieu du bouton par défaut, l'utilisateur entend juste un bip de système car la touche Entrée n'est pas valide pour un Tspinedit. P>
Normalement, pour éviter le bip, j'utiliserais l'événement OnKeyPress et définiriez la touche ONKEYDODDOWDOWDOWDOWD, mais quand je définis Alors, comment désactiver le bip système lorsque vous appuyez sur la touche Entrée d'un contrôle Tspinedit? p>
Je suis sur Delphi 5, et ils n'incluaient pas la source de spin.Pas. p> : = 0 code> pour ignorer la touche appuyez sur la touche. Je pourrais ensuite exécuter la méthode de clic sur le bouton par défaut. Cependant, dans ce cas, onKeyPress ne tire pas parce que la touche Entrée n'est pas valide. P>
clé: = 0 code> là, il n'arrête pas le bip du système. P>
3 Réponses :
Essayez celui-ci
//Disable system beep SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE); //Enable system beep SystemParametersInfo(SPI_SETBEEP, 1, nil, SPIF_SENDWININICHANGE);
Merci pour la superbe info, mais je veux toujours entendre les bips pour les autres clés non valides, donc si j'attends que l'événement ONKEOWDOWD est incendié avant de désactiver le bip du système, il ne semble pas empêcher le bip.
Cool hack. Je ne savais pas.
-1. Ceci est une "solution" globale à un problème local. Cela affectera également d'autres applications. Ne fais pas ça.
Vous devez descendre de tspinedit code> et remplacer
isvalidchar code> pour éviter le message MessageBeep ou
KeyPress code> pour éviter
ISVALIDCHAR code> . p>
C'est ce que j'ai fait, bien sûr, cependant, merci à Uwe pour m'aider à trouver la source!
Set KeyPreview = true sur votre formulaire et ajoutez le code suivant à l'événement KeyPress du formulaire:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if SpinEdit1.Focused and (Key = #13) then begin Key := #0; // Cancels the keypress Perform(CM_DIALOGKEY, VK_RETURN, 0); // Invokes the default button end; end;
Avez-vous regardé dans " \ Borland \ Delphi5 \ Source \ Samples \"?
@Uwe, merci! C'est exactement où spin.pas est. Je suppose que j'ai eu une recherche de fichier échoue.