Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler bei Tasten-Druck (https://www.delphipraxis.net/13962-fehler-bei-tasten-druck.html)

cylon 29. Dez 2003 22:04


Fehler bei Tasten-Druck
 
bei diesem code hier und bei druck der "Nach-Unten-Taste" , wird sofort die unterste if-Methode aktiviert, obwohl doch erst die zweite, dann die dritte usw. dran wären. Woran liegt das????
Delphi-Quellcode:
procedure TFormZero.FormCreate(Sender: TObject);
begin
 Aktiv := 1;
ImageNS.Picture.LoadFromFile ('Graphiken\newgame_a.bmp');
end;
Delphi-Quellcode:
procedure TFormZero.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 begin
  if key= vk_down then;
 begin
  Aktiv := Aktiv + 1;

   if Aktiv = 1 then; //Neues Spiel
    begin
    ImageNS.Picture.LoadFromFile ('Graphiken\newgame_a.bmp');
    ImageSL.Picture.LoadFromFile ('Graphiken\loadgame.bmp');
    ImageO.Picture.LoadFromFile ('Graphiken\options.bmp');
    ImageC.Picture.LoadFromFile ('Graphiken\credits.bmp');
    ImageB.Picture.LoadFromFile ('Graphiken\beenden.bmp');
    end;
   if Aktiv = 2 then; //Spiel laden
    begin
    ImageNS.Picture.LoadFromFile ('Graphiken\newgame.bmp');
    ImageSL.Picture.LoadFromFile ('Graphiken\loadgame_a.bmp');
    ImageO.Picture.LoadFromFile ('Graphiken\options.bmp');
    ImageC.Picture.LoadFromFile ('Graphiken\credits.bmp');
    ImageB.Picture.LoadFromFile ('Graphiken\beenden.bmp');
    end;
   if Aktiv = 3 then; //Optionen
    begin
    ImageNS.Picture.LoadFromFile ('Graphiken\newgame.bmp');
    ImageSL.Picture.LoadFromFile ('Graphiken\loadgame.bmp');
    ImageO.Picture.LoadFromFile ('Graphiken\options_a.bmp');
    ImageC.Picture.LoadFromFile ('Graphiken\credits.bmp');
    ImageB.Picture.LoadFromFile ('Graphiken\beenden.bmp');
    end;
   if Aktiv = 4 then; //Credits
    begin
    ImageNS.Picture.LoadFromFile ('Graphiken\newgame.bmp');
    ImageSL.Picture.LoadFromFile ('Graphiken\loadgame.bmp');
    ImageO.Picture.LoadFromFile ('Graphiken\options.bmp');
    ImageC.Picture.LoadFromFile ('Graphiken\credits_a.bmp');
    ImageB.Picture.LoadFromFile ('Graphiken\beenden.bmp');
    end;
   if Aktiv = 5 then; //Beenden
    begin
    ImageNS.Picture.LoadFromFile ('Graphiken\newgame.bmp');
    ImageSL.Picture.LoadFromFile ('Graphiken\loadgame.bmp');
    ImageO.Picture.LoadFromFile ('Graphiken\options.bmp');
    ImageC.Picture.LoadFromFile ('Graphiken\credits.bmp');
    ImageB.Picture.LoadFromFile ('Graphiken\beenden_a.bmp');
    end;
  end;
end;

SleepyMaster 29. Dez 2003 22:57

Re: Fehler bei Tasten-Druck
 
Das das erste "Paket" nicht angezeigt wird ist logisch:
Beim start wird Aktiv auf 1 gesetzt und dann wird Aktiv := Aktiv + 1; ausgeführt (Aktiv = 2)

Wegen dem Rest:
KA

Schreibst du sonst irendwo noch auf Aktiv???

Sharky 30. Dez 2003 07:36

Re: Fehler bei Tasten-Druck
 
Hai cylon,

warum hast Du eigentlich hinter jedem [b]then[/] ein ; stehen?
Ausserdem kannst Du dir das Laden der Bilder vereinfachen. Es werden ja immer nur zwei Bilder verändert.

Zu deinem Problem: Kann es sein das Du einfach zu lange die "Nach-Unten-Taste" drückst? Das Event wird ja nach einigen ms, je nach Einstellung, wiederholt ausgeführt.

Ich habe deinen Code mal geändert.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Aktiv := 1;
  ImageNS.Picture.LoadFromFile('Graphiken\newgame_a.bmp');
  ImageSL.Picture.LoadFromFile('Graphiken\loadgame.bmp');
  ImageO.Picture.LoadFromFile('Graphiken\options.bmp');
  ImageC.Picture.LoadFromFile('Graphiken\credits.bmp');
  ImageB.Picture.LoadFromFile('Graphiken\beenden.bmp');
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = vk_down then
    begin
      Aktiv := Aktiv + 1;
      case Aktiv of
          1: begin
                ImageNS.Picture.LoadFromFile('Graphiken\newgame_a.bmp');
                ImageB.Picture.LoadFromFile('Graphiken\beenden.bmp');
              end;
          2: begin
                ImageNS.Picture.LoadFromFile('Graphiken\newgame.bmp');
                ImageSL.Picture.LoadFromFile('Graphiken\loadgame_a.bmp');
              end;
          3: begin
                ImageSL.Picture.LoadFromFile('Graphiken\loadgame.bmp');
                ImageO.Picture.LoadFromFile('Graphiken\options_a.bmp');
              end;
          4: begin
                ImageO.Picture.LoadFromFile('Graphiken\options.bmp');
                ImageC.Picture.LoadFromFile('Graphiken\credits_a.bmp');
              end;
          5: begin
                ImageC.Picture.LoadFromFile('Graphiken\credits.bmp');
                ImageB.Picture.LoadFromFile('Graphiken\beenden_a.bmp');
                Aktiv := 0;
              end;
      end;
    end;
end.

SleepyMaster 30. Dez 2003 10:38

Re: Fehler bei Tasten-Druck
 
Zitat:

Ich habe deinen Code mal geändert.
Wobei das Aktiv := Aktiv + 1; immernoch falsch sitzt!

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Aktiv := 1;
  ImageNS.Picture.LoadFromFile('Graphiken\newgame_a.bmp');
  ImageSL.Picture.LoadFromFile('Graphiken\loadgame.bmp');
  ImageO.Picture.LoadFromFile('Graphiken\options.bmp');
  ImageC.Picture.LoadFromFile('Graphiken\credits.bmp');
  ImageB.Picture.LoadFromFile('Graphiken\beenden.bmp');
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = vk_down then
    begin
      //Aktiv := Aktiv + 1;
      case Aktiv of
          1: begin
                ImageNS.Picture.LoadFromFile('Graphiken\newgame_a.bmp');
                ImageB.Picture.LoadFromFile('Graphiken\beenden.bmp');
              end;
          2: begin
                ImageNS.Picture.LoadFromFile('Graphiken\newgame.bmp');
                ImageSL.Picture.LoadFromFile('Graphiken\loadgame_a.bmp');
              end;
          3: begin
                ImageSL.Picture.LoadFromFile('Graphiken\loadgame.bmp');
                ImageO.Picture.LoadFromFile('Graphiken\options_a.bmp');
              end;
          4: begin
                ImageO.Picture.LoadFromFile('Graphiken\options.bmp');
                ImageC.Picture.LoadFromFile('Graphiken\credits_a.bmp');
              end;
          5: begin
                ImageC.Picture.LoadFromFile('Graphiken\credits.bmp');
                ImageB.Picture.LoadFromFile('Graphiken\beenden_a.bmp');
                Aktiv := 0; //Wofür das???
              end;
      end;
      Aktiv := Aktiv + 1;//<- Hier mussed hin!
    end;
end.

cylon 30. Dez 2003 12:51

Re: Fehler bei Tasten-Druck
 
Zitat:

Das das erste "Paket" nicht angezeigt wird ist logisch:
Beim start wird Aktiv auf 1 gesetzt und dann wird Aktiv := Aktiv + 1; ausgeführt (Aktiv = 2)
Das erste Paket soll ja auch schon von Anfang an markiert sein...
Wenn man dan "Nach-Unten" drückt, soll das zweite markiert werden...

Zitat:

Zu deinem Problem: Kann es sein das Du einfach zu lange die "Nach-Unten-Taste" drückst? Das Event wird ja nach einigen ms, je nach Einstellung, wiederholt ausgeführt.
Vielleicht sollte ich ne Verzögerung mit sleep() einbauen..
Mir fällt nur grad nich ein wie viele Millisekunden eine Sekunde hat... :wall: :wall: :gruebel:

SleepyMaster 30. Dez 2003 12:54

Re: Fehler bei Tasten-Druck
 
OK! Habs gerafft!

cylon 30. Dez 2003 13:02

Re: Fehler bei Tasten-Druck
 
@ Sharky
Es funktioniert :dancer: ...

Aber wenn ich die "Nach-Unten" Taste gedrückt halte, flimmern die ganzen Bilder...
Kann man da nicht so was wie nen Buffer einbauen??
Also, dass das Bild im BackBuffer gebildet wird und dann nur noch in den FrontBuffer übertragen wird...
Oder gibts noch ne andre Methode, das Flimmern zu verhindern??

cylon 30. Dez 2003 13:37

Re: Fehler bei Tasten-Druck
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab jetzt die Methode auch mal mit dr "Nach-Oben" Taste geproggt...
Da ist allerdings das hier rausgekommen

Sharky 30. Dez 2003 16:15

Re: Fehler bei Tasten-Druck
 
Zitat:

Zitat von SleepyMaster
Wobei das Aktiv := Aktiv + 1; immernoch falsch sitzt!


Hai SleepyMaster,

Nö, unter den definierten Bedingungen (Form.Create) stimmt mein Code.
Du musst nur genau untersuchen wass geschehen soll!

cylon 30. Dez 2003 17:27

Re: Fehler bei Tasten-Druck
 
Kann mir dann mal jemand sagen, was an dem Code falsch ist, den ich zum Download gestellt hab???? :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.
Seite 1 von 2  1 2      

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