TEdit Eingabe einschränken?

Snape

Erfahrenes Mitglied
Tach,
wie kann ich für ein TEdit festlegen, dass keine Kommazahlen und maximal 3 Zahlen eingegeben werden können?
 
Schreib eine Funktion für das Ereignis OnKeyDown oder OnKeyUp.
Da bekommst Du das aktuelle Zeichen übergeben und hängst es dann nur hinten an, wenn Deine Kriterien stimmen.
 
Code:
if((Key!='1')||(Key!='2')||(Key!='3')||(Key!='4')||(Key!='5')||(Key!='6')||(Key!='7')||(Key!='8')||(Key!='9')||(Key!='0')||(Key!=char(VK_BACK))||(Key!=char(VK_DELETE))) 
{
 Key=char();
}
if(Key=='.') Key=char();
(jaja, man mag sich jetzt drüber streiten, ob das die eleganteste lösung ist. aber es geht, und das zählt denke ich...)

wenne das in das ereigniss OnKeyPress schreibst, dürfen nur noch zahlen und die Backspace sowie die Entfernen Taste, auswirkungen auf der TEdit haben

die maximale eingabelänge kannste mit der eigenschaft TEdit1->MaxLength=3; festlegen

ich hoffe, das hilft dir weiter...
 
OK, habe ich so weit, aber ich hänge an der Stelle, wie ich verhindern kann, dass der Key eingefügt wird.

Code:
void __fastcall TEditor::YEditKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
  if ( !IsValid( Key ))
  {
    Key = char();
  }
}

fügt trotzdem die nicht erlaubte Taste ein.
 
Fügt immer noch ein.
Ich verstehe den Mechanismus einfach nicht.

In Java hinterlege ich einem solchen Feld ein Document mit der Interfacemethode insertString(). Darin kann ich tun und lassen mit dem String was ich will, da wird der String übergeben, der Index der Stelle, wo die Einfügemarke war und der einzufügende String.

Das alles gibts hier aber irgendwie nicht, es ist zum Verzweifeln.
Muss die von mir gewünschte Funktionalität einem anderen Event des TEdit hinterlegt werden? Wenn ja, welchem? (Und: Warum? ;-))
 
Original geschrieben von Snape
Muss die von mir gewünschte Funktionalität einem anderen Event des TEdit hinterlegt werden? Wenn ja, welchem? (Und: Warum? ;-))

OK, wenn ich mit OnKeyPress arbeite, funzelt es, bei OnKeyDown nicht. Warum auch immer...
 
wenn du nur ziffern erlauben willst, nimm den Code (als OnKeyPress):
Code:
Key = ((Key >= '0') && (Key <='9')) ? Key : 0;
erläuterungen: char ist ein 8-bit typ, also ein 4tel so gross wie int. 0 entspricht gar nichts.
 

Neue Beiträge

Zurück