Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Bewegung eines Bildes mit den Pfeiltasten starten (https://www.delphipraxis.net/199968-bewegung-eines-bildes-mit-den-pfeiltasten-starten.html)

Jaja 6. Mär 2019 16:43

Delphi-Version: 5

Bewegung eines Bildes mit den Pfeiltasten starten
 
Hallo,
Ich arbeite gerade an einem Schulprojekt und habe folgendes Problem:
Ich möchte die Bewegung eines Bildes mit der Pfeiltaste starten. Das Bild soll sich danach ohne Tastendruck in die Richtung weiterbewegen, bis eine andere Pfeiltaste gedrückt wird.
Es wäre schön wenn mir jemand weiterhelfen könnte.
Gruß Jaja

Redeemer 6. Mär 2019 16:57

AW: Bewegung eines Bildes mit den Pfeiltasten starten
 
Man kann sich eine Variable nehmen, in der man die Richtung speichert, wenn der Nutzer eine Taste drückt. Entsprechende Events empfängt und bietet die TForm, solange keine Elemente den Fokus haben (Buttons, Eingabefelder etc.; Bilder und Labels können keinen Fokus haben).
Dann kann man einen Timer nehmen, der guckt, worauf die Variable steht, und dann das Bild verschiebt.

Jaja 6. Mär 2019 17:14

AW: Bewegung eines Bildes mit den Pfeiltasten starten
 
Zitat:

Zitat von Redeemer (Beitrag 1427107)
Man kann sich eine Variable nehmen, in der man die Richtung speichert, wenn der Nutzer eine Taste drückt. Entsprechende Events empfängt und bietet die TForm, solange keine Elemente den Fokus haben (Buttons, Eingabefelder etc.; Bilder und Labels können keinen Fokus haben).
Dann kann man einen Timer nehmen, der guckt, worauf die Variable steht, und dann das Bild verschiebt.

Danke für die schnelle Antwort. Ich weiß aber leider nicht wie ich die Variable in der Timer Prozedur abfrage.

Redeemer 6. Mär 2019 18:55

AW: Bewegung eines Bildes mit den Pfeiltasten starten
 
Variablen kann man an verschiedenen Stellen deklarieren, die dann einen gewissen Gültigkeitsbereich haben. Die einfachsten sind lokale Variablen, die nur für eine Methode sichtbar sind (also für dich ungeeignet, da du dieselbe Variable in der Setz-Methode als auch in der Timer-Methode benutzen möchtest) und in einer Variablensektin direkt unter dem Methodenkopf im Implementation deklariert werden. Dann gibt es in Klassen deklarierte Variablen, die Feld genannt werden. Steuerelemente, die du auf die Form packst, werden so deklariert. Felder haben eine Sichtbarkeit (es gibt eine Standardsichtbarkeit). Dann gibt es noch zwei Sorten globale Variablen: Eine Variablensektion im Interfaceabschnitt hat sozusagen eine public-Sichtbarkeit, während eine Deklaration in einer Variablensektion im Implementationsabschnitt eine private-Sichtbarkeit (also nur in der Unit) hat. Delphi deklariert deine Form als erstere, letzteres wird extrem selten genutzt. Ich würde dir als Anfänger empfehlen, deine Variable einfach unter die gerade erwähnte Form-Variable zu schreiben, also als globale public-Variable.

Alallart 6. Mär 2019 21:30

AW: Bewegung eines Bildes mit den Pfeiltasten starten
 
Delphi-Quellcode:
type
  TRichtung = 1..4;

var
  Richtung: TRichtung;

procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True; //Formular bekommt alle Tastaturanschläge mit
  Timer1.Interval := 100; // 1/10 Sekunde
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
const
  Interval = 10;
begin
  case Richtung of
    1: Image1.Left := Image1.Left + Interval;
    2: Image1.Top := Image1.Top + Interval;
    3: Image1.Left := Image1.Left - Interval;
    4: Image1.Top := Image1.Top - Interval;
  end;

  //Damit es nicht aus dem Formular verschwindet
  if Image1.Left > ClientWidth then
    Image1.Left := 0;

  if Image1.Left < 0 then
    Image1.Left := ClientWidth;

  if Image1.Top > ClientHeight then
    Image1.Top := 0;

  if Image1.Top < 0 then
    Image1.Top := ClientHeight;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_RIGHT: Richtung := 1;
    VK_DOWN : Richtung := 2;
    VK_LEFT : Richtung := 3;
    VK_UP  : Richtung := 4;
  end;
end;
Den Rest musst du alleine machen.

haentschman 7. Mär 2019 05:02

AW: Bewegung eines Bildes mit den Pfeiltasten starten
 
Moin...8-)
Zitat:

Ich arbeite gerade an einem Schulprojekt
Nachfrage: ...wirklich mit D5? Wenn ja, dann kannst du dem Lehrer Mal von der Community Edition erzählen. Aktuell und kostenlos. :thumb:

Jaja 7. Mär 2019 22:01

AW: Bewegung eines Bildes mit den Pfeiltasten starten
 
Danke für die Hilfe. Funktioniert jetzt.

Jaja


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 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