IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

KeyDown et TEdit


Sujet :

Composants FMX Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2021
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : décembre 2021
    Messages : 106
    Points : 123
    Points
    123
    Par défaut KeyDown et TEdit
    Bonjour,

    J'ai essayé de recycler une fonction me permettant de faciliter la saisie à l'utilisateur (dans le cas présent pour saisir une heure) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure Form1.EFDebutKeyDown(Sender: TObject; var Key: Word;
      var KeyChar: Char; Shift: TShiftState);
    begin
      if (Length(EFDebut.Text)=2) And (Key <> 8) And (Key <> 58) then 
        EFDebut.Text := EFDebut.Text+':';
      EFDebut.SelStart := Length(EFdebut.Text);
    end;
    Avec Delphi 6, ça fonctionne sans soucis, mais en FMX (Delphi 11), la plupart du temps, et ce pour beaucoup de touches, Key = 0 .
    Est-ce normal?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 703
    Points : 22 792
    Points
    22 792
    Par défaut
    Faut lire la doc : https://docwiki.embarcadero.com/Libr...ontrol.KeyDown sur la gestion de Key ou KeyChar selon leur valeur respective et de préférence faut utiliser les constantes tel que System.UITypes.vkBack
    58 ? c'est Maj ... mieux vaut utiliser la valeur de Shift
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2021
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : décembre 2021
    Messages : 106
    Points : 123
    Points
    123
    Par défaut
    Faut lire la doc
    Je plaide coupable..

    Ca fonctionne parfaitement maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (Length(EFDebut.Text)=2) And (KeyChar <> ':') And (Key <> 8) then

  4. #4
    Membre émérite Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 1 547
    Points : 2 933
    Points
    2 933
    Par défaut
    Du coup pour key<>8 tu devrais aussi utiliser les constantes vkXXX définies, parce que si quelqu'un (ou toi) relis le code dans quelques mois ou années, qui se souviendra que c'est la fabulation ?

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2021
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : décembre 2021
    Messages : 106
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par pprem Voir le message
    Du coup pour key<>8 tu devrais aussi utiliser les constantes vkXXX définies, parce que si quelqu'un (ou toi) relis le code dans quelques mois ou années, qui se souviendra que c'est la fabulation ?
    Eh bien à l'époque ou j'ai écris cette fonction je n'avais pas réussi à utiliser ces constantes, du coup je me suis contenté du #58 et #8.

    par exemple quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if (Length(EFDebut.Text)=2) And (KeyChar <> ':') And (Key <> VK_BACK) then
    J'ai l'erreur
    [dcc64 Error] E2003 Undeclared identifier: 'VK_BACK'.
    Je me suis dis qu'il fallait peut-être ajouter quelque chose dans les uses mais en cherchant rapidement je n'ai pas trouvé alors je suis allé à la facilité

    Mais c'est vrai que déjà la en la copiant j'ai du réessayer pour me rappeler

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 703
    Points : 22 792
    Points
    22 792
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    ... System.UITypes.vkBack
    Euh, pourtant j'ai indiqué le nom complet juste au dessus


    et VK_BACK c'est dans Winapi.Windows a éviter en FMX
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2021
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : décembre 2021
    Messages : 106
    Points : 123
    Points
    123
    Par défaut
    En fait je me suis senti tellement bête quand j'ai lu le "Faut lire la doc", que je me suis précipité sur la doc sans lire la fin du message...

    Je vais l'intégrer dans l'appli VCL du coup et tant pis pour le FMX je vais mettre des commentaires ^^

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 703
    Points : 22 792
    Points
    22 792
    Par défaut
    en VCL : VK_BACK (Winapi.Windows est inclus par défaut dans une unité TForm créée via l'IDE)
    en FMX : vkBack (System.UITypes à ajouter)

    Pas besoin de commentaire, juste utiliser ce qu'il faut au bon endroit
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Delphi 7] question avec Tedit
    Par shell13010 dans le forum Débuter
    Réponses: 9
    Dernier message: 25/03/2009, 19h36
  2. Masque avec TEdit
    Par dakodak dans le forum Débuter
    Réponses: 3
    Dernier message: 23/10/2008, 13h37
  3. Comment utiliser keydown avec trois touches ou plus
    Par pedro85 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/10/2007, 16h32
  4. Utiliser Evenement KeyDown avec un controle ActiveX
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 31/05/2007, 14h24
  5. Probleme avec TEdit
    Par MDiabolo dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/12/2005, 00h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo