Codes Delphes. Delphes - Codes Delphi. Modification des clés dans 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.

Les codes de clé virtuelle identifient les différentes clés virtuelles. Les touches virtuelles sont principalement constituées de touches de clavier réelles, mais incluent également des éléments « virtuels » tels que trois boutons de souris. Comment convertir un code de clé virtuelle en symbole.

Interceptez la saisie au clavier pour les contrôles qui ne peuvent pas recevoir le focus de saisie. Alors pourquoi ne pas les utiliser pour naviguer entre les champs. Les codes sont classés par ordre numérique. Cependant, en coulisses, c'est complètement nouvel outil. Les options de l'éditeur utilisées pour chaque fichier dépendent de l'extension ouvrir le fichier. Ces paramètres peuvent être configurés pour nouvelle page Options source dans la boîte de dialogue Propriétés de l'éditeur affichée dans la figure. Une autre fonctionnalité de l'éditeur, les modèles de code, est désormais spécifique à la langue.

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. DANS menu contextuel L'éditeur dispose également d'une commande "Pages", qui répertorie tous pages disponibles dans le sous-menu. Vous pouvez également ouvrir plusieurs fenêtres d'éditeur, chacune contenant plusieurs onglets. Ce le seul moyen

Raccourcis clavier dans Delphi - raccourcis clavier dans l'environnement de programmation Delphi

Plusieurs options affectent l'éditeur, comme vous pouvez le voir dans la boîte de dialogue Propriétés de l'éditeur sur la figure. Cependant, vous devez accéder à la page Paramètres de la boîte de dialogue Options d'environnement pour définir la fonctionnalité d'enregistrement automatique de l'éditeur. Cette option oblige l'éditeur à enregistrer tous les fichiers de code source à chaque exécution du programme, évitant ainsi la perte de données si le programme plante gravement dans le débogueur.

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.

Notez que la page d'aide qui décrit les raccourcis clavier n'est disponible dans son intégralité que si vous consultez l'élément d'index des raccourcis. Toutes les informations sont mises à jour immédiatement après la saisie du texte dans l'éditeur. Vous pouvez également modifier les noms des variables, des propriétés et des méthodes directement dans l'Explorateur de code. As-tu contrôle total au-dessus de la présentation des informations. Et vous pouvez réduire la profondeur de l'arborescence généralement affichée dans cette fenêtre en ajustant l'Explorateur de code.

Vous pouvez configurer l'explorateur de code à l'aide de la page des paramètres d'environnement appropriée, comme indiqué dans la figure. Figure 5 : Vous pouvez configurer l'Explorateur de code dans la boîte de dialogue Options d'environnement. Étant donné que chaque élément de l'arborescence de l'explorateur de code possède une icône indiquant son type, l'organisation par champ et par méthode semble moins importante que l'organisation par spécificateur d'accès. Vous pouvez utiliser Module Navigation pour passer de la définition d'une méthode ou d'une procédure à sa définition complète.

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.

Déplacez votre souris sur un symbole dans l'éditeur et une info-bulle vous indiquera où l'identifiant est déclaré. Cette fonctionnalité peut être particulièrement importante pour garder une trace des identifiants, des classes et des fonctions dans l'application que vous écrivez, ainsi que pour créer un lien vers le code source de la bibliothèque. Cependant, le véritable avantage de cette fonctionnalité est que vous pouvez la transformer en aide à la navigation appelé révision du code. Ces liens apparaissent avec la couleur bleue et le soulignement typiques des liens dans les navigateurs Web, et le pointeur se transforme en main lorsqu'il est positionné sur un lien.

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. Cette fonction de génération de code s'applique à méthodes générales , méthodes et propriétés de traitement des messages. Par exemple, si vous entrez code suivant dans la déclaration de classe. Le plus important et exemple utile

l'achèvement de classe est la génération automatique de code pour prendre en charge les propriétés déclarées dans les classes. Par exemple, si vous entrez dans une classe. Vous en trouverez davantage dans les propriétés du chapitre suivant. Prises ensemble, les techniques d'analyse de code reposent sur une analyse constante de l'arrière-plan du code source que vous écrivez et du code source. unités système

