Autor Beitrag
Programmierer83
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Fr 20.04.07 18:49 
Hi.

Ich bin Schüler und wir programmieren im Informatikunterricht mit Delphi 7.

Wir müssen als Projekt ein Programm schreiben, welches einen EC-Automaten simuliert.

Ich bin noch ganz am Anfang des Programmes und wollte zunächst ein Tastenfeld einrichten, über welches ich dann eine 4-stellige PIN eingeben kann, welche in einem Editfeld erscheint.

Ich will das Tastenfeld mit 9 Buttons realisieren, also wie bei einem richtigen EC-Automat mit den Tasten 0-9.

Ich weis aber nicht genau, wie ich das mit dem Tastenfeld realisieren kann.

Hat da jemand von euch vllt. einen Tip?

THX...
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Fr 20.04.07 19:01 
Warum setzt du nicht einfach 10 Buttons: TButton auf ein Panel: TPanel? Oder nur Buttons
Nagetier
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 20.04.07 19:03 
Ich denke sein Problem ist eher die Sache mit dem Anzeigen in einem Edit Feld, damit da immer mehr Zahlen hinzukommen :-/

Edit1.Text.add gibts ja glaube ich nichts, oder?
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Fr 20.04.07 19:03 
Hallo,

du kannst ein Panel erstellen und da 9 Buttons und 1 Label reinmachen.

Wird jetzt ein Button gedrückt, wird die jeweilige Zahl zu einem String dazugepackt, gleichzeitig wird ein weiteres * im Label angezeigt.


//EDIT: Aber es gibt Edit1.text:= Edit1.text + '2'
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Fr 20.04.07 19:14 
user profile iconDragonclaw hat folgendes geschrieben:
... 9 Buttons ...

10 Buttons ;)
0 bis 9

Ja, und ich würde auch ein Edit machen (sieht schöner aus) und bei dem Edit die Eigenschaft PasswordChr auf * setzen. Dann sieht man eben Sternchen, statt den Zahlen...
Programmierer83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Fr 20.04.07 21:48 
So, ich hab jetzt mal ein Panel erstellt und mit den 10 Buttons verknüpft und auch ein Editfeld draufgelegt.

