Codes de raccourci Delphi. Coder les touches de navigation dans Delphi. Raccourcis clavier dans Delphi - raccourcis clavier dans l'environnement de programmation Delphi

Depuis l’aube de l’industrie informatique, le clavier est le principal périphérique de saisie et conservera probablement sa place pendant encore longtemps.
Événements de clavier, ainsi que événements de souris, sont les principaux éléments d'interaction de l'utilisateur avec le programme. Cet article parlera de trois événements, qui vous permettent d'attraper frappes dans l'application Delphi : SurKeyDown, SurCléUp Et SurKeyPress.

Ils doivent être distingués par trois points suivant le texte de l'élément, ce qui n'est pas absolument nécessaire, mais c'est certainement une bonne convention à suivre. Ils se distinguent par le triangle de droite.

  • Commandes : Éléments utilisés pour passer un ordre pour lancer une action.
  • Ils ne se distinguent pas optiquement.
  • Configuration : éléments permettant de désactiver ou d'activer une option.
  • Activer la sélection est visuellement mis en évidence par une coche à gauche de l'élément.
  • Boîtes de dialogue : entrées qui provoquent l'apparition d'une boîte de dialogue.
Notes générales et symboles liés à la conception des menus.

Pour recevoir une saisie au clavier, les applications Delphi peuvent utiliser deux méthodes. Le moyen le plus simple consiste à utiliser l'un des composants qui répondent automatiquement aux frappes au clavier, tels que Modifier. La deuxième façon consiste à créer des procédures sur le formulaire qui géreront les pressions et les relâchements de touches.
SurKeyDown Ces gestionnaires peuvent traiter à la fois les frappes simples et les combinaisons. Voici donc les événements : SurCléUp- appelé lorsqu'une touche du clavier est enfoncée. SurKeyPress- appelé lorsqu'une touche du clavier est relâchée.

- appelé lorsqu'une touche correspondant à un caractère ASCII spécifique est enfoncée.

Modification des clés dans Delphi Vous pouvez insérer un élément de menu directement dans une barre de menus. Ce bonne façon évitez cela. Les utilisateurs sélectionnent les composants de la barre de menus pour explorer la structure. Peu de personnes ont suggéré que vous puissiez exécuter la commande directement. Cependant, si vous décidez de placer la commande directement dans le panneau, placez au moins

point d'exclamation. choix fréquent cet article dure longtemps. Parfois, il est préférable de créer un niveau imbriqué pour placer le groupe directement au niveau du menu principal et séparer les éléments en lignes. Il n'est plus recommandé d'effectuer davantage de plongées. Si jamais vous installez une application avec plus de deux couches, vous découvrirez très bientôt la qualité du programme de désinstallation de cette application.

Il est maintenant temps de voir à quoi ressemblent les en-têtes du gestionnaire dans le programme :

procédure TForm1.FormKeyDown(Expéditeur : TObject; var procédure TForm1.FormKeyUp(Expéditeur : TObject; var Clé : Mot ; Maj : TShiftState); ... procédure var Clé : Car );

Tous les événements en ont un paramètre général, généralement appelé Clé. Ce paramètre permet de transmettre le code de la touche enfoncée. Paramètre Changement(dans les procédures OnKeyDown et OnKeyUp), indique si une touche a été enfoncée en combinaison avec Changement, Alt, Et Ctrl.

Une grande prudence doit également être prise lors de la modification des définitions au moment de l'exécution. Par exemple, si vous disposez d'une option « Afficher le tableau » dans un menu, ce serait une bonne idée de modifier le texte en Masquer le tableau une fois que l'utilisateur a sélectionné cet élément. Mais il n'est pas très intelligent de modifier les éléments de manière "brutale" plutôt que de conserver leur valeur booléenne et de changer le tableau "Show Table" en "Show List". Il n’y a pas beaucoup d’étapes déroutantes pour les utilisateurs.

L'un d'eux, cependant, cache les éléments de menu. Si vous masquez complètement un élément, et si vous répétez quelque chose de temps en temps, le menu devient complètement inutilisable. Les utilisateurs recherchent souvent des « poppers » en fonction uniquement de leur position. Les éléments de menu doivent être logiquement divisés en sections. Quantité maximale les éléments d’une section ne doivent pas dépasser six.

