Autor Beitrag
fuman
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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:
ausblenden volle Höhe 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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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
//eingabe
kantenlaenge := StrToFloat(Form1.Edit1.Text);
//verarbeitung
oberflaeche := kantenlaenge * kantenlaenge * 6;
volumen := kantenlaenge * kantenlaenge * kantenlaenge;
//ausgabe
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 user profile iconNarses: Delphi-Tags hinzugefügt
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Do 11.09.08 21:29 
Im Objectinspector findest du für dein Edit Feld das Ereignis OnKeyPress. In dieses Ereignis schreibst du dann:
ausblenden 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; // ich würde deine Rechenprozedur auslagern evtl. als function (*)
    end;
end;


Gruß
--

_________________
Hallo Mutti
fuman Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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>
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 59

Win XP, Win 98
Delphi 7
BeitragVerfasst: Fr 12.09.08 06:45 
user profile iconfuman 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 12.09.08 07:06 
Wozu das KeyPress-Gedöns? Es reicht, den Button als 'Default' zu deklarieren.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Fr 12.09.08 08:51 
user profile iconalzaimar 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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.