Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Übernahme der Eingabe mit ENTER (https://www.delphipraxis.net/67462-uebernahme-der-eingabe-mit-enter.html)

jmit 14. Apr 2006 18:35


Übernahme der Eingabe mit ENTER
 
Hallo,

ich habe in meinem Programm ein Eingabefeld vom Typ TEdit. Nach Eingabe eines Wertes möchte ich diesen mit der Enter-Taste übernehmen, um weitere Berechnungen bzw. Ausführungen im Programm zu machen. Leider bekomme ich mit KeyPress nicht das gewünschte Ergebnis. Über die Suche habe ich noch nichts passendes gefunden.

Vielen Dank im Voraus

Gruß Jörg

faux 14. Apr 2006 18:36

Re: Übernahme der Eingabe mit ENTER
 
Hallo!

Mache es mit KeyDown und überprüfe den Wert auf 13.

Delphi-Quellcode:
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
  begin
    //
    // Code
    //
  end;
end;
Grüße
Faux

EDatabaseError 14. Apr 2006 18:36

Re: Übernahme der Eingabe mit ENTER
 
Mach in dem Edit das onKeyDown Event folgendermaßen:

Delphi-Quellcode:
begin
if key = 13 then
begin
//mach dann des.
end;
end;
Mfg
Tobi

(Man da war einer schneller)

MrKnogge 14. Apr 2006 19:14

Re: Übernahme der Eingabe mit ENTER
 
Wenn du am schluss noch den key auf #0 setzt, dann verhinderst du den WindowsBeep, der normalerweise erklingt.
Delphi-Quellcode:
if key = 13 then
begin
// tue dies und jenes
key := #0;
end;
gruss

PS: Beim nächsten mal bitte die Suche verwenden.

faux 14. Apr 2006 19:16

Re: Übernahme der Eingabe mit ENTER
 
Zitat:

Zitat von MrKnogge
Wenn du am schluss noch den key auf #0 setzt, dann verhinderst du den WindowsBeep, der normalerweise erklingt.

In diesem Fall musst du Key auf 0 setzen, da wir uns in KeyDown befinden, welches den Parameter Key als Word verlangt.

Grüße
Faux

Khabarakh 14. Apr 2006 19:57

Re: Übernahme der Eingabe mit ENTER
 
Zitat:

Zitat von EDatabaseError
(Man da war einer schneller)

Ähm... und warum schickst du dann deinen Beitrag noch ab :shock: ?
Es ist ja nicht so, dass mich der rote Kasten noch nie gelinkt hat, aber da du den Text nicht dazueditiert hast, hast du faux' Antwort wohl noch vor dem Abschicken gesehen :| .
Und da dein Beitrag weder lang ist noch irgendwelchen Mehrwert im Vergleich zu faux' Post enthält, ist er eigentlich reiner Spam.

@jmit (und alle anderen ;) ): Solange du den User nicht direkt darauf hinweist, finde ich es nicht intuitiv, in einem Edit Enter drücken zu müssen. Besser wäre ein "Berechnen"-Button daneben mit Default=true. Dann brauchst du a) nicht einmal selbst Code schreiben, b) dich auch nicht um den Beep kümmern und c) dich nicht um verwunderte User sorgen.

Balu der Bär 14. Apr 2006 20:01

Re: Übernahme der Eingabe mit ENTER
 
Genau wie dein Beitrag auch.

Edit: Nur als Hinweis, Khabarakh hat seinen Beitrag gerade editiert, vorher fand sich in ihm der untere Teil nicht an, deshalb wies ich ihn darauf hin das sein Post ebenfalls nur Spam ist.

3_of_8 14. Apr 2006 20:12

Re: Übernahme der Eingabe mit ENTER
 
BTW: key:=0; nützt nix. Zuweisung geht nur im OnKeyPress, wenn ich mich nicht irre.

Und, kann man im OnKeyPress nicht auch mit #13 arbeiten?

Nachtrag: Ja, das geht:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
showmessage('Blubb!');
key:=#0;
end;
end;

Khabarakh 14. Apr 2006 20:17

Re: Übernahme der Eingabe mit ENTER
 
