Simuler flèche bas

Résolu
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 23 oct. 2006 à 10:41
cerber943 Messages postés 32 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 26 octobre 2006 - 23 oct. 2006 à 14:58
Bonjour,

J'essaye de simuler flèche bas de plusieures manière mais je n'y arrive pas...

Selon ....KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);, le code ascii de la flèche bas est 40.
Mais pour moi, quand je fait ça:
chaine := 'TEST'+chr(40);

Que ce soit avec keybd_event(VkKeyScan(chaine[i]),0,0,0) ou ClipBoard.SetTextBuf(PAnsiChar(chaine));

Ca me retourne la parenthèse ouvrante '(' (ce qui me parait logique).

Comment faire pour que ça marche dans les 2 cas ?
A voir également:

5 réponses

cerber943 Messages postés 32 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 26 octobre 2006
23 oct. 2006 à 14:58
Détail un peu ton pb stp, je ne comprends pas le rapport avec le presse papier ... ce ne sont que des constantes donc que tu les appelles par leur nom de constante ou par la valeur à laquelle elles sont affectées ne change rien.
Explique ton problème, ce que tu veux faire(il y a plus de chances qu'on puisse te répondre).

Bon voila en tout les cas un exemple qui fonctionne
Tu crées un timer, un tmemo
et tu lies les évenements qui vont bien

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
memo1.Clear;
timer1.Interval:=500;
timer1.Enabled:=true;

for i:=0 to 50 do memo1.Lines.Add('test ligne '+inttostr(i));

end;
procedure TForm1.FormShow(Sender: TObject);
begin
memo1.setFocus();
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

PostMessage(self.Memo1.Handle, WM_KEYDOWN,VK_UP, 0);
sleep(100);
PostMessage(self.Memo1.Handle, WM_KEYUP,VK_UP, 0);

end;

end.

Le code qui gère l'appuie sur la flèche du clavier (ici vk_up) est dans

TForm1.Timer1Timer(Sender: TObject);


Si ca ne te convient pas détail ta demande stp
a+
3
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
23 oct. 2006 à 11:30
En clair, il faut faire ALT+quoi ?
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
23 oct. 2006 à 11:47
C'est à n'y rien comprendre... Je fait ça:
procedure TfrmMain.mmoInfosKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var str: String;
begin
str := '';
if ssShift in Shift then str := str+'La touche Maj est enfoncée. '
else if ssAlt in Shift then str := str+'La touche Alt est enfoncée. '
else if ssCtrl in Shift then str := str+'La touche Ctrl est enfoncée. ';
ShowMessage(IntToStr(ord(Key))+' '+str);
end;

Quand j'appuie sur flèche bas, il me met juste 40 et lorsque je fait ALT+040 dans le bloc note, c'est ( qui apparait.

Je deviens fou !
0
cerber943 Messages postés 32 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 26 octobre 2006
23 oct. 2006 à 13:14
Salut,

N'as-tu pas essayé les constantes suivantes ?
VK_LEFT VK_RIGHT VK_UP  VK_DOWN

Elles ne fonctionne pas ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
23 oct. 2006 à 14:18
Bonjour cerber943,
Je ne veux pas mettre de code virtuel (incompatible avec le presse papier) mais le code ascii.

C'est quoi le contraire de VkKeyScan ?

Peut être que de cette manière, je trouverais un code clé.
Vu que VK_DOWN=40, et que j'aimerais passer dans la boucle de traitement VkKeyScan, il faudrait que je trouve le code ASCII qui faire à VkKeyScan retourner 40.
0
Rejoignez-nous