AGB  ·  Datenschutz  ·  Impressum  







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

Fokus auf Form1 setzen

Ein Thema von funky · begonnen am 14. Nov 2010 · letzter Beitrag vom 15. Nov 2010
Antwort Antwort
Seite 1 von 2  1 2      
funky

Registriert seit: 14. Nov 2010
15 Beiträge
 
#1

Fokus auf Form1 setzen

  Alt 14. Nov 2010, 17:57
Delphi-Version: 5
Hi,

Also bin neu hier und ich weis der Titel sagt einigen erstmal nix.
Mein Problem ist folgender:

Ich habe ein Spielfeld(Image1) und einen Button1 mit dem auf Image1 das Spielfeld und die Figur gezeichnet werden.

Jetzt habe ich bei "FormKeyDown" die Tastenabfrage rein gemacht, also wenn man die Pfeiltaste nach oben drückt soll sich die Figur nach oben bewegen.
Allerdings geht das nicht. Sobald ich auf Button1 klicke reagiert das Programm nicht auf die Tastenabfrage wie es soll.

Ich könnte bei Button1 unter "OnKeyDown" dasselbe wie bei "FormKeyDown" reinmachen. Dann funktioniert es auch. Da habe ich dann aber auch wieder das Problem, dass ich es bei jedem Button, dass ich in das Formular reinmache den Code reinmachen muss und dann ist der Code nur unnötig lang/unsauber.

Ich hoffe ihr habt verstanden wo mein Problem liegt.

MfG funky
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:01
Setz mal die Eigenschaft KeyPreview der Form auf true.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:02
Hallo,

versuche mal "KeyPreview" des Formulars auf "true" zu setzen (entweder per Code oder im OI).

Güße
Matze

Edit: Och Mensch, Deddy ...
Edit 2: Dass der Beitrag nicht ganz umsonst ist: Herzlich Willkommen in der DP, funky!

Geändert von Matze (14. Nov 2010 um 18:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:03
[OT] Der Turbo-Opa hat wieder zugeschlagen [/OT]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
funky

Registriert seit: 14. Nov 2010
15 Beiträge
 
#5

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:06
Nein funktioniert nicht.
Sobald ich einen Button auf mein Formular setze reagiert er nicht mehr auf meine Tastenabfrage.

Edit:
Ich weis nicht ob das was bringt aber ich benutze "Embarcadero RAD Studio 2010"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:09
Das mag ich nicht recht glauben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
funky

Registriert seit: 14. Nov 2010
15 Beiträge
 
#7

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:10
Was magst du nicht glauben? oO
Soll ich dir meine Projektdateien schicken?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:11
Zeig doch einfach mal den Quelltext(den relevanten Teil).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
funky

Registriert seit: 14. Nov 2010
15 Beiträge
 
#9

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:13
Also das ist der Teil wo er die Figur bewegt oder eben nicht bewegt:

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


    if (Key = VK_UP) then
  begin
     if (arFelder[PosY-1,PosX] = 0) or (arFelder[PosY-1,PosX] = 2) then
     begin
        PosY := PosY-1;
        Image1.Canvas.Brush.Color:= clYellow;
        Form1.Image1.canvas.Rectangle(PosX * Abstand, PosY * Abstand, Abstand + (PosX * Abstand),
        Abstand + (PosY * Abstand));

           if arFelder[PosY,PosX] = 2 then
           begin
            ShowMessage('Sieg!')
           end;

     arFelder[PosY,PosX] := 4;
     end;

  end



   else if (Key = VK_Down) then
  begin
     if (arFelder[PosY+1,PosX] = 0) or (arFelder[PosY+1,PosX] = 2) then
     begin
        PosY := PosY+1;
        Image1.Canvas.Brush.Color:= clYellow;
        Form1.Image1.canvas.Rectangle(PosX * Abstand, PosY * Abstand, Abstand + (PosX * Abstand),
        Abstand + (PosY * Abstand));

           if arFelder[PosY,PosX] = 2 then
           begin
            ShowMessage('Sieg!')
           end;

     arFelder[PosY,PosX] := 4;
     end;

  end



    else if (Key = VK_Right) then
  begin
     if (arFelder[PosY,PosX+1] = 0) or (arFelder[PosY,PosX+1] = 2) then
     begin
        PosX := PosX+1;
        Image1.Canvas.Brush.Color:= clYellow;
        Form1.Image1.canvas.Rectangle(PosX * Abstand, PosY * Abstand, Abstand + (PosX * Abstand),
        Abstand + (PosY * Abstand));

           if arFelder[PosY,PosX] = 2 then
           begin
             ShowMessage('Sieg!')
           end;

     arFelder[PosY,PosX] := 4;
     end;

  end



   else if (Key = VK_Left) then
  begin
     if (arFelder[PosY,PosX-1] = 0) or (arFelder[PosY,PosX-1] = 2) then
     begin
        PosX := PosX-1;
        Image1.Canvas.Brush.Color:= clYellow;
        Form1.Image1.canvas.Rectangle(PosX * Abstand, PosY * Abstand, Abstand + (PosX * Abstand),
        Abstand + (PosY * Abstand));

           if arFelder[PosY,PosX] = 2 then
            begin
             ShowMessage('Sieg!')
            end;

     arFelder[PosY,PosX] := 4;
     end;

  end



end;

Und dann ist da noch der Teil wo das Spielfeld gezeichnet wird.

Geändert von mkinzler (14. Nov 2010 um 18:30 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Fokus auf Form1 setzen

  Alt 14. Nov 2010, 18:15
Und was steht im OnClick des Buttons?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 20:29 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