Autor |
Beitrag |
Programmierer83
      
Beiträge: 23
|
Verfasst: 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
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 196
Windows Vista
Delphi 7 Prof.
|
Verfasst: 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
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Fr 20.04.07 19:14
Dragonclaw 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 
      
Beiträge: 23
|
Verfasst: 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
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Fr 20.04.07 22:08
OnButtonClick:
Delphi-Quelltext 1:
| if Lenght(Edit1.Text < 4) then Edit1.Text := Edit1.Text + '1'; |
damit kann man einfach nicht mehr als 4 Zeichen eingeben, das sieht man dann schon...
|
|
rizla
      
Beiträge: 417
Erhaltene Danke: 2
XP
FPC mit Lazarus
|
Verfasst: Fr 20.04.07 22:17
und wenn man im keypress folgendes schreibt
Delphi-Quelltext 1:
| if (length(edit1.text) = 4) then key := #7 else edit1.text := edit1.text + key; |
dann hört mans auch noch..
(glaub ich doch, hab keen delphi zur Hand)

_________________ 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 
      
Beiträge: 23
|
Verfasst: Fr 20.04.07 22:18
Jakob Schöttl hat folgendes geschrieben: | OnButtonClick:
Delphi-Quelltext 1:
| if Lenght(Edit1.Text < 4) then 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
      
Beiträge: 21
Win XP Prof, Kubuntu Dapper Drake
Delphi 6 (besitze auch 2005 und 2006)
|
Verfasst: Fr 20.04.07 22:46
|
|
Programmierer83 
      
Beiträge: 23
|
Verfasst: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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:
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!
Nun alle anderen Buttons entsprechend 'mit Leben füllen'. Wieder 'F9', klappts? Cool. 
_________________ Na denn, dann. Bis dann, denn.
|
|
Programmierer83 
      
Beiträge: 23
|
Verfasst: Sa 21.04.07 09:48
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Sa 21.04.07 10:45
Maxlength gilt nur bei einer Direkteingabe ins Edit-Feld.
Musst also die Grenze in Deine Routine einbauen.
|
|
Programmierer83 
      
Beiträge: 23
|
Verfasst: So 22.04.07 06:51
Jakob Schöttl hat folgendes geschrieben: | OnButtonClick:
Delphi-Quelltext 1:
| if Lenght(Edit1.Text < 4) then 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
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: 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.
Delphi-Quelltext 1: 2:
| if Lenght(Edit1.Text < 4) then Edit1.Text := Edit1.Text + '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
|
Verfasst: 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 
      
Beiträge: 23
|
Verfasst: So 22.04.07 13:48
Jakob 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.
Delphi-Quelltext 1: 2:
| if Lenght(Edit1.Text < 4) then Edit1.Text := Edit1.Text + '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
      
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: So 22.04.07 13:52
Programmierer83 hat folgendes geschrieben: | Jakob 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.
Delphi-Quelltext 1: 2:
| if Lenght(Edit1.Text < 4) then Edit1.Text := Edit1.Text + '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 ;-) Delphi-Quelltext 1: 2:
| if Length(Edit1.Text) < 4 then Edit1.Text := Edit1.Text + '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 
      
Beiträge: 23
|
Verfasst: 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.
|
|