Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : evenement clavier [ Divers / Débutant(e) ] (impossibleok)

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é 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 Detecter touches du clavier [ par sebrs1 ] salutj'ai un ptit probleme en delphi en esperant que vous pourrez m'aidersavez vous comment détécter les touche du claviers appuyées depuis n'importe OnMouseHover Event et SatusBar [ par apz ] Salut, Je veux avoir le code de l'evenement du survol de la sourie sur un StatusBar. Par exemple : Procedure OnMouseHover; begin StatusBar1.Panels[0]. intercepter touche pressées du clavier [ par crogger ] Salut je cherche un moyen pour savoir quelles touches sont pressées (au moyen d un prog invisible), sans utliser SetWindowsHookEx.G bien regardé la pr Verrouiller Un clavier [ par Nounou99 ] Voila je suis entrain de develloper une application , je veut verrouiller les touches du clavier surtout la touche windows et crtl+esc .esqu'il ya un Evenement = toujours procedure [ par MasterJ ] Bonjour,Un petit test comme ca me porte a croire que les evenement ne peuvent etre pris en charge que par des procedures. Je voulais savoir si c'est Comment fiare pour changer le lanugage du clavier? [ par thechacal ] Comment fiare pour changer le lanugage du clavier pour Anglais Us en delphi?


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.