@Balu: D'oh, du warst eine Minute zu schnell ;) . Den Rest hatte ich einfach vergessen, Alzheimer fängt wohl schon an. Jedoch würde ich grundsätzlich auch einen vollkommenen Offtopic-Beitrag schreiben, um auf solche sinnlosen Beiträge zu reagieren. Oder sollten in Zukunft alle "Benutze doch nächstes Mal bitte die Suche"-Beiträge sofort gelöscht werden?
Aber wenn, wie faux mir geschrieben hat, EDataBaseError wirklich editiert hat und es sich um einen Forenbug handelt, ist der obere Teil meines Beitrages natürlich null und nichtig.

@3_of_8: faux hat doch schon die Methodensignatur gepostet, daran kannst du erkennen, dass Key ein Refernzparameter ist.

3_of_8 14. Apr 2006 20:19

Re: Übernahme der Eingabe mit ENTER
 
Das Ding kann noch so sehr ein Pointer auf Key sein, es funktioniert so einfach nicht. Nur in OnKeyPress. Ich habs gerade eben getestet.

Khabarakh 14. Apr 2006 20:25

Re: Übernahme der Eingabe mit ENTER
 
Nochmal d'oh. Ich hatte eigentlich erwartet, dass gerade editierte Felder im OI vorm Kompilieren noch gespeichert werden :| . Stand nach dem zweiten Kompilieren: Du hast völlig Recht.

3_of_8 14. Apr 2006 20:29

Re: Übernahme der Eingabe mit ENTER
 
Ein ganz neues Gefühl. ;)

faux 14. Apr 2006 20:30

Re: Übernahme der Eingabe mit ENTER
 
Zitat:

Zitat von Khabarakh
@jmit (und alle anderen ;) ): Solange du den User nicht direkt darauf hinweist, finde ich es nicht intuitiv, in einem Edit Enter drücken zu müssen. Besser wäre ein "Berechnen"-Button daneben mit Default=true. Dann brauchst du a) nicht einmal selbst Code schreiben, b) dich auch nicht um den Beep kümmern und c) dich nicht um verwunderte User sorgen.

Vielleicht will er diese Funktion ja nur zusätzlich benutzen, vielleicht in einem Chatclienten oder ein Programm das mehrere Einträge in eine ListBox benötigt, welche auch über die Tastatur schnell geschehen sollen? ;)

Zitat:

Zitat von 3_of_8
BTW: key:=0; nützt nix. Zuweisung geht nur im OnKeyPress, wenn ich mich nicht irre.

Das stimmt nur bedingt: Zuweisen kannst du alles (Delphi-Referenz durchsuchenvar), aber es hat keine Wirkung. Keine Ahnung wieso.

Grüße
Faux

Khabarakh 14. Apr 2006 20:43

Re: Übernahme der Eingabe mit ENTER
 
Kennst du einen Chat-Client ohne Send-Button? Ich nicht ;) .
Gut, es mag vielleicht einen geben, aber der Button stört nun wirklich nicht. Gleiches gilt bei der ListBox.

3_of_8 14. Apr 2006 20:44

Re: Übernahme der Eingabe mit ENTER
 
@faux: Natürlich kann man rumzuweisen wie man will. Du kannst die in meinem Satz ein "sinnvoll" ergänzen.

Der was bringt mir eine Zuweisung, die syntaktisch korrekt ist, aber semantisch vollkommen sinnlos?

jmit 15. Apr 2006 16:45

Re: Übernahme der Eingabe mit ENTER
 
Hallo,

erst einmal vielen Dank für die Antworten.

@3_of_8
die Lösung hat super geklappt. Danke

@khabarahk
Einen Button zum Auslösen einer Aktion wollte ich eigentlich vermeiden, da im Moment alle Aktionen im Hauptfenster ablaufen.
Wenn ich einen Button verwende, dann würde ich die benötigten Eingaben für mein Programm in einem weiteren Eingabefenster mit Übernahme der Daten über einen Button machen, und die Ausgaben im Hauptfenster machen. Da aber in meinem Programm nicht die großen Berechnungen gemacht werden, spielt sich alles nur in einem Fenster ab. In diesem Fenster finde ich einen Button zum Berechnen nicht so schön. Aber trotzdem vielen Dank.

Gruß Jörg


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