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

Contribuez Delphi Discussion :

Intercepter les touches de control d'un TControl/TCustomControl/TWinControl


Sujet :

Contribuez Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut Intercepter les touches de control d'un TControl/TCustomControl/TWinControl
    Pour gérer toutes les touches y compris la tabulation et les touches directionnelles, il faut implémenter la fonction WMGetDlgCode. Cette fonction est appelée à chaque appuie de touches.

    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
    //http://support.microsoft.com/kb/83302
      TEssai = class(TCustomControl)
      protected
        fWantTabs : Boolean ;
        fWantReturns : Boolean ;
        procedure WMGetDlgCode(var Msg: TWMGetDlgCode); message WM_GETDLGCODE;
        procedure KeyUp(var Key: Word; Shift: TShiftState); override;
        procedure KeyDown(var Key: Word; Shift: TShiftState); override;
        procedure KeyPress(var Key: Char); override;
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        constructor Create(Owner:TComponent); override;
      published
        property WantTabs : boolean read fWantTabs write fWantTabs default false ;
        property WantReturns : boolean read fWantReturns write fWantReturns default true ;
      end;
     
    constructor  TEssai.Create(Owner:TComponent);
    begin
        inherited Create(Owner);
     
        TabStop := True ;
        Color := clRed ;
        Height := 21 ;
        Width := 121 ;
        fWantTabs := False ;
        fWantReturns := true ;
    end ;
     
    procedure TEssai.WMGetDlgCode(var Msg: TWMGetDlgCode);
    begin
    // Applé à chaque appuie de touche
      inherited;
     
      Msg.Result := Msg.Result or DLGC_WANTARROWS or DLGC_WANTCHARS;
     
      // Désactive la tabulation pour passer au control suivant
      if fWantTabs then
        Msg.Result := Msg.Result or DLGC_WANTTAB;
      if fWantReturns then
        Msg.Result := Msg.Result or DLGC_WANTALLKEYS;
    end;
     
    procedure TEssai.KeyDown(var Key: Word; Shift: TShiftState);
    begin
        if Key = VK_DOWN
        then
            Color := clBlue ;
    end ;
     
    procedure TEssai.KeyUp(var Key: Word; Shift: TShiftState);
    begin
    end ;

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Merci pour ta participation
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. Intercepter les touches du clavier
    Par yacscream dans le forum C++Builder
    Réponses: 8
    Dernier message: 07/02/2007, 11h47
  2. Réponses: 9
    Dernier message: 23/05/2006, 15h33
  3. [C#2.0] Intercepter les touches du clavier
    Par iowa dans le forum Windows Forms
    Réponses: 10
    Dernier message: 28/04/2006, 11h42

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