| Autor |
Beitrag |
fuman
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 11.09.08 21:18
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:
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
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: 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ß
--
_________________ Hallo Mutti
|
|
fuman 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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>
      
Beiträge: 59
Win XP, Win 98
Delphi 7
|
Verfasst: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
Calculon
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: 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ß
--
_________________ Hallo Mutti
|
|
freak4fun
      
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: 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. 
_________________ "Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 13.09.08 10:10
Zudem reicht für das Zuordnen der Enter-Taste Default := True; vollkommen aus ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
fuman 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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.
|
|