, qui sont référencés par le code source. L'infiltration de code comprend cinq fonctionnalités : la complétion de code, les modèles de code, les paramètres de code, l'évaluation de l'expression d'info-bulle et le dessin d'icônes d'info-bulle. Cette dernière fonctionnalité a déjà été abordée dans la section « Visualisation dans l'éditeur » ; les quatre autres sont abordés dans les sous-sections suivantes.
SurKeyPress OnKeyPress revient différentes significations

ASCII pour "g" et "G". Cependant, OnKeyDown et OnKeyUp ne font pas de différence entre les majuscules et les minuscules.
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 le code suivant au gestionnaire d'événements OnKeyPress et définissez KeyPreview sur True (voir ci-dessous).

Vous pouvez activer, désactiver et personnaliser chacune de ces fonctionnalités sur la page Analyse du code de la boîte de dialogue Propriétés de l'éditeur. Une fois le code terminé, vous pouvez sélectionner une propriété ou une méthode d'un objet en le visualisant simplement dans la liste ou en tapant ses premières lettres. La complétion du code vous permet également de rechercher valeur correcte dans la tâche d'affectation. Lorsque vous commencez à saisir du texte, la liste filtre son contenu en fonction du début de l'élément que vous avez inséré. La liste de complétion de code utilise des couleurs et plus encore informations détaillées pour vous aider à différencier les différents éléments.

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.

Une autre fonctionnalité est que pour les fonctions avec paramètres, les parenthèses sont incluses dans le code généré et l'info-bulle de la liste des paramètres s'affiche immédiatement. Sélectionnez-en simplement un et ils ajouteront la méthode appropriée à la déclaration de classe. Dans ce cas particulier, une liste de complétion de code permet choix multiple. L'achèvement du code comprend certains fonctionnalités supplémentaires, faciles à détecter. Quand tu l'appelles ligne vide, la liste comprend également des symboles d'unités communes qui ne sont pas encore inclus dans le mode d'emploi de l'appareil actuel.

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 :

Vous pouvez ajouter des modèles de code personnalisés afin de créer vos propres raccourcis vers les blocs de code fréquemment utilisés. Le symbole de la ligne verticale indique la position dans le code source où se trouvera le curseur dans l'éditeur après avoir développé le modèle. Vous devez sélectionner la position à laquelle vous souhaitez commencer à taper pour compléter le code généré par le modèle. Bien que les modèles de code puissent sembler initialement correspondre à la langue mots-clés, il s’agit d’un mécanisme plus général.

Entrez simplement le nom de la fonction ou de la méthode et une parenthèse ouverte, et les noms et types de paramètres apparaîtront immédiatement dans une info-bulle. Comme aide supplémentaire paramètre actuel affiché en gras. L'expression d'expression d'info-bulle est une fonction de débogage. Il vous montre la valeur de l'identifiant, de la propriété ou de l'expression qui se trouve sous le curseur de la souris. Dans le cas d'une expression, il faut généralement la sélectionner dans l'éditeur puis déplacer le pointeur de la souris sur le texte sélectionné.

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 y a quelques touches supplémentaires dans l'éditeur accès rapide, qui dépendent du style d'éditeur que vous avez choisi. Voici quelques-uns des raccourcis les moins connus. L'utilité des signets dans l'éditeur est limitée par le fait que nouveau signet peut remplacer un favori existant et que les signets ne sont pas permanents. Le nombre d'espaces utilisés est défini à l'aide de l'option Bloquer l'indentation sur la page Éditeur de la boîte de dialogue Options de l'éditeur. Une macro enregistre toutes les opérations de saisie, de déplacement et de suppression effectuées sur un fichier de code source. La lecture d'une macro répète simplement la séquence, une opération qui peut n'avoir aucun sens lorsque vous passez à un autre fichier de code source. Les macros de l'éditeur sont très utiles pour effectuer de manière répétée des opérations en plusieurs étapes, telles que le reformatage du code source ou l'organisation des données de manière plus lisible dans le code source. Le diagramme n'est pas généré automatiquement.

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 Aperçu de la clé 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.