Se concentrer
Le focus est la capacité de recevoir les entrées de l'utilisateur via une souris ou un clavier.

Seuls les objets ayant le focus peuvent recevoir des événements clavier. Sous la forme d'une application active, un seul composant peut être actif (avoir le focus) à la fois.

Certains composants tels que TImage, TPaintBox, TPanel et TLabel ne peuvent pas recevoir le focus, en d'autres termes, ce sont des composants qui héritent de TGraphicControl. De plus, les composants invisibles tels que TTimer ne peuvent pas recevoir le focus. Il est également important de respecter menu. Le principe de l'utilisateur d'abord exige que l'utilisateur commence à utiliser les commandes qu'il connaît bien. La dernière chose devrait être de l'aide. Un autre point est d'utiliser des raccourcis clavier. C'est exactement la même chose que dans le cas précédent. C'est un autre problème : la langue. Ma recommandation : si vous créez une application destinée à être utilisée en République tchèque, créez un menu tchèque. Nous sommes Tchèques, nous écrivons le tchèque et nous n’en avons pas peur.

Pour distribuer votre produit à l’étranger, créez des mutations linguistiques. En plus de des avantages indéniables pour l'utilisateur, cela ajoute du professionnalisme à votre programme. S'ajoutent à ces mutations linguistiques. Pour résoudre ce problème, le texte de l'élément de menu est chargé à partir d'un fichier ou d'un menu dans module séparé applications, ou crée fichiers exécutables Il existe un menu séparé pour chaque langue, chaque mode a ses propres avantages et inconvénients.

OnKeyDown, OnKeyUp
Les événements OnKeyDown et OnKeyUp fournissent le niveau de réponse clavier le plus bas. Les gestionnaires OnKeyDown et OnKeyUp peuvent répondre à n'importe quoi touches du clavier, y compris les touches de fonction et les combinaisons avec les touches Shift, Alt et Ctrl.

Les événements de clavier ne s’excluent pas mutuellement.

Lorsque l'utilisateur appuie sur une touche, deux événements OnKeyDown et OnKeyPress sont générés, et lorsque l'utilisateur la relâche, un seul événement est généré : OnKeyUp. Si l'utilisateur appuie sur l'une des touches que OnKeyPress ne peut pas détecter, alors un seul événement OnKeyDown sera généré, et une fois relâché, OnKeyUp. Vous pourrez le placer n'importe où car seul un petit carré sera affiché et le menu sera en au bon endroit

. Double-cliquez sur ce carré pour ouvrir le concepteur de menus. Il vous offre tout ce dont vous avez besoin. Cliquez sur le nom du nouvel élément pour rédiger une description. Vous entrez le code que vous souhaitez faire lors de la sélection d'un article.

Pour utiliser un élément pour étendre un autre sous-menu, cliquez dessus avec le bouton droit et sélectionnez Nouveau sous-menu. Il est utile de savoir comment définir un email « actif ». Vous pouvez également utiliser ce qu'on appelle des modèles de menu. Vous pouvez également cliquer dessus avec le bouton droit et sélectionner Coller à partir du modèle. Ces modèles sont livrés avec un certain nombre de menus « standardisés », vous n'avez donc pas à vous soucier de répertorier tous les éléments. Vous pouvez modifier le menu que vous avez créé, puis l'enregistrer à nouveau comme modèle pour votre prochaine utilisation.
SurKeyPress OnKeyPress revient ASCII pour "g" et "G". Cependant, OnKeyDown et OnKeyUp ne font pas de différence entre les majuscules et les minuscules.

Options de clé et de changement de vitesse
Le paramètre Key peut être modifié afin que l'application reçoive un code différent pour la touche enfoncée. De cette façon, vous pouvez limiter l'ensemble des différents caractères que l'utilisateur peut saisir sur le clavier. Par exemple, vous permet de saisir uniquement des chiffres. Pour ce faire, ajoutez OnKeyPress au gestionnaire d'événements code suivant et définissez KeyPreview sur True (voir ci-dessous).

