Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - einen Button die Eingabe-Taste zu ordnen
fuman - Do 11.09.08 21:18
Titel: einen Button die Eingabe-Taste zu ordnen
Also....
ich habe mir in Delphi ein Programm gebastelt das, das Volumen und die Oberfläche anhand der Kantenlänge (die in Edit1 eingegeben werden muss) erechnen soll, dies passiert bei einem Klick auf einen Button.
gut..alles okay bis hier hin...
nun möchte ich aber das nachdem man in Edit1 die Kantenlänge eingibt nur dürch drücken der Eingabe-Taste der Berechnen Button geklickt wird.
Sodass man quasi nur das programm öffnen muss. Mit Form1.Edit1.SetFocus hab ich den Curser direkt auf Edit1 und muss nur die Zahl eingeben und auf die Eingabetaste drücken (das ist meine frage wie mach ich dass mit der eingabetaste)??
anbei mein quelltext:
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Panel1: TPanel; Button4: TButton; Button5: TButton; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Panel2: TPanel; Label3: TLabel; procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormActivate(Sender: TObject); private public end;
var Form1: TForm1; kantenlaenge, oberflaeche, volumen : DOUBLE;
implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject); begin Form1.Close; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.Edit1.Clear; Form1.Label1.Caption := '';; Form1.Label2.Caption := ''; kantenlaenge := 0; end;
procedure TForm1.Button1Click(Sender: TObject); begin kantenlaenge := StrToFloat(Form1.Edit1.Text); oberflaeche := kantenlaenge * kantenlaenge * 6; volumen := kantenlaenge * kantenlaenge * kantenlaenge; Form1.Label1.Caption := FloatToStr(oberflaeche); Form1.Label2.Caption := FloatToStr(volumen); if volumen > 3375 then showMessage('Das ist ein sehr großer Würfel'); end;
procedure TForm1.FormActivate(Sender: TObject); begin Form1.Edit1.SetFocus; end;
end. |
Moderiert von
Narses: Delphi-Tags hinzugefügt
Calculon - Do 11.09.08 21:29
Im Objectinspector findest du für dein Edit Feld das Ereignis OnKeyPress. In dieses Ereignis schreibst du dann:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; Berechne; end; end; |
Gruß
--
fuman - Fr 12.09.08 06:23
vielen dank schonmal aber bei mir kommt immer noch eine Fehlermeldung...
und zwar bei " Berechne; "
[Fehler] Unit1.pas(77): Undefinierter Bezeichner: 'Berechne'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
bitte um hilfe....
<TargeT> - Fr 12.09.08 06:45
fuman hat folgendes geschrieben: |
vielen dank schonmal aber bei mir kommt immer noch eine Fehlermeldung...
und zwar bei " Berechne; "
[Fehler] Unit1.pas(77): Undefinierter Bezeichner: 'Berechne'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
bitte um hilfe.... |
"Berechne" steht hier stellvertretend für deine Rechen Procedure.
Ersetz "Berechne" einfach durch den Inhalt von Button1Click.
Oder du ersetzt "Berechne" durch Button1.Click; .
alzaimar - Fr 12.09.08 07:06
Wozu das KeyPress-Gedöns? Es reicht, den Button als 'Default' zu deklarieren.
Delphi-Quelltext
1:
| Button.Default := True; |
Dann bekommt er einen fetten Rahmen und man sieht gleich, das das der Button ist, der auf ENTER/RETURN reagiert.
Dann gibt es noch die Eigenschaft 'Button.Cancel'. Die steuert, ob der Button auf ESC reagieren soll.
Calculon - Fr 12.09.08 08:51
alzaimar hat folgendes geschrieben: |
| Wozu das KeyPress-Gedöns? [..] |
Es hat sich bei mir v.a. im Zusammenhang mit Edits immer bewährt...
Gruß
--
freak4fun - Fr 12.09.08 11:35
Du solltest dir vielleicht angewöhnen Functionen/Prozeduren zu schreiben die du mit Hilfe der Controls aufrufst und nicht alles in die Control-Methoden schreiben. ;)
BenBE - Sa 13.09.08 10:10
Zudem reicht für das Zuordnen der Enter-Taste Default := True; vollkommen aus ...
fuman - Di 16.09.08 17:13
Danke!!
hat alles geklappt :)...
ja mit den proceduren sollt ich mal Anfangen.
ich mach am besten mal ein neues Thema auf.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!