Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi FormKeyDown Problem (https://www.delphipraxis.net/95036-formkeydown-problem.html)

hanfy 29. Jun 2007 16:52


FormKeyDown Problem
 
Also ich bin nicht wirklcih gut in delphi aber das sag ja mal jedr de neu anfängt und zwar verstehe ich ncith wieso ich formkeydown nicht verwenden kann

ich habe meine programm so getestet das ich das bild mit 4 buttons steuern kann das geht wunderbar nur halt nicht mit dem befehl keydown
ich habe dieses KeyPreview auf True

und das ist meine fehler meldung:
Code:
Build
  [Error] Unit1.pas(53): Undeclared identifier: 'FormKeyDown'
  [Error] Unit1.pas(53): ';' expected but '(' found
  [Error] Unit1.pas(53): ';' expected but ')' found
  [Error] Unit1.pas(56): Undeclared identifier: 'Image1'
  [Error] Unit1.pas(56): Missing operator or semicolon
  [Error] Unit1.pas(57): Missing operator or semicolon
  [Error] Unit1.pas(60): ';' expected but '.' found
  [Error] Unit1.pas(62): Declaration expected but end of file found
  [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
hier mal mein quelltext:
Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Top := Image1.Top -5
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Image1.Left := Image1.Left +5
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Left := Image1.Left -5
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Image1.Top := Image1.Top +5
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key : Char);
begin
if key=#87 then
Image1.Top := Image1.Top -5
begin

end;
end.
MFG Hanfy

Nuclear-Ping 29. Jun 2007 16:55

Re: FormKeyDown Problem
 
Die Fehlermeldung sagt ja schon alles aus.
Zitat:

procedure TForm1.FormKeyDown(Sender: TObject; var Key : Char);
begin
if key=#87 then
Image1.Top := Image1.Top -5 << Hier fehlt das Semikolon
begin << Wozu nochmal begin?

end; << 2x begin, nur 1x end
end.

fLaSh11 29. Jun 2007 17:02

Re: FormKeyDown Problem
 
außerdem musst du noch im OnKeyDown-Ereignis im OI dein "Form1.OnKeyDown" eintragen...
Außerdem stehen normalerweise folgende Params dabei:
Delphi-Quellcode:
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

hanfy 29. Jun 2007 17:05

Re: FormKeyDown Problem
 
habe es nochmal geändert wie du es geschrieben hast aber es kommt immer noch die einen fehler und ich weiss nciht was ich machen soll sry

edit: @ flash erm.. ich weis nicht was du meinst mit Form1.OnKeyDown

Code:
Build
  [Error] Unit1.pas(53): Undeclared identifier: 'FormKeyDown'
  [Error] Unit1.pas(53): ';' expected but '(' found
  [Error] Unit1.pas(53): ';' expected but ')' found
  [Error] Unit1.pas(56): Undeclared identifier: 'Image1'
  [Error] Unit1.pas(56): Missing operator or semicolon
  [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key=#87 then
Image1.Top := Image1.Top -5;
end;
end.

marabu 29. Jun 2007 18:12

Re: FormKeyDown Problem
 
Herzlich willkommen in der Delphi-PRAXiS, hanfy.

Setze deine Prozedur FormKeyDown einfach mal auf Kommentar, indem du sie in geschweifte Klammern einfasst. Anschließend wählst du im Object Inspector deine Form aus und erzeugst die Behandlungsroutine für das Ereignis OnFormKeyDown() durch einen Doppelklick auf den leeren Eintrag in der Ereignisliste des OI. In den jetzt von der IDE erzeugten Prozedur-Rahmen kannst du dann deinen Code eintragen und der erste Compiler-Fehler verschwindet.

Freundliche Grüße vom marabu

hanfy 30. Jun 2007 12:44

Re: FormKeyDown Problem
 
Zitat:

Zitat von marabu
Herzlich willkommen in der Delphi-PRAXiS, hanfy.

Setze deine Prozedur FormKeyDown einfach mal auf Kommentar, indem du sie in geschweifte Klammern einfasst. Anschließend wählst du im Object Inspector deine Form aus und erzeugst die Behandlungsroutine für das Ereignis OnFormKeyDown() durch einen Doppelklick auf den leeren Eintrag in der Ereignisliste des OI. In den jetzt von der IDE erzeugten Prozedur-Rahmen kannst du dann deinen Code eintragen und der erste Compiler-Fehler verschwindet.

Freundliche Grüße vom marabu

so das habe ich gemacht danke schon mal wusste nicht das man das so macht habe immer alles selbst geschrieben xD

so nun kommt folgende fehler noch

Code:
Build
  [Error] Unit1.pas(64): Incompatible types
  [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
edit ist in ordnung es klappt alles danke an euch allen vielen dank


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