Le seul problème est que modèles standards Bien entendu, ils ne contiennent que des menus en anglais. Regardons les propriétés de l'élément de menu. C'est dégoûtant et sert simplement à montrer à quoi un menu ne devrait pas ressembler. L'exécution du programme est un peu plus compliquée. Le raccourci apparaîtra automatiquement à côté de l'élément.

Cependant, il arrive parfois que nous devions utiliser différents éléments dans le menu ou un menu complètement différent. Généralement, il existe deux types de menus. Dans ce cas, créez simplement deux différents menus, définissez-en une par défaut et ajoutez une deuxième commande de menu quelque part. Les éléments de menu ont plusieurs méthodes. Ajouter, qui ajoute un élément à la fin du menu.

si Clé dans["a".."z"] + ["A".."Z"] alors Clé :=#0

Cette expression teste si le paramètre Key contient des caractères minuscules ("a".."z") et des caractères majuscules ("A".."Z"). Si tel est le cas, le paramètre est défini sur zéro pour empêcher la saisie dans le composant Edit (par exemple).
Windows définit des constantes spéciales pour chaque clé. Par exemple, VK_RIGHT correspond au code clé de la flèche droite.

Si vous en avez besoin, vous avez trois options. Ajoutez un élément au programme en utilisant la procédure décrite ci-dessus. . Tout récemment, il n’y a pas de nouvelle application qui ne dispose pas d’un menu contextuel. Il s'ouvre généralement lorsqu'on appuie dessus bouton droit souris. Son sort réside principalement dans le fait qu'il ne contient que des objets qui circulent actuellement.

C'est pourquoi nous n'entrerons pas dans les détails. Tout ce que nous expliquons garantira que le menu contextuel « correct » s'ouvre toujours. Remarque pour les utilisateurs avancés. Par exemple, vous pouvez vérifier certains paramètres et modifiez les éléments du menu. Éléments menu contextuel s'appliquent sans exception à ce qui a été dit à propos des éléments du menu principal.

Pour faire fortune touches spéciales, comme TAB ou PageUp, vous pouvez utiliser la fonction API Obtenir l'état de la clé. Les touches d'état peuvent avoir trois états : relâchées, enfoncées et activées. Si le bit de poids fort est 1, alors la touche est enfoncée, sinon elle est relâchée. Pour vérifier ce bit, vous pouvez utiliser Fonction API SalutWord. Si le bit le moins significatif est 1, alors la clé est activée. Voici un exemple d'obtention de l'état d'une clé spéciale :

Protège les programmes des crackers

Voici comment consulter les suggestions des utilisateurs. Dans le prochain travail, nous examinerons enfin quelque chose de « brillant », en particulier les exceptions. Le but de cette série est de vous présenter les règles de base du cracking, de vous apprendre à contrôler les programmes nécessaires aux crackers et de vous apprendre à protéger votre logiciel. Il s’agit du type de protection le plus courant. On le voit presque partout, mais c’est aussi le moins fiable. La plus grande erreur dans la protection du numéro d'enregistrement est le même numéro d'enregistrement.

si HiWord (GetKeyState (vk_PageUp))<> 0 alors ShowMessage("Page précédente - BAS") autre ShowMessage("PageUp - UP");

Dans les événements OnKeyDown et OnKeyUp, Key est une valeur non signée sur deux octets (Word) qui représente l'espace virtuel. Clé Windows. Pour obtenir la valeur d'un symbole, vous pouvez utiliser la fonction Chr. Dans l'événement OnKeyPress, le paramètre Key est une valeur Char qui représente un caractère ASCII.

Les événements OnKeyDown et OnKeyUp ont un paramètre Shift de type TShiftState. Dans Delphi, le type TShiftState est défini comme un ensemble d'indicateurs qui déterminent l'état de Alt, Ctrl et Shift lorsqu'une touche est enfoncée.

