AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Fokus auf Paintbox/Image setzen

Ein Thema von MaKa117 · begonnen am 20. Nov 2010 · letzter Beitrag vom 20. Nov 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

AW: Fokus auf Paintbox/Image setzen

  Alt 20. Nov 2010, 17:28
Zeig doch mal die wichtigen Stellen, wie du das ganze denn überhaupt machst.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
MaKa117

Registriert seit: 20. Nov 2010
6 Beiträge
 
#2

AW: Fokus auf Paintbox/Image setzen

  Alt 20. Nov 2010, 17:30
Also: hier das FormKeyDown
Code:
procedure TF_Snake.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    vk_Space:
    begin
      Timer1.Enabled := not Timer1.Enabled;
      if Timer1.Enabled = false then F_Snake.Caption := 'Snake - Um zu starten, drücke Leertaste';
      if Timer1.Enabled = true then F_Snake.Caption := 'Snake - Um zu pausieren, drücke Leertaste';
    end;
    vk_Up : step := 1;
    vk_Right : step := 2;
    vk_Left : step := -2;
    vk_Down : step := -1;
  end;
end;
das wird dann in der Unit Steuerung so umgesetzt:

Code:
procedure TSteuerung.BewegeSnake(move: integer);
var XKopf, YKopf, XApfel, YApfel: integer;
begin
  Spielfeld.LadeBild;
  step := move;
  Snake.Bewegen(move);
  Treffer := Snake.Kollision;
  xKopf := Snake.GetXPosition(0);
  YKopf := Snake.GetYPosition(0);
  XApfel := Apfel.GetXPosition;
  YApfel := Apfel.GetYPosition;
  if (xKopf = xApfel) and (YKopf = YApfel) then
  begin
    Snake.Wachsen;
    inc(Score);
    Panel1.Caption := 'Score: ' + IntToStr(Score);
    SetzeApfel;
    Apfel.Zeigen;
  end;
  Snake.Zeigen;
  Apfel.Zeigen;
end;
und dann hier in der Unit Snake

Code:
procedure TSnake.Bewegungsvorgang;
begin
  case Step of
    1: Teile[0].SetXYPosition(Teile[0].GetXPosition,Teile[0].GetYPosition-20);
    2: Teile[0].SetXYPosition(Teile[0].GetXPosition+20,Teile[0].GetYPosition);
    -2: Teile[0].SetXYPosition(Teile[0].GetXPosition-20,Teile[0].GetYPosition);
    -1: Teile[0].SetXYPosition(Teile[0].GetXPosition,Teile[0].GetYPosition+20);
  end;
  if Teile[0].GetXPosition = Breite then Teile[0].SetXYPosition(0,Teile[0].GetYPosition);
  if Teile[0].GetXPosition < 0 then Teile[0].SetXYPosition(Breite-20,Teile[0].GetYPosition);
  if Teile[0].GetYPosition = Hoehe then Teile[0].SetXYPosition(Teile[0].GetXPosition,0);
  if Teile[0].GetYPosition < 0 then Teile[0].SetXYPosition(Teile[0].GetXPosition,Hoehe-20);
end;

Geändert von mkinzler (20. Nov 2010 um 17:31 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: Fokus auf Paintbox/Image setzen

  Alt 20. Nov 2010, 17:37
Oha, da hab ich mich wohl geirrt, das kommt aus der Delphi-Hilfe:
Zitat:
Die Einstellung bezieht sich nicht auf Navigationstasten (TAB, Pfeiltasten usw.), da diese keine Tastaturereignisse auslösen. Ähnliches gilt, wenn eine Schaltfläche den Fokus hat oder wenn dessen Eigenschaft Default den Wert true hat. Die Eingabetaste wird von KeyPreview nicht berücksichtigt, da diese kein Tastaturereignis auslöst.
Dann musst wohl auf Windows-Messages ausweichen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
MaKa117

Registriert seit: 20. Nov 2010
6 Beiträge
 
#4

AW: Fokus auf Paintbox/Image setzen

  Alt 20. Nov 2010, 17:38
Oder ich würde es auf W-A-S-D setzen. Oder?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Fokus auf Paintbox/Image setzen

  Alt 20. Nov 2010, 17:38
Die einfachste Lösung ist wenn Du statt des Buttons einen Speedbutton nimmst, und bei Key=13 diese auslöst.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
MaKa117

Registriert seit: 20. Nov 2010
6 Beiträge
 
#6

AW: Fokus auf Paintbox/Image setzen

  Alt 20. Nov 2010, 17:44
Ah, so klappts.
Jetzt noch eine Frage: Kann man so etwas auch für ComboBoxes und ScrollBars einrichten?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Fokus auf Paintbox/Image setzen

  Alt 20. Nov 2010, 17:49
Wenn Du Wincontrols benötigst dann kanst Du Dir hiermit behelfen....
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if msg.message=wm_keyDown then
      begin
        MeineAktionMit(msg.wParam);
        handled := true;
      end;
end;
Du kannst dann auch Buttons nehmen und wertest OnKeyDown nicht mehr aus...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
MaKa117

Registriert seit: 20. Nov 2010
6 Beiträge
 
#8

AW: Fokus auf Paintbox/Image setzen

  Alt 20. Nov 2010, 17:51
Ich hab dazu noch eine Idee. Diese Scrollbars und ComboBoxen werden nur in Pausen aktiv, ansonsten sind sie disabled.
Werde es erst einmal so weiter programmieren.
Danke für die Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:16 Uhr.
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