kandesbunzler hat folgendes geschrieben : |
ich möchte in einem SpinEdit1Change-Feld nur Zahlen zulassen. |
Hallo!
Mein erster Gedanke war: Ein SpinEdit lässt doch ohnehin nur Zahlen zu! Aber auch das Komma-Zeichen (
FormatSettings.DecimalSeparator) kann eingefügt werden. (Seltsam, handelt es sich doch um Integer!)
Jedes Zeichen entfernen, das keine Zahl ist:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.SpinEdit1Change(Sender: TObject); const aCharSet: TSysCharSet = ['0'..'9']; var i, t: Integer; begin for i := Length(SpinEdit1.Text) downto 1 do begin if not CharInSet(SpinEdit1.Text[i], aCharSet) then begin t := SpinEdit1.SelStart; SpinEdit1.Text := StringReplace(SpinEdit1.Text, SpinEdit1.Text[i], '', []); SpinEdit1.SelStart := t; end; end; end; |
Einfügen per Tastatur behandeln:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.SpinEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssShift in Shift) and (Key = VK_INSERT) then Key := 0; end; |
Für das Einfügen per PopupMenü funktioniert
SpinEdit1Change grundsätzlich, allerdings wird das Caret da jeweils um ein Zeichen nach rechts gesetzt. Kannst das ja noch anpassen!
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!