Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ereginiss: onkeydown funktioniert nicht (https://www.delphipraxis.net/129464-ereginiss-onkeydown-funktioniert-nicht.html)

bl4ckb1rd 19. Feb 2009 16:19


ereginiss: onkeydown funktioniert nicht
 
Ich möchte wenn ich die pfeil taste nach unten drücken, mein alter kreis überzeichnet wird, und ein neuer 10 pixel unter dem alten kreis erstellt wird. Leider funktioniert das ganze nicht. Das ereignis: OnKeyDown von Form1 scheint überhaupt nicht zu gehen -.- Habe Testweise einen Button erstellt der mir den alten kreis überzeichnen soll, dies hat auch wunderbar geklappt.

Hier der Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure Button2Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    meinstartX, meinstartY : integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Canvas.Pen.color:=cl3DDkShadow;
image1.canvas.Brush.Color := clblack;
image1.Canvas.fillrect(rect(0,0,image1.width,image1.height));
image1.canvas.Brush.Color := cl3DDkShadow;
image1.Canvas.FillRect(rect(20,20,image1.Width-20,image1.Height-20));
image1.Canvas.Brush.Color := clwhite;
image1.Canvas.ellipse(meinstartX-10,meinStartY-10,meinStartX+10,meinStartY+10);




end;

procedure TForm1.Button2Click(Sender: TObject);
begin
image1.Canvas.Pen.color:=cl3DDkShadow;
image1.canvas.Brush.Color := cl3DDkShadow;
  image1.Canvas.ellipse(meinstartX-10,meinStartY-10,meinStartX+10,meinStartY+10);

  meinstartY := meinstartY +10;
  image1.Canvas.Pen.color:=cl3DDkShadow;
  image1.Canvas.Brush.Color := clwhite;
  image1.Canvas.ellipse(meinstartX-10,meinStartY-10,meinStartX+10,meinStartY+10);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
meinstartX := image1.Width div 2;
meinStartY := 100;
form1.KeyPreview := true;
end;

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


if key = vk_down then
  begin
  image1.canvas.Brush.Color := cl3DDkShadow;
  image1.Canvas.ellipse(meinstartX-10,meinStartY-10,meinStartX+10,meinStartY+10);

  meinstartX := meinstartX +10;
  meinstartY := meinstartY +10;
  image1.Canvas.Pen.color:=clwhite;
  image1.Canvas.Brush.Color := clwhite;
  image1.Canvas.ellipse(meinstartX-10,meinStartY-10,meinStartX+10,meinStartY+10);

  end;


end;


end.

mkinzler 19. Feb 2009 16:20

Re: ereginiss: onkeydown funktioniert nicht
 
Ist Form.KeyPreview True?

bl4ckb1rd 19. Feb 2009 16:43

Re: ereginiss: onkeydown funktioniert nicht
 
früher hat alles wunderbar geklappt, habe aber jetzt mal form1.keyprevie auf true gesetzt aber es geht immernoch nicht ;(

worker 19. Feb 2009 18:32

Re: ereginiss: onkeydown funktioniert nicht
 
Ist das Ereignis auch im OI gesetzt?

5etH 20. Feb 2009 07:29

Re: ereginiss: onkeydown funktioniert nicht
 
Wie wäre es, wenn du es einfach über die Application Events machst ? (OnMassages)

toms 20. Feb 2009 07:35

Re: ereginiss: onkeydown funktioniert nicht
 
Zitat:

Zitat von 5etH
Wie wäre es, wenn du es einfach über die Application Events machst ? (OnMassages)

Wäre eine Möglichkeit doch ist in diesem Fall wohl zu viel des Guten.

5etH 20. Feb 2009 07:41

Re: ereginiss: onkeydown funktioniert nicht
 
ich denke das es besser ist, da ich mir denken kann das er zukünftig noch mehr keys abfragen will. Das ganze hört sich stark nach einem Spiel an ^^. Aber ich denke, dass es der Programmierer selber wissen muss was angemessen ist, aber ich bin der meinung das es Wohl besser ist, wenn er zukünftig mehr Keys abfragen möchte.

Gruß
5etH

Hawkeye219 20. Feb 2009 10:04

Re: ereginiss: onkeydown funktioniert nicht
 
Hallo,

noch einfacher wäre es mit TForm.OnShortCut.

Gruß Hawkeye


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