Aber wie bekomme ich die Werte durch drücken nun genau in das Editfeld?
Es geht auch vorrangig darum, dass nur max 4 Ziffern eingetragen werden dürfen.
Danach sollten die Buttons vllt. grau hinterlegt werden, dass man sie nicht mehr drücken kann.
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Fr 20.04.07 22:08 
OnButtonClick:
ausblenden Delphi-Quelltext
1:
if Lenght(Edit1.Text < 4then Edit1.Text := Edit1.Text + '1';					

damit kann man einfach nicht mehr als 4 Zeichen eingeben, das sieht man dann schon...
rizla
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 417
Erhaltene Danke: 2

XP
FPC mit Lazarus
BeitragVerfasst: Fr 20.04.07 22:17 
und wenn man im keypress folgendes schreibt
ausblenden Delphi-Quelltext
1:
if (length(edit1.text) = 4then key := #7 else edit1.text := edit1.text + key;					

dann hört mans auch noch..

(glaub ich doch, hab keen delphi zur Hand)
:gruebel:

_________________
if you have what they want - they'll find a way to take it (bruce sterling)
WOW - 10 JAHRE Mitglied beim Delphi-Forum. Wie die Zeit vergeht, Freunde.
Programmierer83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Fr 20.04.07 22:18 
user profile iconJakob Schöttl hat folgendes geschrieben:
OnButtonClick:
ausblenden Delphi-Quelltext
1:
if Lenght(Edit1.Text < 4then Edit1.Text := Edit1.Text + '1';					

damit kann man einfach nicht mehr als 4 Zeichen eingeben, das sieht man dann schon...


Oh, vielen dank schonmal dafür.

Mein Hauptproblem besteht aber eher darin, wie ich die Zahlen in das editfeld bekommen, beim Betätigen der Butons und das ich die Zahlenwerte dann auch zum Rechnen habe.
Bondfreak
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 21

Win XP Prof, Kubuntu Dapper Drake
Delphi 6 (besitze auch 2005 und 2006)
BeitragVerfasst: Fr 20.04.07 22:46 
user profile iconProgrammierer83 hat folgendes geschrieben:
user profile iconJakob Schöttl hat folgendes geschrieben:
OnButtonClick:
ausblenden Delphi-Quelltext
1:
if Lenght(Edit1.Text < 4then Edit1.Text := Edit1.Text + '1';					

damit kann man einfach nicht mehr als 4 Zeichen eingeben, das sieht man dann schon...


Oh, vielen dank schonmal dafür.

Mein Hauptproblem besteht aber eher darin, wie ich die Zahlen in das editfeld bekommen, beim Betätigen der Butons und das ich die Zahlenwerte dann auch zum Rechnen habe.



du kannst auch einfach im edit-feld in den objektinspektor gehen und die länge auf 4 zeichen festlegen, so kannst du dir die komplette if-verzweigung sparen ;)
Programmierer83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Sa 21.04.07 07:41 
Also das ganze sieht jetzt so aus: --> Bild

Wie könnte ich nun die Zahlen in das editfeld bekommen?
Ich muss ja in Panel1.change programmieren,oder?!

if button1.click then edit1.text.add (inttostr(1));
if button2.click then edit1.text.add (inttostr(2));
...

So vllt?

Müsste ich eigentlich nicht noch ne Variable als Integer deklarieren?
Einloggen, um Attachments anzusehen!
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Sa 21.04.07 08:19 
Wenn Du im Designer auf einen Button doppelklickst, dann kannst Du schreiben, was passieren soll, wenn der Button gedrückt wird.

Aber erstmal solltest Du die Buttons und das Editfeld hübsch benennen. Das kommt beim Lehrer gut an!
(z.B. : Button0, Button1, ... EditEingabe etc.)

Also: Doppelklick auf Button0:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Procedure TMyForm.Button0Click (Sender : TObject);
Begin
  EditEingabe.Text := EditEingabe.Text + '0';
End;

Jetzt F9 ('Run') und probieren, obs klappt. Hurra! :zustimm:
Nun alle anderen Buttons entsprechend 'mit Leben füllen'. Wieder 'F9', klappts? Cool. :dance:

_________________
Na denn, dann. Bis dann, denn.
Programmierer83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Sa 21.04.07 09:48 
user profile iconBondfreak hat folgendes geschrieben:
user profile iconProgrammierer83 hat folgendes geschrieben:
user profile iconJakob Schöttl hat folgendes geschrieben:
OnButtonClick:
ausblenden Delphi-Quelltext
1:
if Lenght(Edit1.Text < 4then Edit1.Text := Edit1.Text + '1';					

damit kann man einfach nicht mehr als 4 Zeichen eingeben, das sieht man dann schon...


Oh, vielen dank schonmal dafür.

Mein Hauptproblem besteht aber eher darin, wie ich die Zahlen in das editfeld bekommen, beim Betätigen der Butons und das ich die Zahlenwerte dann auch zum Rechnen habe.



du kannst auch einfach im edit-feld in den objektinspektor gehen und die länge auf 4 zeichen festlegen, so kannst du dir die komplette if-verzweigung sparen ;)


hm komisch - ich hab im OI "maxlenght" auf 4 gestellt, aber es werden trotzdem mehr Zahlen eingetragen.
aim65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: Sa 21.04.07 10:45 
Maxlength gilt nur bei einer Direkteingabe ins Edit-Feld.
Musst also die Grenze in Deine Routine einbauen.
Programmierer83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: So 22.04.07 06:51 
user profile iconJakob Schöttl hat folgendes geschrieben:
OnButtonClick:
ausblenden Delphi-Quelltext
1:
if Lenght(Edit1.Text < 4then Edit1.Text := Edit1.Text + '1';					

damit kann man einfach nicht mehr als 4 Zeichen eingeben, das sieht man dann schon...


Hm, kannst dur mir das nochmal genauer erklären?
Wom muss ich die befehlzeile eigentlich hinsetzen? Bei Edit1.change?

Irgendwie sehr ich auch nicht so richtig in der Struktur dieser Befehlszeile durch:
"Wenn weniger als 4 Ziffern, dann "1" in Editfeld"? o_O
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: So 22.04.07 09:58 
Du musst sie Button1.OnClick von einem Button hinsetzen.
Das machst du, indem du doppelt auf einen Button klickst. und dann fügst du einfach diese Quelltextzeile ein.

Zitat:
"Wenn weniger als 4 Ziffern, dann "1" in Editfeld"? o_O

schon richtig! es dürfen ja nicht mehr als 4 Zahlen sein, deswegen soll er die neue zahl nur dranhängen, an den Text des Edits, wenn es eben weniger sind.


ausblenden Delphi-Quelltext
1:
2:
if Lenght(Edit1.Text < 4then // Wenn bis jetzt weniger als 4 Zeichen im Edit1 sind, dann
  Edit1.Text := Edit1.Text + '1'// der neue Text von Edit1 ist der alte plus die Zahl 1


Und die Zahl 1 muss er hald nur dranhängen, wenn eben der 2. Button gedrückt wurde. Beim ersten Button muss eben statt der 1 eine 0 Stehen, und so weiter, beim 3. eine 2...
Kniwior
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 22.04.07 10:23 
Habe hier auch einen Art Geldautomat gefunden:

www.ftcomputing.de/delphigeldauto.htm


Aber ich denke, das ist nicht dass, wonach du suchtst.
Programmierer83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: So 22.04.07 13:48 
user profile iconJakob Schöttl hat folgendes geschrieben:
Du musst sie Button1.OnClick von einem Button hinsetzen.
Das machst du, indem du doppelt auf einen Button klickst. und dann fügst du einfach diese Quelltextzeile ein.

Zitat:
"Wenn weniger als 4 Ziffern, dann "1" in Editfeld"? o_O

schon richtig! es dürfen ja nicht mehr als 4 Zahlen sein, deswegen soll er die neue zahl nur dranhängen, an den Text des Edits, wenn es eben weniger sind.


ausblenden Delphi-Quelltext
1:
2:
if Lenght(Edit1.Text < 4then // Wenn bis jetzt weniger als 4 Zeichen im Edit1 sind, dann
  Edit1.Text := Edit1.Text + '1'// der neue Text von Edit1 ist der alte plus die Zahl 1


Und die Zahl 1 muss er hald nur dranhängen, wenn eben der 2. Button gedrückt wurde. Beim ersten Button muss eben statt der 1 eine 0 Stehen, und so weiter, beim 3. eine 2...


THX, geht aber nicht

mit lenght bekomme ich immer "undifinierter Bezeichner"
wenn ich lenght weglasse, dann kommt "String und Integer inkompatible Typen"

@ Kniwior: Danke, aber das ist nicht was ich suche, will ja auch selber programmieren.
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: So 22.04.07 13:52 
user profile iconProgrammierer83 hat folgendes geschrieben:
user profile iconJakob Schöttl hat folgendes geschrieben:
[...]

Zitat:
"Wenn weniger als 4 Ziffern, dann "1" in Editfeld"? o_O

schon richtig! es dürfen ja nicht mehr als 4 Zahlen sein, deswegen soll er die neue zahl nur dranhängen, an den Text des Edits, wenn es eben weniger sind.

ausblenden Delphi-Quelltext
1:
2:
if Lenght(Edit1.Text < 4) then // Wenn bis jetzt weniger als 4 Zeichen im Edit1 sind, dann
  Edit1.Text := Edit1.Text + '1'// der neue Text von Edit1 ist der alte plus die Zahl 1


THX, geht aber nicht

mit lenght bekomme ich immer "undifinierter Bezeichner"
wenn ich lenght weglasse, dann kommt "String und Integer inkompatible Typen"


Also: Wenn man Funktionen falsch schreibt, kann es nicht gehen ... Wenn man dann dazu noch inkorrekte Syntax kopiert, ohne Nachzudenken, sollte man mal Christians Crashkurs durchnehmen ;-)

ausblenden Delphi-Quelltext
1:
2:
if Length(Edit1.Text) < 4 then // Wenn bis jetzt weniger als 4 Zeichen im Edit1 sind, dann
  Edit1.Text := Edit1.Text + '1'// der neue Text von Edit1 ist der alte plus die Zahl 1


Dass die Kommentare noch kleinere semantische Fehler aufweisen, möchte ich an dieser Stelle nur beiläufig bemerken ;-)

Die Optimierung bzgl. der Behandlung der Button-OnClic-Events erspar ich hier erstmal, da man da schon etwas das Verfahren verstanden haben sollte (man kann nämlich alle 10 Buttons des Eingabe-Feldes mit einem Event-Handler behandeln).

_________________
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.
Programmierer83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: So 22.04.07 14:13 
Hallo.

Also danke für die Korrektion @ BenBe.

Nur wenn ich den Quelltext in Button1.click rein kopiere dann habe ich keine Begrenzung, nur wenn ich den Button1 drücke wird dafür "11" in das Editfeld eingetragen. ;)

Da scheint also noch der Wurm drin zu sein.