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 VCL Delphi Discussion :

SetFocus et les EDIT


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 19
    Points
    19
    Par défaut SetFocus et les EDIT
    Bonjour à tous ;

    Je veux avoir plus d'information sur les edit.setfocus car j'utilise cette méthode pour contrôler les tabulations mais ça ne marche pas ?? alors comment faire pour bien les contrôler.Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure Tfiche.Edit1KeyDown(Sender: TObject;
      var Key: Word; Shift: TShiftState);
    begin
    if key=vk_return then
    edit3.SetFocus;
    end;

  2. #2
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Tu peux essayer ce bout de code (c'est ce qui est lancé sur tab) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    type
      TFakeWinControl = class(TWinControl); //petite astuce pour acceder a SelectNext qui est protected
     
    procedure Tfiche.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    begin
      if key = VK_RETURN then
        TFakeWinControl(TWinControl(Sender).Parent).SelectNext(TWinControl(Sender), True, True);
    end;

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 452
    Points : 24 860
    Points
    24 860
    Par défaut
    Attention entre OnKeyDown et OnKeyPress le comportement est différent

    Souvent, je mets un code de validation dans le OnKeyDown VK_RETURN alors pour éviter de tout mélanger,
    en particulier l'utilisation de Entrée comme équivalent de Tabulation,
    je le mets dans le OnKeyPress que je n'utilise que pour ce genre de contrôle (en D6, j'avais aussi IsNumeric qui n'est plus utile en XE2 )

    pour l'approche avec OnKeyPress, je me suis fait une fonction en D7 qui j'ai transformé en Helpers en XE2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm.edAllKeyPress(Sender: TObject; var Key: Char);
    begin
      EnterAsTab(Key);
    end;
    Dans une unité que l'on ajoutera en uses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    type
      TFormSliteHelper = class helper for TForm
      public
        /// <summary>EnterAsTab permet de gérer un ENTER comme la touche TAB pour naviguer de controle en controle</summary>
        function EnterAsTab(var Key: Char): Boolean;
        procedure SelectNextControl();
        procedure SelectPriorControl();
      end;
    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
    //------------------------------------------------------------------------------
    function TFormSliteHelper.EnterAsTab(var Key: Char): Boolean;
    begin
      if Key = Chr(CarriageReturn) then
      begin
        Result := True;
        if LongBool(GetAsyncKeyState(VK_SHIFT) and $8000) then
          SelectPriorControl()
        else
          SelectNextControl();
        Key := #0; // Evite le "dong" !
      end
      else
        Result := False;
    end;
     
    //------------------------------------------------------------------------------
    procedure TFormSliteHelper.SelectNextControl();
    begin
      // TControl.SelectNext est une méthode protégée
      // le plus simple pour passer au controle suivant c'est le message Windows
      Self.Perform(WM_NEXTDLGCTL, 0, 0);
    end;
     
    //------------------------------------------------------------------------------
    procedure TFormSliteHelper.SelectPriorControl();
    begin
      // If wParam is zero, the next control receives the focus; otherwise, the previous control with the WS_TABSTOP style receives the focus.
      Self.Perform(WM_NEXTDLGCTL, 1, 0);
    end;
    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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/11/2010, 11h21
  2. les Editions ENI ouvrage de Thierry Groussard, Alexandre Faulx-Briole
    Par turican2 dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 22/09/2009, 14h31
  3. Remplacer les edits par les dbEdits
    Par afatdz dans le forum Bases de données
    Réponses: 5
    Dernier message: 24/09/2008, 13h09
  4. Boucle sur les Edit(s)
    Par aydin24alain dans le forum Composants VCL
    Réponses: 12
    Dernier message: 07/03/2008, 12h39
  5. Bip non sollicité sur les Edit
    Par David dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/09/2003, 20h32

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