06. november 2004 - 20:55Der er
3 kommentarer og 1 løsning
to forskellige handlinger ved forskellig tastatur key's trykkes
Hej
Jeg har, ikke overraskende, et problem jeg ønsker hjælp til at løse :-o
Jeg har en timer der med et eller andet interval og jeg har to Integer værdier som vi blot kan kalde ”I1” og ”I2”, når jeg trykker på en knap skal I1 adderes med x (et givent tal) og dette sker hver gang timeren løber igennem så længe jeg holder en knap nede på tastaturet.
Til dette definerede jeg en variabel til som jeg sagde skulde være lig med sig selv plus x, herefter sagde jeg at I1 skulde adderes med denne.
Men problemet er at jeg også vil havde I2 til at live adderet med et andet tal vi kan kalde det y, når jeg trykker på en anden knap på tastaturet stopper programmet med at addere I1 med x.
Håber det er forståeligt ;-)
Konklusion: Skal havde handling til at ske nå jeg holder en knap nede på tastaturet og en ny handling til at ske når jeg holder en ny knap nede på tastaturet uden den anden handling stopper.
kan du ikke skrive i din kode..den til I2 en if sætning hvor du skriver en situation hvor hvis den knap man holder nede for I1 holdes nede og I2's knap også holdes nede så skal begge adderes med x... og en "else" hvor man kan nøjes med at holde I2's knap nede og så adderes den med x..
vil lige sige jeg ikke kan komme med et eksempel... programmere Java: ) Og kun en ide.. ved slet ikke om man kan det.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = Ord('A') then EventAStartet := True else if Key = Ord('B') then EventBStartet := True else if Key = Ord('S') then begin EventAStartet := False; EventBStartet := False; end; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin if EventAStartet then begin Inc(ACounter); Label1.Caption := IntToStr(ACounter); end; if EventBStartet then begin Inc(BCounter); Label2.Caption := IntToStr(BCounter); end; end;
end.
Når du trykker på a starter CounterA med at tælle. Trykker du derefter på B starter counter B uden at CounterA stopper. Du stopper de hele med tryk på S.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin If key = ord('A') then TrykA := True; If key = ord('B') then TrykB := True; end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin If key = ord('A') then TrykA := False; If key = ord('B') then TrykB := False; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin If TrykA then begin i := i + i1; label1.caption := inttostr(i); end; If TrykB then begin j := j+i2; label2.caption := inttostr(j); end; end;
Det var perfekt tak for hjælpen (jeg troede faktisk ikke det kunne lade sig gøre, da Keyop vil blive annulleret når man trykkede på en anden knap do'h).
men igen tak
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.