Il n’y a alors aucun problème pour trouver votre numéro sur Internet. La deuxième façon de protéger un programme à l'aide d'un numéro de série est de modifier numéro de série selon les éléments saisis. Généralement, plus il y a d'éléments, mieux c'est, donc les éléments seront idéaux : nom, entreprise, numéro d'enregistrement. Un autre, et à mon avis, meilleure protection Le numéro de série est que le numéro dépend de la machine sur laquelle il fonctionne. Le numéro de série est souvent utilisé disque dur. Cependant, il est désormais possible de promouvoir l'enregistrement du numéro d'enregistrement en ligne via Internet aux dépens des autres.

Par exemple, le code suivant (du gestionnaire OnKeyUp) concatène la chaîne « Ctrl + » avec la touche enfoncée et affiche le résultat dans le titre du formulaire :

Transférer les événements du clavier vers un formulaire
Le gestionnaire de clavier peut opérer à deux niveaux : le niveau du composant et le niveau du formulaire. Propriété du formulaire détermine si les événements clavier du formulaire seront déclenchés avant les événements clavier du composant, puisque le formulaire peut recevoir toutes les frappes destinées au composant ayant à l'heure actuelle se concentrer.

Ceci est fondamentalement gênant pour les utilisateurs qui ne disposent pas de connexion Internet. Ce type de protection est très souvent combiné à la protection du numéro d'enregistrement. Une fois que vous aurez entré le bon numéro d’enregistrement, la restriction sera annulée. Encore une fois, il s’agit d’un type de défense très peu fiable et facile à surmonter. Ce type de protection présente deux inconvénients. Tout d’abord, il n’est pas difficile de trouver du code qui vérifie si le délai d’attente a expiré. Fondamentalement, le programme masque l'heure à laquelle il a été défini dans le registre ou dans un fichier sur votre disque dur.

Le deuxième problème est que le programme doit d'une manière ou d'une autre obtenir date actuelle et le temps, il n'est donc pas difficile de trouver cette procédure et de modifier la valeur de retour ou de modifier l'instruction de saut qui devrait être là quelque part. Grosse erreur serait d'utiliser un tel chèque.

Pour intercepter les frappes au niveau du formulaire avant qu'elles ne soient transmises aux composants du formulaire, vous devez définir la propriété KeyPreview sur True. Après cela, le composant recevra toujours les événements, mais ils accéderont d'abord au formulaire pour permettre au programme d'autoriser ou de refuser la saisie. divers personnages.

Par exemple, la protection résidente d'une version d'essai d'un antivirus ne fonctionne que pendant un certain temps avant de s'éteindre et vous devez ensuite redémarrer le système. C’est une défense très solide et il est très difficile de la surmonter. Dans un fichier clé, un lanceur de programme ou un programme de décompression peut être exécuté au démarrage. Protection fichiers clés peut également être combiné avec des restrictions de temps qui seront annulées lors du chargement du fichier clé.

Si cette protection est programmée par l’administration, elle est quasiment insurmontable. L'attaquant doit soit imiter parfaitement la clé matérielle en utilisant logiciel, ou il faudrait commencer à créer une clé matérielle. Dans le premier cas, vous pouvez vous protéger efficacement, et dans le second cas, l'attaquant copiera la structure clé matérielle et créera la même somme d'argent que l'achat version légale programmes. Les différences entre eux sont minimes.

Supposons que votre formulaire comporte plusieurs composants Edit et que la procédure Form.OnKeyPress ressemble à ceci :

procédure TForm1.FormKeyPress(Expéditeur : TObject ; var Clé : Car ); commencer si Clé dans ["0".."9"] alors Clé := #0 fin;

Si l'un des composants Edit a le focus et que la propriété KeyPreview est définie sur False, alors ce code ne sera pas exécuté - en d'autres termes, si l'utilisateur appuie sur la touche "5", un "5" apparaîtra dans le composant Edit qui a le focus.

Internet a également commencé à se développer très rapidement et la communication est devenue de plus en plus rapide, ce qui a été le signal pour la distribution de copies de jeux via Internet. Il s’agissait principalement de jeux dits rapides. Contre les ondulations, les développeurs se sont battus en vérifiant la disponibilité de parties du programme qu'ils considéraient comme du gaspillage, ce sont donc les crackers qui ont été les victimes. Ce sont des erreurs délibérément créées qui entravent le fonctionnement du brûleur. Le programme vérifie ensuite ces erreurs, et l’astuce est qu’il peut les rechercher dans un ordre aléatoire.

