Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kasten mit Pfeiltasten bewegen (https://www.delphipraxis.net/111991-kasten-mit-pfeiltasten-bewegen.html)

Spiderpig_GER_15 12. Apr 2008 23:02

Re: Kasten mit Pfeiltasten bewegen
 
perfekt, echt geil, soo wie ich mir das vorgestellt hab, danke!

Der erste Schritt auf dem Weg zum Egosmoorhuhn-Shooter ist gemacht :-D

byte 1. Mai 2008 08:49

Re: Kasten mit Pfeiltasten bewegen
 
..was ich nochned versteh:
ich hab n canvas, aufm punkt xy ist ein viereck und via timer werdn koordinaten abgelesen und wird halt dargestellt.

aber wenn ich pfeiltasten drück, dann bewegt sich die markierung von buton zu button bis se an einem editfeld hängenbleibt und dort sich hin und her bewegt.. oo

ich mein, momentan ist es eigtl eine testanwendung, ich kann die steuerung auch auf WASD setzen oder so, interessiert mich grad halt..

Fussball-Robby 1. Mai 2008 09:51

Re: Kasten mit Pfeiltasten bewegen
 
KeyPreview der Form auf True und bei den Buttons/Edits TabStop auf False setzen

Mfg

PS.: Herzlich Willkommen in der DP :dp:

byte 1. Mai 2008 10:50

Re: Kasten mit Pfeiltasten bewegen
 
hmkay, klappt fast.. bleibt noch am edit hängen..
öhm, wie mach ich eigl buchstaben? weil mit vk_i gehts ned, mit 'i' schon garned und vk_char ist zu allgemein... oo

thx ^^
ich fang an, mit nem kumpel n orpg zu basteln.. testen grad eigtl die basics.. auf jedn fall stöber ich schon ne weile hier rum aber nur durch lesen klärt sich ned alles.. ^^

Mikender 1. Mai 2008 11:26

Re: Kasten mit Pfeiltasten bewegen
 
Delphi-Quellcode:
 
  VK_LBUTTON  $01 Linke Maustaste
  VK_RBUTTON  $02 Rechte Maustaste
  VK_CANCEL   $03 Für die Verarbeitung von Control-Break
  VK_MBUTTON  $04 Mittlere Maustaste (Dreitastenmaus)
  --           $05 Nicht definiert
  --           $06 Nicht definiert
  --           $07 Nicht definiert
  VK_BACK     $08 BACKSPACE Taste
  VK_TAB      $09 TAB Taste
  --           $0A Nicht definiert
  --           $0B Nicht definiert
  VK_CLEAR    $0C Löschtaste
  VK_RETURN   $0D RETURN Taste
  --           $0E Nicht definiert
  --           $0F Nicht definiert
  VK_SHIFT    $10 SHIFT Taste
  VK_CONTROL  $11 STRG Taste
  VK_MENU     $12 ALT Taste
  VK_PAUSE    $13 PAUSE Taste
  VK_CAPITAL  $14 CAPS LOCK Taste
  --           $15 Reserviert für Kanji-Systeme
  --           $16 Reserviert für Kanji-Systeme
  --           $17 Reserviert für Kanji-Systeme
  --           $18 Reserviert für Kanji-Systeme
  --           $19 Reserviert für Kanji-Systeme
  --           $1A Nicht definiert
  VK_ESCAPE   $1B ESC Taste
  --           $1C Reserviert für Kanji-Systeme
  --           $1D Reserviert für Kanji-Systeme
  --           $1E Reserviert für Kanji-Systeme
  --           $1F Reserviert für Kanji-Systeme
  VK_SPACE    $20 LEERTASTE
  VK_PRIOR    $21 PAGE UP Taste
  VK_NEXT     $22 PAGE DOWN Taste
  VK_END      $23 ENDE Taste
  VK_HOME     $24 POS1 Taste
  VK_LEFT     $25 Cursortaste links
  VK_UP       $26 Cursortaste oben
  VK_RIGHT    $27 Cursortaste rechts
  VK_DOWN     $28 Cursortaste unten
  VK_SELECT   $29 SELECT Taste
  VK_PRINT    $2A Druck
  VK_EXECUTE  $2B Taste Ausführen (EXECUTE)
  VK_SNAPSHOT $2C PRINT SCREEN Taste für Windows 3.0 und höher
  VK_INSERT   $2D EINFG Taste
  VK_DELETE   $2E ENTF Taste
  VK_HELP     $2F Hilfetaste
  VK_0         $30 Taste 0
  VK_1         $31 Taste 1 
  VK_2         $32 Taste 2 
  VK_3         $33 Taste 3 
  VK_4         $34 Taste 4 
  VK_5         $35 Taste 5
  VK_6         $36 Taste 6 
  VK_7         $37 Taste 7 
  VK_8         $38 Taste 8 
  VK_9         $39 Taste 9 
  --           $3A Nicht definiert
  --           $3B Nicht definiert
  --           $3C Nicht definiert
  --           $3D Nicht definiert
  --           $3E Nicht definiert
  --           $3F Nicht definiert
  --           $40 Nicht definiert
  VK_A        $41 Taste A
  VK_B        $42 Taste B
  VK_C        $43 Taste C
  VK_D        $44 Taste D
  VK_E        $45 Taste E
  VK_F        $46 Taste F
  VK_G        $47 Taste G
  VK_H        $48 Taste H
  VK_I        $49 Taste I
  VK_J        $4A Taste J
  VK_K        $4B Taste K
  VK_L        $4C Taste L
  VK_M        $4D Taste M
  VK_N        $4E Taste N
  VK_O        $4F Taste O
  VK_P        $50 Taste P
  VK_Q        $51 Taste Q
  VK_R        $52 Taste R
  VK_S        $53 Taste S
  VK_T        $54 Taste T
  VK_U        $55 Taste U
  VK_V        $56 Taste V
  VK_W        $57 Taste W
  VK_X        $58 Taste X
  VK_Y        $59 Taste Y
  VK_Z        $5A Taste Z
  --           $5B Nicht definiert
  --           $5C Nicht definiert
  --           $5D Nicht definiert
  --           $5E Nicht definiert
  --           $5F Nicht definiert
  VK_NUMPAD0   $60 Numerisches Tastenfeld, Taste 0 
  VK_NUMPAD1   $61 Numerisches Tastenfeld, Taste 1 
  VK_NUMPAD2   $62 Numerisches Tastenfeld, Taste 2
  VK_NUMPAD3   $63 Numerisches Tastenfeld, Taste 3 
  VK_NUMPAD4   $64 Numerisches Tastenfeld, Taste 4 
  VK_NUMPAD5   $65 Numerisches Tastenfeld, Taste 5 
  VK_NUMPAD6   $66 Numerisches Tastenfeld, Taste 6 
  VK_NUMPAD7   $67 Numerisches Tastenfeld, Taste 7
  VK_NUMPAD8   $68 Numerisches Tastenfeld, Taste 8 
  VK_NUMPAD9   $69 Numerisches Tastenfeld, Taste 9 
  VK_MULTIPLY $6A Multiplikationstaste
  VK_ADD      $6B Additionstaste
  VK_SEPARATOR $6C Trenntaste
  VK_SUBTRACT $6D Subtraktionstaste
  VK_DECIMAL  $6E Dezimaltrenntaste
  VK_DIVIDE   $6F Divisionstaste
  VK_F1        $70 F1 Taste
  VK_F2        $71 F2 Taste
  VK_F3        $72 F3 Taste
  VK_F4        $73 F4 Taste
  VK_F5        $74 F5 Taste
  VK_F6        $75 F6 Taste
  VK_F7        $76 F7 Taste
  VK_F8        $77 F8 Taste
  VK_F9        $78 F9 Taste
  VK_F10       $79 F10 Taste
  VK_F11       $7A F11 Taste
  VK_F12       $7B F12 Taste
  VK_F13       $7C F13 Taste
  VK_F14       $7D F14 Taste
  VK_F15       $7E F15 Taste
  VK_F16       $7F F16 Taste
  VK_F17       $80 F17 Taste
  VK_F18       $81 F18 Taste
  VK_F19       $82 F19 Taste
  VK_F20       $83 F20 Taste
  VK_F21       $84 F21 Taste
  VK_F22       $85 F22 Taste
  VK_F23       $86 F23 Taste
  VK_F24       $87 F24 Taste
  --           $88 Nicht belegt
  --           $89 Nicht belegt
  --           $8A Nicht belegt
  --           $8B Nicht belegt
  --           $8C Nicht belegt
  --           $8D Nicht belegt
  --           $8E Nicht belegt
  --           $8F Nicht belegt
  VK_NUMLOCK  $90 NUM LOCK Taste
  VK_SCROLL   $91 SCROLL LOCK Taste
Ich glaube man kann Buchstaben auch mit
Delphi-Quellcode:
Ord(I)
machen (*Bin aber nicht sicher*)

himitsu 1. Mai 2008 12:05

Re: Kasten mit Pfeiltasten bewegen
 
Delphi-Referenz durchsuchenVirtual key codes

Zitat:

Virtual key codes allow you to represent keyboard values for non-alphanumeric keys. Windows defines special constants for each key the user can press. These constants can then be used to refer to the keystroke in Windows API calls or in an OnKeyUp or OnKeyDown event handler.

Most of the virtual key codes are defined in the Windows unit. Additional key codes may be defined in special-purpose Windows wrappers such as the imm unit. For alphabetic keys, you should use ord with an uppercase character, for example, ord( 'M' ).

To create a virtual key code for an alphanumeric value, use the Ord method. For example the virtual key code for ‘7’ is Ord(‘7’).

Nuclear-Ping 1. Mai 2008 13:13

Re: Kasten mit Pfeiltasten bewegen
 
Zitat:

Zitat von alleinherrscher
Hust ich will dir nicht deinen Drag bzw. Wunsch zum Ausprobieren klauen...aber ich habs mal fix programmiert...

Super. Das ist genau das was die Leute wollen und brauchen, um sich richtig mit Delphi auseinandersetzen zu können: Nur paar mal jammern "Ich kriegs nicht hin" und irgendwo findet sich einer, der ihnen das gibt, was sie wollen: Code zum Copy & Paste. Weiter so! :thumb:

byte 1. Mai 2008 14:37

Re: Kasten mit Pfeiltasten bewegen
 
args, ich glaub, ich lass des jetzt und probier damit später rum, wenn ich dann die echte oberfläche mit directx bastel.
eigtl hatte ich 4 buttons. oben, links, rechts, unten. hab y-achse umgekehrt, also y+1 ist oben. nicht, dass sich wer wundert. weil es geht mir u.a. um echte x/y-koordinaten und die solln schon umgekehrt sein.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
y:=y+1;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
x:=x-1;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
x:=x+1;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
y:=y-1;
end;
irgendwie tun nur die ersten beiden buttons -.- oben und links. und ich raffs ned Oo

/ das mit ord hat an sich geklappt, wurde zumindest von delphi angenommen, aber ich glaub, es war immernoch der start-button, der sich angesprochen gefühlt hat.. ich muss ma was ohne buttons und so machen und dann schaun, weils dann ja tun müsste..

Larsi 1. Mai 2008 15:12

Re: Kasten mit Pfeiltasten bewegen
 
Gibt in der Codelib auch ein Artikel darüber!

byte 2. Mai 2008 17:45

Re: Kasten mit Pfeiltasten bewegen
 
1. hab ich in der codelib nix gefunden.
2. ich hab jetzt selbst was neues geschrieben. buttonlos. timage, die sich bewegen soll mit taste drücken/loslassen.
und ich hab mich eigtl stark an dem boxprogramm orientiert. aber wenn ich tasten drück, passiert nix.
dann hab ich in den timer gesetzt, dass sich bewegen soll, dann tuts. also an sich ist nix falsch, es wird nur ned aktiviert.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    link: TImage;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormKeyRelease(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
  x, y :integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin

if key=VK_left then x:=-1;
if key=VK_right then x:=1;
if key=VK_up then y:=-1;
if key=VK_down then y:=1;
end;


procedure TForm1.FormKeyRelease(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key=VK_left then x:=0;
if key=VK_right then x:=0;
if key=VK_up then y:=0;
if key=VK_down then y:=0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
link.left:=link.left+1;

if link.Top>425 then link.Top:=-24;
if link.Left>425 then link.Left:=-24;
if link.Top<-24 then link.Top:=425;
if link.Left<-24 then link.Left:=425;

link.Top:=link.Top+y;
link.Left:=link.Left+x;
end;

end.
image heißt link, weil soll n held sein x)
mit diesem
Delphi-Quellcode:
link.left:=link.left+1;
bewegt sichs halt generell. daran sieht man halt, dasses an sich tun müsste.
und die 425 sind halt die bildgrenzen, damits nicht ins nix laufen kann..
kann mir nun wer sagen, worans liegt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz