| Autor |
Beitrag |
Seby-Deluxe
      
Beiträge: 26
Win XP
7 Enterprise
|
Verfasst: Mo 21.07.03 20:08
Hallo,
Ich habe mal eine Frage?!
Ich möchte gerne das ein User bei einem Edit Feld names PLZ
nur zahlen eingeben kann ! wenn dieser User einen Buchstaben oder was andere schreibt dann kommt ne fehlermeldung!
z.B 565f und sobalt er 'f' schreibt soll der fehlerkommen und das edit feld wird gelöscht!
hir habe ich einen teil des Codes !
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Edit5KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Form1.Edit5.Text <>'Integer???' then
begin MessageBox(0,'Bitte nur Zahlen Eingeben','Fehler',0); Form1.Edit5.Text:=''; end; end; |
Kann mir da einer Helfen !
Also es geht wenn ich das ganze Alph. schreibe mir gross und kleinschreibeung und alle zeichen die es gibt ! aber es muss einfacher gehen ! weiss einer wie das geht?
mfg Seby
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: Mo 21.07.03 20:14
Delphi-Quelltext 1:
| if not (key in ['0'..'9','/']) then key:=#0; |
in onkeypress
erlaubt nur Zahlen und /
Moderiert von Klabautermann: Delphi-Tags hinzugefügt.
|
|
Seby-Deluxe 
      
Beiträge: 26
Win XP
7 Enterprise
|
Verfasst: Mo 21.07.03 20:24
Titel: hi
ok es geht nun vielen dank!
mfg Seby
|
|
Seby-Deluxe 
      
Beiträge: 26
Win XP
7 Enterprise
|
Verfasst: Mo 21.07.03 20:26
Nun habe ich noch ein Problem under dieser eigenschaft Löscht er das edit Feld nicht bei einer eingabe was kann ich den da amchen ?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char); begin if not(Key in ['0'..'9']) then begin MessageBox(0,'Bitte nur Zahlen Eingeben','Fehler',0); Form1.Edit5.Text:=''; end; end; |
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 21.07.03 20:31
Bei mir bleibt dann nur der Buchstabe übrig. Das kann man so lösen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not(Key in ['0'..'9']) then begin MessageBox(0,'Bitte nur Zahlen Eingeben','Fehler',0); Form1.Edit5.Text:=''; Key:=#0; end; end; |
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: Mo 21.07.03 20:32
wollt ich auch grad schreiben
|
|
atami
Hält's aus hier
Beiträge: 8
WIN 2000, XP
D7 Enterprise
|
Verfasst: Mo 21.07.03 20:51
Hallo,
Du solltes noch die Taste Backspace zulassen, damit man eine falsche Zahl auch wieder löschen kann, ohne daß gleich eine Fehlermeldung kommt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if not(key in [#8, '0'..'9']) then begin MessageBox(0,'Bitte nur Zahlen Eingeben','Fehler',0); Key:= #0; Form1.Edit1.Text:=''; end; |
|
|
Seby-Deluxe 
      
Beiträge: 26
Win XP
7 Enterprise
|
Verfasst: Mo 21.07.03 21:23
Titel: ok
ok Vielen dank für eure hilfe!
und wenn ich nur buchstaben oder sonder zeichen will schreibe ich alles aber lasse das not weg oder? egal das mahc ich morgen muss pennen !
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| if not(Key in [#8,'a'..'z','A'..'Z']) then begin MessageBox(0,'Bitte nur Zahlen Eingeben','Fehler',0); key:=#0; Form1.Edit5.Text:=''; |
vielen dank nochmal
mfg Seby
Zuletzt bearbeitet von Seby-Deluxe am Mo 21.07.03 21:38, insgesamt 1-mal bearbeitet
|
|
Seby-Deluxe 
      
Beiträge: 26
Win XP
7 Enterprise
|
Verfasst: Mo 21.07.03 21:37
Sag mir mal Bitte einer die Codes von einigen Tasten
#8 ==> Back!
was ist Enter
was ist Space
was ist Tap
??
mfg Seby
|
|
ShadowThief
      
Beiträge: 278
|
Verfasst: Di 22.07.03 09:19
ist jetzt nur ne vermutung, aber vielleicht kann man sowas
eleganter mit einem TMaskEdit lösen.
shadow.
|
|
Pascal
      
Beiträge: 155
Win 98, Win XP
Delphi 2005, Delphi 5
|
Verfasst: Di 22.07.03 11:24
Ich find solche Tabellen nervig, wenn man viel nachschauen will, deshalb habe ich einfach ein Programm im onKeyup geschrieben:
Delphi-Quelltext 1:
| edit1.text:=inttostr(key); |
so gehts auf Dauer schneller und man muss nicht suchen.
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 22.07.03 11:43
Hm, ich weiß nicht. Ich benutze gerne die VKs, weil ich dann auch bei nochmaligen Lesen des Programmes weiß, welche Tasten denn dort gemeint waren. Und da hilft Dir Dein Programm dann auch nicht weiter.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
recall
      
Beiträge: 449
|
Verfasst: Mo 11.08.03 01:29
@Seby-Deluxe:
| Zitat: | | if not(Key in [#8,'a'..'z','A'..'Z']) then ... |
finde ich nicht so elegant, denn was ist mit Strg+V usw ?
Es geht auch einfacher:
Delphi-Quelltext 1: 2:
| val(Edit1.Text, I, ECode); if ECode=0 then |
Achso: I, ECode: Integer;
oder I: Double (geht auch) !
Viele Grüsse.
P.S.: Einfach mal in der Delphi-Hilfe unter "val" nachschlagen, wenn meine Erklärung unverständlich war (oder nachfragen natürlich) !
|
|
recall
      
Beiträge: 449
|
Verfasst: Mo 11.08.03 01:31
Achso hatte ich vergessen:
Edit1 soll ja gelöscht werden ! Also...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| val(Edit1.Text, I, ECode); if ECode=0 then else begin MessageDlg('Fehler', mtError, [mbOK], 0); Edit1.Clear; end; |
|
|
recall
      
Beiträge: 449
|
Verfasst: Mo 11.08.03 01:34
Naja, wo ich schon dabei bin...
Die Tastencodes bekommst du mit:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Form1.Caption := IntToStr(Key); end; |
Also einfach ein TEdit, und den code im KeyDown-Ereignis plazieren (!)
dann Taste drücken und der Überschrift deines Hauptformulars wird der Code der gedrückten Taste zugewiesen...
|
|
recall
      
Beiträge: 449
|
Verfasst: Mo 11.08.03 01:36
Jetzt muss ich schlafen gehen
Sorry @Pascal ! Das hattest du schon gepostet.
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mo 11.08.03 08:05
Ich würde den Code bei OnChange anwenden. Sonst kann der Benutzer weiterhin mit Strg+V Text in das Feld eingeben. Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Edit5Change(Sender: TObject); var i:integer; begin for i:=1 to length(Edit5.Text) do begin if not (Edit5.Text[i] in ['0'..'9']) then begin MessageBox(0,'Bitte nur Zahlen Eingeben','Fehler',0); Form1.Edit5.Text:=''; exit; end; end; end; |
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 11.08.03 08:26
| recall hat folgendes geschrieben: | @Seby-Deluxe:
| Zitat: | | if not(Key in [#8,'a'..'z','A'..'Z']) then ... |
finde ich nicht so elegant, denn was ist mit Strg+V usw ?
Es geht auch einfacher:
Delphi-Quelltext 1: 2:
| val(Edit1.Text, I, ECode); if ECode=0 then |
|
Und wa sist mit der Tatsache, dass es wohl besser ist erst gar keine ungültiogen Zeichen zu zu lassen?
|
|
recall
      
Beiträge: 449
|
Verfasst: Mo 11.08.03 20:51
@Luckie:
| Zitat: | | Und wa sist mit der Tatsache, dass es wohl besser ist erst gar keine ungültiogen Zeichen zu zu lassen? |
Hä ? Wieso ? Für was besser ? Hab' noch nie Probleme deswegen bekommen  .
@maxk:
Den Code find ich dann am besten, wenn es stimmt, was Luckie meint.
q.e.d. (was zu beweisen wäre...)
Aber wieso eine Schleife, wenns auch mit ECode geht ?
Viele Grüsse.
P.S.: Erklärt es mir, lasst mich nicht dumm sterben.
|
|