AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Figur mit Tasten Bewegen

Offene Frage von "ontorius"
Ein Thema von ontorius · begonnen am 11. Jan 2006 · letzter Beitrag vom 25. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
ontorius

Registriert seit: 11. Jan 2006
17 Beiträge
 
#1

Figur mit Tasten Bewegen

  Alt 11. Jan 2006, 10:21
So, ich hab jetzt so viel Zeit dafür verschwendet, um eine Figur oder eine Graphik mit Tasten bewegen zu können, und es klappt immernoch nicht. Jetzt frag ich hier nach. Ich brauche eine Prozedur für das Tastenereignis und die Deklarierung im Kopf der Unit. Ich hab schon ähnliche Themen im Forum gelesen, aber dabei wurde keine Deklarierungten angegeben wonach das Programm Delphi aber immer fragt.
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Figur mit Tasten Bewegen

  Alt 11. Jan 2006, 10:29
Du hast ein TImage Objekt?
Das kannst du mit dem Ereignis OnKeyDown,des Formular, über die Virtual Keys steuern.
Du solltest aber nach jeder Bewegung das Image refreshen weil es sonst ruckelt.

Viele Grüße

Schaedel
Michael S.
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Figur mit Tasten Bewegen

  Alt 11. Jan 2006, 10:30
Hi,

Ereignisse von Form1: OnKeyDown, OnKeyUp, OnKeyPress. Ausserdem im OI das KeyPreview auf True stellen.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Figur mit Tasten Bewegen

  Alt 13. Jan 2006, 11:59
Wenn dus schnell brauchst(die oben genannten sind "relativ" langsam):

Delphi-Quellcode:
if GetAsyncKeystate(VK_LEFT) < 0 then
    begin
      //Blubberdifasel
    end;
das geht auch für vk_right, vk_up, vk_down, vk_escape, vk_prior, vk_next
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von konda
konda

Registriert seit: 20. Dez 2005
253 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Figur mit Tasten Bewegen

  Alt 13. Jan 2006, 13:55
Delphi-Quellcode:
unit LaufenUnit1;

interface

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

type
  TForm1 = class(TForm)
    Shape1: TShape;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var absu,absl,absr,abso: integer;
begin
     //beim rand anstoßen
     abso:= shape1.top;
     absu:= form1.clientheight-(shape1.top+shape1.height);
     absl:= shape1.left;
     absr:= form1.clientwidth-(shape1.left+shape1.width);
     if (abso>10) then abso:= 10;
     if (absu>10) then absu:= 10;
     if (absl>10) then absl:= 10;
     if (absr>10) then absr:= 10;
     //bewegung des balles
     if (key=38) then shape1.top:= shape1.top-abso;
     if (key=40) then shape1.top:= shape1.top+absu;
     if (key=37) then shape1.left:= shape1.left-absl;
     if (key=39) then shape1.left:= shape1.left+absr;
end;

end.
bei dem Code kannst du dein Objekt nicht aus der Form hinaus bewegen.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Figur mit Tasten Bewegen

  Alt 13. Jan 2006, 13:58
Heißt das, wenn GetAsyncKeystate(VK_ANYTHING)<0 bedeutet, dass die Taste mit dem Scancode VK_ANYTHING gerade gedrückt ist? Wenn ja, dann wäre das die Funktion, nach der ich schon so lange gesucht habe!
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#7

Re: Figur mit Tasten Bewegen

  Alt 13. Jan 2006, 15:02
Ja, so ist es.
GetASyncKeyState liefert zwar immer feste Werte, aber der Check auf kleiner 0 hat bei mir bisher immer optimal funktioniert

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Figur mit Tasten Bewegen

  Alt 14. Jan 2006, 08:55
sicherer ist noch wenn du abfragst ob es ungleich (<>) 0 ist.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Figur mit Tasten Bewegen

  Alt 14. Jan 2006, 09:45
Was genau gibt denn jetzt GetAsyncKeyState zurück?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#10

Re: Figur mit Tasten Bewegen

  Alt 14. Jan 2006, 10:17
Zitat von Windows SDK:
If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. The return value is zero if a window in another thread or process currently has the keyboard focus.
Also ein Vergleich auf <>0 bringt nicht das gewünschte Ergebnis. Wenn die Taste gedrückt wird, ist das höchstwertige Bit 1 was bei Integer eine negative Zahl bedeutet
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz