Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Bei betätigen der Eingabetaste Procedur ausführen


BigT - So 10.12.06 17:51
Titel: Bei betätigen der Eingabetaste Procedur ausführen
Hi,
ich habe schon wieder ein Problem:
Ich habe eine Textbox (Edit1) und einen Button (Button2). Jetzt will ich, dass wenn man in der Textbox etwas eingegeben hat und die Eingabetaste drückt, der Procedure Button2.Click ausgeführt wird.

Bis jetzt habe ich folgendes geschrieben:



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char;);
begin

 If key=VK_Return then                           {Bei Enter Button 2 drücken}
  begin
   Button2.Click;
  end;
end;



Es kommt die Fehlermeldung:
[Error] Unit1.pas(93): Undeclared identifier: 'Edit1KeyPress'

Was ist hier falsch?
Es gibt doch eine Form (Form1), Textbox und Button.

Vielen Dank im Voraus
Thorsten

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt


Leuchtturm - So 10.12.06 19:11

Ich denke das du vergessen hast die procedure zu deklarieren. Einfach im Objectmanager ereignisse dann KeyPress dann den Code rein und fertig


BigT - Mo 11.12.06 18:12

Ja das hatte ich auch noch nicht gemacht.
Jetzt habe ich einmal das da stehen:


Delphi-Quelltext
1:
2:
3:
type
  procedure Edit1KeyUp(Sender: TObject; var Key: Word;Shift: TShiftState);
  procedure Edit2KeyUpPress(Sender: TObject; var Key: Word; Shift: TShiftState);



Und vor dem der Procedure der ButtonsClick jeweils das stehen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Edit2KeyUpPress(Sender: TObject;
var Key: Word;Shift: TShiftState);
begin

If key=VK_Return then                           {Bei Enter Button 1 drücken}
begin
    Button1.Click;
end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
 If key=VK_Return then                           {Bei Enter Button 2 drücken}
  begin
   Button2.Click;
  end;
end;


Trotzdem passiert nichts,wenn ich in der Textbox bin und Enter drücke!

Was ist hier noch falsch?

Gruß Thorsten

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt


Leuchtturm - Mo 11.12.06 18:16

Hat der BUtton überhaupt eine CLICK-PROCEDURE :?: Sonst kann er ja nichts machen

PS: Heiß das nicht KeyPress?? du hast KeyUpPress geschrieben :wink:
PPS:Benutze bitte die Delphi-Tags


BigT - Mo 11.12.06 21:56

Ja es gibt eine Button1Click Prozedur. Hatte es vorher aber auch mit einer einfachen Messagebox getestet, doch es passiert garnix!
Habe das jetzt mit in ButtonKeyPress geändert, aber funktioniert trotzdem nicht.

Wie funktioniert das mit den Delphi-Tags?

Gruß Thorsten


konbom - Mo 11.12.06 22:53

Hast du die KeyPress-Prozedur überhaupt im Objektinspektor unter Ereignsse eingetragen???


Danny W. - Di 12.12.06 13:15

probiers mal mit dem OnKeyDown
OnKeyPresss ist für den jeweiligen ASCII Code der zugehörigen Tasten zuständig.


BigT - Di 12.12.06 16:01

Vielen dank!
Ich habe jetzt einfach die eigenschaft default des buttons auf true gesetzt und es klappt ohne probleme!
Weiß leider auch nicht warum das mit dem KeyPress nicht geklappt hatte. Hatte mehrere Sachen ausrobiert.

Gruß Thorsten


Ferdy2003 - Do 04.01.07 00:24

Hallo zusammen,

ich denke so hätte es auch funktioniert:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Edit2KeyUpPress(Sender: TObject;
var Key: Word;Shift: TShiftState);
begin

If key=VK_Return then                           {Bei Enter Button 1 drücken}
begin
    Button1.Click(Self);
end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
 If key=VK_Return then                           {Bei Enter Button 2 drücken}
  begin
   Button2.Click(Self);
  end;
end;


Gruss