Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Figur und Button (https://www.delphipraxis.net/160256-figur-und-button.html)

Coxy 4. Mai 2011 17:46

Delphi-Version: 5

Figur und Button
 
Hallo,
ich habe eine letzte Frage:
ich habe eine Figur die ich mit den Pfeiltasten steuere und mehrere Buttons.
Solange diesen Buttons jedoch da sind kann ich meine Figur nicht bewegen.
Stattdessen kann man dann mit den Pfeiltasten die Markierung der Buttons ändern (also wenn ich rechts drücke, dann wird der rechte Markiert, so dass man zur Bestätigung nur noch Enter drücken muss).
Wie kann ich das am leichtesten beheben?

PS: meine figur bewegt sich über die Formulare/Funktionen onkeydown und onkeyup

Grüße

patti 4. Mai 2011 17:49

AW: Figur und Button
 
Probier mal, ob es dein Problem behebt, wenn du die Eigenschaft KeyPreview deines Formulars auf true stellst ;)

alfold 4. Mai 2011 18:01

AW: Figur und Button
 
und in diesen Proceduren evtl noch am Schluss key:=0 einfügen.
2. Möglichkeit, die Tasten WASD benutzen, wie sie ja in den meisten Spielen heute benutzt werden.

Gruss alfold

Coxy 4. Mai 2011 18:12

AW: Figur und Button
 
also keypreview auf true zu stellen hat leider nichts bewirkt

und @alfold
meinst du das hier?
Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

if key = vk_up then hoch:= 0;
if key = vk_down then runter:=0;
if key = vk_left then links :=0;
if key = vk_right then rechts :=0;
end;
habt ihr vielleicht sonst noch Vorschläge?

alfold 4. Mai 2011 18:19

AW: Figur und Button
 
ne so nicht
Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
//hier deine keyabfragen
.....
.....
.....
// und zum schluss
key:=0;
end;
Gruss alfold

Coxy 4. Mai 2011 19:09

AW: Figur und Button
 
hat leider auch nicht funktioniert.
Woran könnte es sonst liegen?
Oder hat jemand irgendeine andere Idee?
Grüße

dataspider 4. Mai 2011 20:56

AW: Figur und Button
 
Hi,

du musst verhindern, dass der Focus zum Button kommt bzw. bleibt. Ich habe das mal irgendwo gebraucht und dann über ein unsichtbares Edit gelöst:

Delphi-Quellcode:
type
  TfrmMain = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormShow(Sender: TObject);
  private
    FEdit: TEdit;
    procedure LockFocus;
    procedure CreateFocusEdit;
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  CreateFocusEdit;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  MessageDlg('Button 1', mtWarning, [mbOK], 0);
  LockFocus;
end;

procedure TfrmMain.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  MessageDlg('KeyUp', mtInformation, [mbOK], 0);
  Key := 0;
end;

procedure TfrmMain.LockFocus;
begin
  if FEdit.CanFocus then
    FEdit.SetFocus;
end;

procedure TfrmMain.CreateFocusEdit;
begin
  FEdit := TEdit.Create(Self);
  FEdit.Width := 0;
  FEdit.Height := 0;
  FEdit.Left := 0;
  FEdit.Top := 0;
  FEdit.Parent := Self;
end;

procedure TfrmMain.FormShow(Sender: TObject);
begin
  LockFocus;
end;
...
[EDIT]Alternative wäre TSpeedButton anstatt TButton...[/EDIT]

Frank

alfold 4. Mai 2011 21:08

AW: Figur und Button
 
[OT] Mal ne andere Frage. Gibt es heute noch Spiele die mit den Kursortasten bedient werden?[/OT]
Alternativ währe ja WASD als Bewegungstasten zu nehmen:wink:

Gruss alfold

himitsu 5. Mai 2011 08:13

AW: Figur und Button
 
Ich mag die Cursortasten aber und ja, ich nutze sie sehr oft.
(für rechtshändige Einhandspieler sind diese auch noch sehr gut positioniert)

PS: Die SuFu sagt:
http://www.delphipraxis.net/159947-d...n-bewegen.html


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