Il contient également quelques astuces anti-débogage, mais elles sont suffisamment faibles pour protéger le format. Nous connaissons probablement tous la version démo classique du jeu, où vous jouez une mission avec une voiture et la fin. Une option est d'acheter version complète candidatures.

Toutefois, si KeyPreview est défini sur True, l'événement OnKeyPress du formulaire se déclenchera avant que le composant Edit ne voie la touche enfoncée. Par conséquent, si l'utilisateur appuie sur la touche « 5 », alors Key sera remplacé par une valeur zéro, empêchant ainsi les caractères numériques d'entrer dans Edit.

ANNEXE : Tableau des codes des clés virtuelles.

Symbolique
nom de constante
Valeur
(hexadécimal)
Equivalent clavier (ou souris)
VK_LBUTTON 01 Gauche bouton de la souris
VK_RBUTTON 02 Bouton droit de la souris
VK_CANCEL 03 Traitement de rupture de contrôle
VK_MBUTTON 04 Bouton central de la souris (souris à trois boutons)
VK_RETOUR 08 Touche RETOUR ARRIÈRE
VK_TAB 09 Touche TAB
VK_CLEAR 0C Touche EFFACER
VK_RETOUR 0D Touche ENTRÉE
VK_SHIFT 10 Touche MAJ
VK_CONTROL 11 Touche CTRL
VK_MENU 12 Touche ALT
VK_PAUSE 13 Touche PAUSE
VK_CAPITAL 14 Touche CAPS LOCK
VK_ESCAPE 1B Touche ÉCHAP
VK_ESPACE 20 BARRE D'ESPACE
VK_PRIOR 21 Touche PAGE SUIVANTE
VK_NEXT 22 Touche PAGE SUIVANTE
VK_END 23 Touche FIN
VK_HOME 24 Touche ACCUEIL
VK_LEFT 25 Touche FLÈCHE GAUCHE
VK_UP 26 Touche FLÈCHE VERS LE HAUT
VK_RIGHT 27 Touche FLÈCHE DROITE
VK_DOWN 28 Touche FLÈCHE VERS LE BAS
VK_SELECT 29 Touche SÉLECTIONNER
VK_PRINT 2A Touche IMPRIMER
VK_EXECUTE 2B Touche EXÉCUTER
VK_SNAPSHOT 2C Touche IMPRIMER ÉCRAN
VK_INSERT 2D Clé INS
VK_DELETE 2E Touche SUPPR
VK_HELP 2F Touche AIDE
30 0 clé
31 1 clé
32 2 clés
33 3 clés
34 4 clés
35 5 clés
36 6 clés
37 7 clé
38 8 clés
39 9 clé
41 Une clé
42 Touche B
43 Touche C
44 Touche D
45 Touche E
46 Touche F
47 Touche G
48 Clé H
49 Je clé
4A Clé J
4B Clé K
4C Clé L
4D Touche M
4E Touche N
4F Ô clé
50 Touche P
51 Touche Q
52 Touche R
53 Touche S
54 Touche T
55 Clé U
56 Touche V
57 Touche W
58 Touche X
59 Touche Y
5A Clé Z
VK_NUMPAD0 60 Pavé numérique 0 clé
VK_NUMPAD1 61 Pavé numérique 1 touche
VK_NUMPAD2 62 Touche du pavé numérique 2
VK_NUMPAD3 63 Pavé numérique 3 touches
VK_NUMPAD4 64 Pavé numérique 4 touches
VK_NUMPAD5 65 Pavé numérique 5 touches
VK_NUMPAD6 66 Pavé numérique 6 touches
VK_NUMPAD7 67 Pavé numérique 7 touches
VK_NUMPAD8 68 Pavé numérique 8 touches
VK_NUMPAD9 69 Pavé numérique 9 touches
VK_SEPARATEUR 6C Clé de séparation
VK_SUBTRACT 6D Touche de soustraction
VK_DÉCIMAL 6E Clé décimale
VK_DIVIDE 6F Clé de division
VK_F1 70 Touche F1
VK_F2 71 Touche F2
VK_F3 72 Touche F3
VK_F4 73 Touche F4
VK_F5 74 Touche F5
VK_F6 75 Touche F6
VK_F7 76 Touche F7
VK_F8 77 Touche F8
VK_F9 78 Touche F9
VK_F10 79 Touche F10
VK_F11 7A Touche F11
VK_F12 7B Touche F12
VK_F13 7C Touche F13
VK_F14 7D Touche F14
VK_F15 7E Touche F15
VK_F16 7F Touche F16
VK_F17 80H Touche F17
VK_F18 81H Touche F18
VK_F19 82H Touche F19
VK_F20 83H Touche F20
VK_F21 84H Touche F21
VK_F22 85H Touche F22
VK_F23 86H Touche F23
VK_F24 87H Touche F24
VK_NUMLOCK 90 Touche VERROU NUM
VK_SCROLL 91 Touche DÉFILEMENT VERROUILLÉ
VK_LSHIFT A0 Touche MAJ gauche
VK_RSHIFT A1 Touche MAJ droite
VK_LCONTROL A2 Touche CONTROL gauche
VK_RCONTROL A3 Touche CONTROL droite
VK_LMENU A4 Touche MENU gauche
VK_RMENU A5 Touche MENU droite
VK_PLAY FA. jouer la touche
VK_ZOOM Facebook Touche de zoom

