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

Langage Delphi Discussion :

key ne marche que dans procédure avec key ?


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 35
    Par défaut key ne marche que dans procédure avec key ?
    Bonsoir à tous.

    j'ai un petit problème avec les quelques lignes çi-dessous.

    en effet avec la procédure TForm1.SpeedButton1Click
    Delphi me dit que l'identificateur key est non déclaré.

    Comment se fait il alors que la procédure RadiButton2KeyPress marche bien.
    Celà veut-il dire que key ne marche qu'avec des procédures faisant appel à l'appui sur une touche?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;
     
    type
     
      TForm1 = class(TForm)
        SpeedButton1: TSpeedButton;
        RadioButton1: TRadioButton;
        RadioButton2: TRadioButton;
        Edit1: TEdit;
        procedure SpeedButton1Click(Sender: TObject);
        procedure RadiButton2KeyPress(Sender: TObject; var Key: Char);
     
      private
        { Déclarations privées }
     
      public
        { Déclarations publiques }
     
      end;
     
     
     
    var
      Form1: TForm1;
     
     
    implementation
     
     
    {$R *.dfm}
     
    procedure TForm1.RadiButton2KeyPress(Sender: TObject; var Key: Char);
    begin
    if(key in ['0'..'9']) then speedbutton1.enabled:=false;
    end;
     
     
    procedure TForm1.SpeedButton1Click(Sender: TObject; var Key: Char);
    begin
    if radiobutton1.checked =true then edit1.Text:='et patati et patata';
       if radiobutton2.checked =true then
        begin
          repeat
          {BlaBlaBla}
          until key <>#0;
        end;
    end;
     
    end.
    Si c'est le cas, comment faire pour qu'une procédure qui contient une boucle "infinie" s'arrête uniquement par l'appui sur une touche?


    Merci d'avance.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var SortieDesiree: Boolean;    // sert de condition de sortie de boucle => globale car doit être accessible aussi à une procédure qui la MAJ  
     
    procedure BouclInfinie;
    begin
      SortieDesiree:=False;
      repeat
        {BlaBlaBla}
        Application.ProcessMessages; // pour que la boucle autorise le traitement des messages Windows, notamment ceux qui déclencheront la MAJ de la condition de sortie
      until SortieDesiree;
    end;
     
    // reste à mettre du code pour modifier la valeur de SortieDesiree : ça peut être dans le OnChange d'un CheckBox, le OnKeyDown d'un composant...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 35
    Par défaut
    Merci tourlourou.

    Je viens justement de trouver cette info dans la FAQ.
    J'avais mal cherché!

    N' empêche que je me demande si le problème ne vient pas du fait que j'ai utilisé
    un speedButton à la place d'un Button. Car apparemment on peut pas tous ce permettre avec ça. Faudra que je teste...

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    pê suffit-il que le SpeedButton ait le focus pour que cela fonctionne ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 35
    Par défaut
    Bonjour

    Si le speedbutton à un faux cul c'est que c'est une femelle sinon il aurait une redingote.
    Trêve de plaisanterie je sais pas encore ce que c'est un focus.

    Merci beaucoup.

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    dans mon D5, le SpeedButton a une méthode Click(Sender; TObject) sans paramètre Key ! dans ce cas, avec le focus et une pression sur enter ou espace, on déclenche le Click mais sans savoir lequel a été pressé => revenir à la méthode avec un booléen global
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre confirmé Avatar de bs.box
    Inscrit en
    Mai 2008
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 174
    Par défaut Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    type
    
      TForm1 = class(TForm)
        SpeedButton1: TSpeedButton;
        RadioButton1: TRadioButton;
        RadioButton2: TRadioButton;
        Edit1: TEdit;
        procedure SpeedButton1Click(Sender: TObject);
        procedure RadiButton2KeyPress(Sender: TObject; var Key: Char);
      private
        { Déclarations privées }
    
      public
        { Déclarations publiques }
    
      end;
    
    var
      Form1: TForm1;
    implementation
    {$R *.dfm}
    
    procedure TForm1.RadiButton2KeyPress(Sender: TObject; var Key: Char);
    begin
    if(key in ['0'..'9']) then speedbutton1.enabled:=false;
    end;
    Essaye de corriger Radi par Radio
    Il se peut arrivé par une faute de frappe.

    Allez, a+

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 35
    Par défaut
    Merci à tous de m'avoir éclairé sur focus.
    et un mot en plus dans mon vocabulaire Delph(ien) (iste)!

    J'ai fais une faute de frappe ,Il fallait lire RadisButton2KeyPress
    car j'ai la version Delphi potager.

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

Discussions similaires

  1. Fonction de recherche dans tableau avec key
    Par blueace dans le forum Langage
    Réponses: 6
    Dernier message: 24/01/2014, 17h42
  2. Réponses: 7
    Dernier message: 07/04/2011, 10h42
  3. DataBinding ne marche que dans un sens avec un canvas
    Par Harry_polin dans le forum Windows Presentation Foundation
    Réponses: 13
    Dernier message: 19/01/2010, 12h19
  4. [RegEx] REGEX qui ne marche que dans certains cas
    Par Galdon dans le forum Langage
    Réponses: 4
    Dernier message: 14/01/2010, 09h15
  5. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43

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