Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - eingabemöglichkeiten bei edit-feldern beschränken
noo.bee - Di 11.05.10 18:54
Titel: eingabemöglichkeiten bei edit-feldern beschränken
hallo
ich habe hier sehr viele edit-felder und wollte die nun soweit beschränken, dass man dort z.b. nur A-M oder 1-15 eingeben kann. es sit zwar möglich, edits auf nur zahlen zu reduzieren, dass würde mir aber nicht reichen. wie kann ich das weiter einschränken ?
noo.bee - Di 11.05.10 20:03
sieht gut aus... aber ich habe 72 editfelder. die alle einzeln einzutippen wäre megaumständlich
Delphi-Quelltext
1: 2: 3: 4: 5:
| case edit1.text of '0'..'49': ; >49: tue irgendwas end; end; |
Chemiker - Di 11.05.10 20:08
Hallo noo-bee,
dann erstell Dir doch eine eigene TEdit-Komponente und bau dir die Eingabeprüfung mit ein, eine andere alternative ist die Komponente TMaskEdit.
Bis bald Chemiker
ALF - Di 11.05.10 20:11
Du kannst alle onkeypress events auf ein editfeld setzen und fragst ab, von welchen editfeld die Eingabe kommt.
Nun kannst Du auch die Case-anweisung expliziet der jeweiligen Editkomponente zuweisen!
Gruss Alf
noo.bee - Di 11.05.10 20:18
:gruebel: :gruebel: :gruebel: öhm ja - zuviel fürn neuling. muss mal brain restarten :D
jaenicke - Di 11.05.10 20:37
Delphi-Quelltext
1: 2:
| if Sender is TEdit then TEdit(Sender).Text ... |
So kannst du das mit dem Edit machen, das das Ereignis ausgelöst hat. Und diese eine Ereignismethode stellst du für alle Edits ein.
ALF - Di 11.05.10 20:45
hier mal ein kleines Beispiel :wink:
allerdings musst Du noch Edit1-76 'Tag' mit laufender Nummer versehen!
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:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); function keyszahlen(key: char) :char; begin case key of '0'..'9': ; else key := #0; end; result:= key; end; function keysBuchstaben(key: char) :char; begin case key of 'a'..'z': ; else key := #0; end; result:= key; end; begin
case Tedit(sender).Tag of 1..2: key:=keyszahlen(key); 3: key:=keysbuchstaben(key); end; end; |
gibt sicherlich auch noch ne schönere Lösung! Soll ja nur als Beispiel dienen :wink:
Gruss Alf
noo.bee - Do 13.05.10 17:50
so, hab mich entschieden es nur auf einen zahlenbereich zu reduzieren (1-150). sieht jetzt so aus
Delphi-Quelltext
1: 2: 3:
| if strtoint(edit1.Text) > 150 then ShowMessage('Was ist ' + edit1.text + ' für eine Zahl? Bitte Ergebnis löschen und neu checken'); edit1.Text := '0'; |
kann ich das nutzen und irgendwie für alle edits vereinfachen ? weil ich das bei meiner variante ja auch wieder für jedes edit eingeben muss.
gibts sowas wie
if strtoint(edit1.text .. edit150.text) > 150 then ?
elundril - Do 13.05.10 17:53
Du könntest allen Edits den selben ereignishandler zuweisen und dann schreiben:
Delphi-Quelltext
1: 2: 3: 4: 5:
| if (Sender is TEdit) then begin if strtoint((Sender as TEdit).Text) > 150 then ShowMessage('Was ist ' + (Sender as TEdit).text + ' für eine Zahl? Bitte Ergebnis löschen und neu checken'); (Sender as TEdit).Text := '0'; end; |
Ereignisshandler weißt du so zu das du nicht doppelt in das feld beim Objektinspektor reinklickst, sonder auf den pfeil rechts daneben und die passende Methode aus der DropDown-Liste auswählst.
lg elundril
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!