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 :

TMessage WM_KEYDOWN limité ?


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut TMessage WM_KEYDOWN limité ?
    Bonjour à toutes et à toi

    J'utilise un stringgird dérivé :

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    unit StringGridRu;
     
    {Aidé par Andnotor}
     
    interface
     
    uses
      SysUtils, Classes, Controls, Grids, Messages, Windows, Dialogs;
     
    type
     
      TStringGridRu = class(TStringGrid)
      private
        { Déclarations privées }
      protected
        { Déclarations protégées }
         procedure WMVSCROLL(var Message :TMessage); message WM_VSCROLL;
         procedure WMMOUSEWHEEL(var Message :TMessage); message WM_MOUSEWHEEL;
         procedure WMKEYDOWN(var Message :TMessage); message WM_KEYDOWN;
      public
        { Déclarations publiques }
          procedure CheckInBounds;
      published
        { Déclarations publiées }
      end;
     
    procedure Register;
     
    implementation
     
     
    procedure  TStringGridRu.WMVSCROLL(var Message :TMessage);
    begin
      inherited;
      CheckInBounds;
      Invalidate;
    end;
     
    procedure TStringGridRu.WMMOUSEWHEEL(var Message: TMessage);
    begin
      inherited;
      CheckInBounds;
      Invalidate;
    end;
     
    procedure TStringGridRu.WMKEYDOWN(var Message: TMessage);
    begin
      Case Message.WParam of
        33:begin // Page Up
            inherited;
            CheckInBounds;
            Invalidate;
          end;
        34:begin // page Down
            inherited;
            CheckInBounds;
            Invalidate;
          end;
        38:begin // Up
            inherited;
            CheckInBounds;
            Invalidate;
          end;
        40:begin // Down
            inherited;
            CheckInBounds;
            Invalidate;
          end;
      end;
    end;
     
     
    procedure TStringGridRu.CheckInBounds;
    var
      i   :Integer;
    //  Col :integer;
      Row :integer;
    begin
      //Liste des Shapes
      for i := 0 to ControlCount -1 do
      begin
    //    col := HiWord(Controls[i].Tag);
        Row := Controls[i].Tag;
     
        //Cache le Shape si la ligne est masquée ou le positionne
        Controls[i].Visible := CellRect(0, Row).Top > 0;
        Controls[i].Top     := CellRect(0, Row).Top;
      end;
    end;
     
    procedure Register;
    begin
      RegisterComponents('RuCompos', [TStringGridRu]);
    end;
    end.
    J'ai mis en place aujorud'hui cette procédure dans cet unité
    procedure TStringGridRu.WMKEYDOWN(var Message: TMessage);

    Pour que si l'utilisateur utilise les fleches bas/haut ou Page down/ Page UP que s'exécute la procédure CheckInBounds.

    Mais le problème, plus aucune autre touche est reconnu, si j'appuie sur la fleche de droite par exemple il ne se passe plus rien sur mon Stringgrid

    Que puis-je faire ? autre message windows ?

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    lol

    j'ai trouvé j'ai oublié dans mon case of le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        else
          inherited;
      end;
    end;
    Merci

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

Discussions similaires

  1. Limitation DirectSound
    Par Sub0 dans le forum DirectX
    Réponses: 1
    Dernier message: 28/02/2003, 11h21
  2. [Turbo Pascal] Limite de la mémoire virtuelle
    Par moon tiger dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 08/02/2003, 22h30
  3. Limiter le déplacement de la souris
    Par el_bouleto dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/11/2002, 23h56
  4. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 22h09
  5. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31

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