Ce n'est un secret pour personne langue moderne La programmation Delphi était basée sur le Pascal plus courant et n'a pas eu d'indépendance pendant un certain temps. Cependant, Delphi est désormais un langage de programmation en développement à part entière, alors qu'auparavant il n'était qu'un dérivé de Pascal, créé pour représenter un dialecte de ce langage.

Delphi, équipé de son propre environnement de programmation, a tout conditions nécessaires Et traits distinctifs langue indépendante, y compris personnels codes sources. À propos, les codes Delphi sont publiés et accessibles au public sur la page des développeurs, accompagnés des commentaires nécessaires concernant la possibilité de modifier les codes sources et de créer propres applications en utilisant Delphi.

Original Code Delphes peut être divisé en modules et fichiers de projet. Ces éléments sont soumis aux mêmes conventions. Les fichiers de projet Delphi ont des extensions RPD. Ces fichiers sont conçus comme principaux fichiers sources pour tous les projets. Tous les modules pouvant être utilisés dans un projet ont toujours une extension PAS. Les projets peuvent également utiliser fichiers supplémentaires(par exemple, commandes, HTML, DLL, etc.). De tels fichiers sont souvent très importants, mais n’ont que très peu à voir avec notre sujet.

Pour pouvoir utiliser les fichiers sources, il est sans aucun doute nécessaire d'effectuer un certain travail sur ceux-ci. actions importantes. De telles actions incluent la définition d'un nom ou le renommage. Pour Langue Delphes un nom de fichier plus long est fourni, ce qui rend le travail beaucoup plus pratique. Si le nom du fichier utilise plus d'un mot, vous devez utiliser lettres majuscules. Cette façon de nommer les fichiers s'appelle InfixCaps ou d'une autre manière : CamelCaps.

Pour organiser vos fichiers sources, vous aurez besoin de savoir quels éléments les modules peuvent contenir. Une liste de ces éléments dans l’ordre requis est présentée ci-dessous :

  • Informations sur les droits d'auteur (Copyright/ID) ;
  • Nom de l'unité ;
  • Déclaration des fichiers inclus (Inclure les fichiers);
  • Section interfaces ;
  • Définitions supplémentaires ;
  • Mise en œuvre
  • Déclaration des modules utilisés (clause Uses) ;
  • Une fin de clôture et un point.

Des éléments supplémentaires peuvent être structurés selon les souhaits de l'utilisateur. Cependant, même dans ce cas, il est nécessaire de respecter certaines conditions concernant l'ordre d'écriture du copyright, le nom du module, les directives et définitions conditionnelles, les directives du compilateur et les fichiers d'inclusion et les définitions de connexion. C’est l’ordre dans lequel les éléments listés ci-dessus doivent être placés.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :