Autor Beitrag
Seby-Deluxe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26

Win XP
7 Enterprise
BeitragVerfasst: 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 !
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Edit5KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // Fehlermeldung kommt wenn User keine Zahl eingibt.
  if Form1.Edit5.Text <>'Integer???' then
{Ich dachte es geht wenn ich sage ungleich Integer aber das geht auch net}
  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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: Mo 21.07.03 20:14 
ausblenden Delphi-Quelltext
1:
if not (key in ['0'..'9','/']) then key:=#0;					

in onkeypress

erlaubt nur Zahlen und /

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.
Seby-Deluxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26

Win XP
7 Enterprise
BeitragVerfasst: Mo 21.07.03 20:24 
Titel: hi
ok es geht nun vielen dank!

mfg Seby
Seby-Deluxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26

Win XP
7 Enterprise
BeitragVerfasst: 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 ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
  // Fehlermeldung kommt wenn User keine Zahl eingibt.
  if not(Key in ['0'..'9']) then
  begin
    MessageBox(0,'Bitte nur Zahlen Eingeben','Fehler',0);
    Form1.Edit5.Text:='';
  end;
end;
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 21.07.03 20:31 
Bei mir bleibt dann nur der Buchstabe übrig. Das kann man so lösen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  // Fehlermeldung kommt wenn User keine Zahl eingibt.
  if not(Key in ['0'..'9']) then
  begin
    MessageBox(0,'Bitte nur Zahlen Eingeben','Fehler',0);
    Form1.Edit5.Text:='';
    Key:=#0; //<=== setzt den zuletzt eingegeben Buchstaben auf "nichts"
  end;
end;


MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Pascal
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: 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
BeitragVerfasst: 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.
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26

Win XP
7 Enterprise
BeitragVerfasst: 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 !
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  
// Fehlermeldung kommt wenn user Zahlen Schreibt
  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26

Win XP
7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Di 22.07.03 09:19 
ist jetzt nur ne vermutung, aber vielleicht kann man sowas
eleganter mit einem TMaskEdit lösen.

shadow.
Pascal
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155

Win 98, Win XP
Delphi 2005, Delphi 5
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
edit1.text:=inttostr(key);					

so gehts auf Dauer schneller und man muss nicht suchen.

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
val(Edit1.Text, I, ECode);
if ECode=0 then {Edit1.Text konnte erfolgreich in den Datentyp von I umgewandelt werden}


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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Mo 11.08.03 01:31 
Achso hatte ich vergessen:
Edit1 soll ja gelöscht werden ! Also...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
 val(Edit1.Text, I, ECode); 
if ECode=0 then
  {Edit1.Text konnte erfolgreich in den Datentyp von I umgewandelt werden}
else
begin
  MessageDlg('Fehler', mtError, [mbOK], 0);
  Edit1.Clear;
end;
recall
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Mo 11.08.03 01:34 
Naja, wo ich schon dabei bin...

Die Tastencodes bekommst du mit:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: Mo 11.08.03 01:36 
Jetzt muss ich schlafen gehen :(
Sorry @Pascal ! Das hattest du schon gepostet.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: 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.
ausblenden 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



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
val(Edit1.Text, I, ECode);
if ECode=0 then {Edit1.Text konnte erfolgreich in den Datentyp von I umgewandelt werden}


Und wa sist mit der Tatsache, dass es wohl besser ist erst gar keine ungültiogen Zeichen zu zu lassen?
recall
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



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