Kroko hat in gewisser Weise recht. Aber noch zur Erklärung: Du rufst die Eigenschaft Text der aktuellen Klasse auf, das ist das Form selbst, weil die Prozedur darin deklariert ist. Damit greifst Du dann nicht auf das Edit, sondern auf das Form zu. Du musst mit dem Sender arbeiten und dort die Eigenschaft Text verwenden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Procedure TForm1.EditChange(Sender: TObject); begin With sender do Try StrToInt((sender as TEdit).text); EXCEPT BEGIN If length((sender as TEdit).Text)<>0 then (sender as TEdit).text:='0'; END; END; end; |
Du musst dazu aber mit
(sender as TEdit). einen Typecast machen, da Sender ja eine Instanz der Klasse TObject ist. Weiterhin solltest Du Dir das StrToInt nochmal genauer anschauen, willst Du damit überprüfen, ob das eingegebene eine Zahl ist? Nicht besonders angenehm für den Anwender, weil er bei Eingabe eines Buchstabens eine Exception bekommt. Da solltest Du Dir mal StrToIntDef anschauen.