Touches de navigation du code dans Delphi

La bonne nouvelle est que vous pouvez définir des propriétés simplement en traçant des flèches entre les composants. Cette situation est représentée sur la figure. Figure 6 : Diagramme montrant les relations entre les composants. Comme vous pouvez le constater, le paramètre de propriété est directionnel : si vous faites glisser une ligne de relation de propriété d'une modification vers une étiquette, vous finissez par essayer d'utiliser l'étiquette comme valeur de la propriété du champ d'édition. Comme cela n'est pas possible, vous verrez un message d'erreur indiquant le problème et vous invitera à connecter les composants dans l'ordre inverse. 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..

avec une icône d'application. Bien entendu, chaque application possède généralement une icône à l'échelle dans sa fenêtre principale, dans le panneau des sous-titres, à côté du nom de la fenêtre. La même icône est visible sur le panneau principal. Sous une forme assez simple, on peut changer l'icône et on peut facilement créer une petite animation en utilisant les icônes appropriées.

procédure Supposons que votre formulaire comporte plusieurs composants Edit et que la procédure Form.OnKeyPress ressemble à ceci : var Clé : Car ); TForm1.FormKeyPress(Expéditeur : TObject ; si Clé dans ["0".."9"] alors commencer Clé := #0;

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.

Tout d’abord, nous allons d’abord enregistrer les icônes que nous utilisons. Vous pouvez utiliser presque n’importe quel composant pouvant contenir une image. Après cela, assurez-vous simplement que l'icône change régulièrement, par exemple nous pouvons utiliser une minuterie. Nous allons vous montrer une solution simple pour remplacer deux icônes. Il ne vous reste plus qu'à définir l'intervalle de minuterie approprié et à créer une petite animation. Astuce très simple, donc sans grandes introductions. Utilisation pratique n'est peut-être pas aussi courant, mais cette fonctionnalité peut parfois être utile.

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.

Sous cela, peut-être avec un titre parfaitement clair, il n'y a rien d'autre à faire que de déplacer la souris de manière programmable vers espace de travail avec la possibilité de « cliquer » sur le bouton droit ou gauche. DANS exemple simple nous allons vous montrer l'activation du bouton Démarrer. Il est donc détecté à l'aide de l'écran.

Augmentez la taille de l'image et soustrayez à nouveau environ 20 pixels pour obtenir le bouton Démarrer. Ensuite, nous pouvons "cliquer" bouton gauche. Bien entendu, cet exemple ne fonctionnera que si vous avez un bouton Accueil avec le bouton Démarrer en position "classique" en bas de l'écran, peut-être que je n'ai pas besoin de vous le rappeler. Une fois que nous aurons un peu abordé le panneau principal, nous vous montrerons comment désactiver l'horloge. Un réglage simple détermine s’il faut afficher l’horloge.

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.

Afficher fenêtres supplémentaires sur la barre des tâches. Vous trouverez peut-être frustrant lorsque les fenêtres secondaires de votre application sont réduites au coin inférieur gauche du bureau. Non seulement cela n’a pas l’air joli, mais reprendre la fenêtre est un peu gênant.

Touches de navigation générales dans Delphi

Vous pouvez utiliser fonction suivante pour déterminer la fréquence du processeur. Le résultat ne sera pas tout à fait précis, mais si vous faites la moyenne de quelques résultats, vous vous rapprocherez assez de la réalité. Par exemple, vous pouvez voler vos jeunes frères et sœurs ou vos enfants avec une petite application qui leur rappellera constamment depuis combien de temps ils sont assis sur cet ordinateur. DANS la prochaine fois nous examinerons les raccourcis clavier, apprendrons comment lancer une application dans mode plein écran, comment s'assurer qu'une seule instance du programme est en cours d'exécution et d'autres détails.

Le code source Delphi 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 :