Vinnaren i pepparkakshustävlingen!
2007-10-22, 19:05
  #1
Medlem
Hej! jag sitter med former nu. Har precis gått över från att sitta i dos miljö till windows miljö. Det problem jag har stött på är att när jag använder mig av funktionen "OnKeyDown" så spelar det ingen roll vilken tangent jag trycker på,
samma funktion körs varje gång jag trycker ner t.ex. a,g,e eller någon annan tangent. Jag vill begränsa detta till enbart 1 specifik tangent.

En del av programet ser ut såhär:
Citat:
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Button1.top:=(Button1.top+1);
end;

Hur kan jag begränsa denna funktion till att enbart fungera vid nedtryckning av tangenten S t.ex.?

Tack för svar =)
Citera
2007-10-23, 00:36
  #2
Medlem
För att få reda på vilken knapp som tryckts ner så får du som en del av eventet parametern Key. Den innehåller nummret på tangenten som tryckts ner (S har nummer 83).

Så här skulle ditt event kunna se ut:

Kod:
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
   if (Key = 83) then Button1.top:=(Button1.top+1);
end; 

För att få reda på numret för önskad knapp kan du använda följande kod:


Kod:
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
   ShowMessage(IntToStr(Key));
   // if (Key = 83) then Button1.top:=(Button1.top+1);
end; 

Du får då en meddelanderuta med numret på den nedtryckta knappen.
Citera
2007-10-26, 18:00
  #3
Medlem
Citat:
Ursprungligen postat av cjh

Så här skulle ditt event kunna se ut:

Kod:
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
   if (Key = 83) then Button1.top:=(Button1.top+1);
end; 


Det där funkade aldeles utmärkt!
tack så mycket =)
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback