Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Mit Enter-Taste bestätigen?
Leon_derZocker - Do 15.03.18 10:34
Titel: Mit Enter-Taste bestätigen?
Hallo,
Ich bin dabei ein einfaches Zahlen-Raten-Spiel zu programmieren.
Ich bin damit eigentlich auch fertig aber es stört mich das ich ständig auf OK klicken muss um eine von mir geratene Zahl zu bestätigen.
Daher wollte ich es so programmieren das ich die Zahl mit der ENTER-Taste bestätigen kann.
Ich bin ein Neuling im Bereich programmieren.
Kann mir bitte jemand helfen(ein Tipp wäre auch OK)?
Danke schon mal im Voraus. :zustimm:
Hier der Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112:
| unit Raten3;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Enter(Sender: TObject; var Key: Char); private public end;
const Max = 15 ; var Form1: TForm1; Eingabe, Zufall, Versuche: Integer; SpielEnde: Boolean;
implementation
{$R *.DFM}
Ab hier________________________________________________
procedure TForm1.Button1Click(Sender: TObject); var Ergebnis, Differenz: Integer; begin if SpielEnde then Close; try Edit1.SetFocus; Eingabe := StrToInt (Edit1.Text); inc (Versuche); Ergebnis := Eingabe - Zufall; if Versuche <= Max then Label2.Caption := IntToStr (Versuche) + '. Versuch:' else Label2.Caption := 'Es reicht!'; if Eingabe = Zufall then Label1.Caption := 'Richtig geraten!';
if Eingabe < Zufall then begin Label1.Caption := 'Deine Zahl ist zu klein!'; if Abs(Eingabe - Zufall) < 3 then Label1.Caption := 'Deine Zahl ist zu klein! Nah dran!'; end;
if Eingabe > Zufall then begin Label1.Caption := 'Deine Zahl ist zu groß!'; if Abs(Eingabe - Zufall) < 3 then Label1.Caption := 'Deine Zahl ist zu groß! Nah dran!'; end;
if (Eingabe = Zufall) or (Versuche > Max) then begin Button1.Caption := 'Ende'; SpielEnde := true; end; except Label1.Caption := 'Quatsch!'; end; end;
Bis hier_______________________________________
procedure TForm1.Button2Click(Sender: TObject); begin Edit1.SetFocus; Label1.Caption := 'Ich denke mir eine neue Zahl!'; Label2.Caption := 'Rate mal!'; Button1.Caption := 'OK'; Zufall := random(100) + 1; Versuche := 1; SpielEnde := false; end;
procedure TForm1.Enter(Sender: TObject; var Key: Char); begin
end;
procedure TForm1.FormCreate(Sender: TObject); begin randomize; Zufall := random(100) + 1; Versuche := 1; SpielEnde := false; end;
end. |
Moderiert von Narses: Delphi-Tags hinzugefügtModeriert von Narses: Topic aus Sonstiges (Delphi) verschoben am Do 15.03.2018 um 15:03
Symbroson - Do 15.03.18 13:35
Du könntest zB dem Edit ein OnKeyDown Event hinzufügen in dem du prüfst, ob die gedrückte Taste [Enter] war - und dann dein Button1Click aufrufen.
Delphi-Quelltext
1: 2: 3:
| procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = 13 then Button1Click(Sender); end; |
13 ist sozusagen der KeyCode von Zeilenumbrüchen.
Windows nutzt für Zeilenumbrüche als Escape-Sequenz \r\n, bzw die Zeichencodes 13 und 10 hintereinander.
LG
jasocul - Do 15.03.18 13:52
Im Objektinspektor des Buttons die Eigenschaft "Default" auf True setzen, sollte eigentlich schon reichen.
Symbroson - Do 15.03.18 13:57
Stimmt, das geht auch
bei mehreren Edits mit unterschiedlichen callbacks wird es dann aber problematisch. Dann lieber gleich richtig
jasocul - Do 15.03.18 14:24
Mehrere Edits, die unterschiedlich auf ein <Enter> reagieren? Kann man machen, aber ... einheitliche Benutzersteuerung hätte da bei mir Priorität. :wink:
Ich denke aber, dass diese Überlegungen für den TE an dieser Stelle zu weit gehen. Daher sollten wir vielleicht in diesem Thread nicht weiter darauf eingehen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!