| Autor |
Beitrag |
matmalign
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 16.06.03 17:43
Hi zusammen,
habe ein problem das sehr simpel klingt - nicht für mich!
ich möchte das man bei der eingabe in ein editfeld maximal 1 minuszeichen eintippen kann. ums deutlich zu machen: ich möchte in die editfelder positive als auch negative zahlen zur eingabe zulassen - nur wenn ich zweimal '-' eintippe kommt eine fehlermeldung
schon mal danke im vorraus
Moderiert von Tino: Titel geändert.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 16.06.03 18:02
Merk dir doch wann eine Minus eigegeben wurde und wenn das nächste mal eins kommt ignorierst du es.
|
|
matmalign 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 16.06.03 18:23
hm... diese antwort tät mir bestimmt etwas sagen - wenn ich etwas weiter mit dem stoff wäre
kann man delphi nicht auch einfach nur sagen er soll maximal ein minuzeichen zu beginn des editfeldes zur eingabe zulassen
also entweder gleich zu beginn ein minuszeichen oder gar keins
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mo 16.06.03 18:44
Du müßtest das eigentlich so lösen können, daß du ins OnKeyPress-Ereignis gehst und dort dann überprüfst:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| If (Key=Strich [ich kenne den ASCII-Wert nicht]) And (Minus=True) Then Begin Lasse Minus zu; Minus:=False; End Else Key:=#0 [Rückschritt] |
Minus ist ein Boolean, mit dem du arbeiten mußt, denn diese Variable merkt sich, ob ein Minus erlaubt ist, oder nicht. Du mußt sie im FormCreate-Ereignis auf False setzen und dann unbedingt damit arbeiten, sonst gehts nicht (nicht in meiner Lösung). 
_________________ Hasta La Victoria Siempre
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Mo 16.06.03 19:33
überprüf doch einfach ob schon eins vorhanden ist
Delphi-Quelltext 1:
| If (Key='-' and pos(Edit1.Text, '-') > 0) then Key := #0; |
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
matmalign 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 16.06.03 19:47
hey das könnte funktionieren - ich werds gleich mal ausprobieren
danke
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Mo 16.06.03 20:04
// Arg, hab *mist*e gelabert, man muss ja auch noch das minus nachträglich dazufügen können 
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
Zuletzt bearbeitet von Tweafis am Mo 16.06.03 20:05, insgesamt 1-mal bearbeitet
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Mo 16.06.03 20:05
Den letzten Tip kann man gebrauchen. Alternativ kannst du auch hier die Funktion IsValidInteger nehmen
www.delphi-forum.de/...ic.php?p=37474#37474
und Edit jedes mal prüfen lassen ob der String einen gültigen Integer enthällt. Allerdings ist es etwas für danach, d.h. es verhindert nicht, daß das Minuszeichen das Editfeld ereicht.
_________________ Popov
|
|
matmalign 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 16.06.03 21:28
hab jetzt mal folgendes versucht - es hat ja schon fast funktioniert
hab zunächst einmal die ziffern 1-9 , das minuszeichen , und die backspace taste zur eingabe zugelassen
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case Key of '0'..'9', #45, #8: ; |
jetzt hatte ich vor eine bedingung für #45('-') anzuknüpfen
und zwar wenn '-' im editfeld nicht an 1. stelle steht dann werden nur noch die ziffern 1-9 und die backspace taste zur eingabe zugelassen
Delphi-Quelltext 1: 2: 3: 4:
| else if (key = #45) and ((pos(Edit1.Text, #45)) < 1) then case Key of '0'..'9', #8: ; |
aber das funktioniert auch nicht
Moderiert von Tino: Delphi-Tags eingefügt.
|
|
matmalign 
Hält's aus hier
Beiträge: 6
|
Verfasst: Di 17.06.03 08:39
ich glaubs kaum - aber grad hat ich wohl ne göttliche eingebung
sieht recht kompliziert aus aber es funktioniert:
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:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key <> #45) then case Key of '0'..'9', #8: else key := #0; end;
if (key = #45) and not ((pos(Edit1.Text, #45)) = 0) then case Key of '0'..'9', #45, #8: ; else key := #0; end;
if (key = #45) and ((pos(Edit1.Text, #45)) = 1) then case Key of '0'..'9', #8: ; else key := #0; end;
if (key = #45) and not ((pos(Edit1.Text, #45)) = 1) and (length(Edit1.Text) >= 1) then case Key of '0'..'9', #8: ; else key := #0; end;
end; |
bin mir sicher das es noch einfacher geht aber so ist es momentan ganz ok
Moderiert von UGrohne: Delphi-Tags hinzugefügt
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 17.06.03 11:21
Delphi-Quelltext 1: 2: 3: 4: 5:
| case Key of '0'..'9', #8: ; #45: If pos(Edit1.Text, '-') > 0 then Key := #0; else Key := #0; end; |
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Di 17.06.03 17:11
Moin erstmal!
Was bei der ganzen Sache noch zu bedenken ist, ist daß das "-"-Zeichen ganz vorne oder ganz hinten stehen muß. 123-456 ist nämlich nicht gleich -123456!
Gruß Renegade
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 17.06.03 19:02
Delphi-Quelltext 1: 2: 3: 4: 5:
| case Key of '0'..'9', #8: ; #45: If (pos(Edit1.Text, '-') > 0 or Edit1.SelStart<>0 or Edit1.SelLength <> 0) then Key := #0; else Key := #0; end; |
So könnte man das umgehen.
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|