begin process at 2010 03 19 05:54:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

evenement clavier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

evenement clavier

lundi 1 décembre 2008 à 08:15:30 | evenement clavier

impossibleok

bjr;
comment peut on savoir que la touche "Ctrl" est enfoncée?
merci.
lundi 1 décembre 2008 à 09:19:01 | Re : evenement clavier

simonpelloquin

Bonjour,

Sur ta form, passe la propriété KeyPreview à true. Ça permet d'intercepter toutes les touches pressées. Ensuite, tu n'as plus qu'à gérer le OnKeyDown de ta form.

En espérant que ça répondra à ta demande

Simon
lundi 1 décembre 2008 à 09:35:24 | Re : evenement clavier

JulioDelphi

Membre Club Administrateur CodeS-SourceS
Si tu dois connaitre le statut d'une touche sans que ton programme sois en focus ou visible, il te faudra passer par un HOOK.
lundi 1 décembre 2008 à 09:57:02 | Re : evenement clavier

impossibleok

la propriété KeyPreview de la form est à true
mais le code si dessous ne repond pas !!!

procedure TForm16.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (GetKeyState(VK_CONTROL) = 1) then
DBGrid1.Options := DBGrid1.Options + [dgMultiSelect];
end;

???
lundi 1 décembre 2008 à 13:52:12 | Re : evenement clavier

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

procedure
TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if ssCtrl in Shift then
    ShowMessage('Kikoo !');
end;
lundi 1 décembre 2008 à 14:12:11 | Re : evenement clavier

simonpelloquin

L'inconvénient de ma méthode par rapport à celle de Julio, c'est qu'il te faut également penser à gérer le onKeyUp pour enlever l'option MultiSelect quand tu relâche Ctrl... Celle de Julio est plus juste mais plus dure à piger aussi...

Simon
lundi 1 décembre 2008 à 16:36:31 | Re : evenement clavier

impossibleok

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if ssCtrl in Shift then
   DBGrid1.Options := DBGrid1.Options + [dgMultiSelect];
end;


quelle est la procedure qui fait le contraire quand on relache la touche CTRL ???
DBGrid1.Options := DBGrid1.Options - [dgMultiSelect];
lundi 1 décembre 2008 à 17:41:27 | Re : evenement clavier

simonpelloquin

Eh, faut lire !!!
OnKeyUp

Simon
lundi 1 décembre 2008 à 22:44:41 | Re : simonpelloquin

impossibleok

OnKeyUp !!!
mais comment peut on savoir que c'est la touche CTRL qui a été relaché et pas une autre???
mardi 2 décembre 2008 à 09:18:52 | Re : evenement clavier

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Bin tu peux pondre un truc dans ce genre là, en ajoutant une booléenne private à ta Form... Mais bon c'est le genre de code qui a tendance à faire n'importe quoi : si la orm perd le focus alors que ctrl est appuyé, le relachement de ctrl n'est pas pris en compte.

C'est là que le hook proposé par JulioDelphi peut s'avérer plus efficace.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
    bCtrlWasPressed: Boolean;
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (not bCtrlWasPressed) then
  begin
    memo1.Lines.Add('Touche ctrl appuyée');
    bCtrlWasPressed:= True;
  end;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (not (ssCtrl in Shift)) and (bCtrlWasPressed) then
  begin
    memo1.Lines.Add('Touche ctrl relachée');
    bCtrlWasPressed:= False;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  memo1.ReadOnly:= True;
  KeyPreview:= True;
end;

end.


1 2

Cette discussion est classée dans : clavier, evenement


Répondre à ce message

Sujets en rapport avec ce message

fonction glut pour evenement clavier [ par eole15 ] Bonjour tout le monde...voila mon probleme je suis sous OpenGL (et j'utilse l'ami Glut3 2) et je fait un jeux video mais voila j'arrive a deplacer une Evenement sur DBGrid [ par zarasoft ] je cherche le code d'une application en turbo c qui suspend mon clavier [ par boubacar12 ] Slt ,je veux une application qui  permet de bloquer mon clavier et la souris tant que j'ai pas le mot de passe correcteEst ce que vous pouvez m'aidez Evenement sur modification d'un fichier texte [ par ashron54 ] Bonjour,je travail avec un fichier texte qui est vide au départ, puis à l'aide un outil spécial je le rempli avec une série de chiffre(qui ne fait jam touche CTRL bloquée [ par valia75 ] bonjour mon ordinateur ( ASUS A6 et XP edition familiale 2002) considère la touche CTRL bloquée alors qu'elle ne l'est pas. j'ai dépoussiéré les touc touche clavier [ par loveyara ] bjr a tous le monde, j'ai une db grid dans lequel je veux désactiver la touche bas du clavier s'il y a un condition précise voila le code [color=gree clavier [ par jacques205 ] bonjour sur mon clavier(sans fil)les touches,pause break et scroll lock ne fonctionnent pas ? je remercie ceux et celles qui m'aiderons à corriger ce Clavier [ par alain0001 ] Bonjour j'aimerais connaitre un programme pour enregistré les frappes sur mon clavier merci de me donné un coup de pouce merci gerer l'evenement double clic sur un dbgrid [ par dereht ] bonjour; je veux lorsque je fait un double clic sur un dbgrid et exatement sur une cellule j'aurai un lien sur le coin de cette celulle, et en cliquan


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales