Hej! Może mi ktoś pomóc w zabezpieczeniu TEdit przed wpisaniem litery? Próbowałem przy użyciu Val, tka jak w aplikacji konsolowej....ale nie działa mi jeśli chodzi o aplikację okienkową. Jest jakiś porosty sposób, dzięki któremu można to zrobić?
Zabezpieczenie TEdit przed wpisaniem litery
- Rejestracja: dni
- Ostatnio: dni
- Postów: 60
W zdarzeniu OnKeyPress dla Edita sprawdzasz czy wpisany znak jest literą.
Przykład:
procedure TForm.Edit1KeyPress(Sender: TObject; var Key: Char);
var
Alphabet: set of 'A'..'z';
begin
if (Key in Alphabet) then //jezeli wprowadzony znak jest litera
begin
Key := #0; //zamien ten znak na pusty
MessageBeep(0);
end;
end;
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Tuchów
- Postów: 12269
@Sauler - Twój zakres wyklucza znaki pomiędzy Z a a, czyli o kodach od 91 do 96; Jeśli już to tak:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
if Key in ['A' .. 'Z', 'a' .. 'z'] then
Key := #0;
end;
PS: Nadal można wpisywać litery - np. polskie znaki diakrytyczne :]
PS: Gdyby było wiadomo do czego ma służyć ta filtracja, to może lepszym rozwiązaniem okazała by się white-lista.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 19
Dzięki wielkie! :D
Aż mi głupio, że to było takie proste, a ja nie wiedziałem
To ma być prosty program do szkoły, który oblicza najważniejsze rzeczy dotyczące równań kwadratowych. Czyli w TEdit mogą znajdować się wyłącznie cyfry i przecinek.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Tuchów
- Postów: 12269
No to lepszym rozwiązaniem jest użycie innego komponentu;
Jeśli robisz ten program w Lazarusie to w zakładce Misc znajduje się komponent TFloatSpinEdit - umożliwia on wpisywanie lub wyklikiwanie liczb całkowitych i zmiennoprzecinkowych; Sporo rzeczy możesz sobie wyklikać w okienku Inspektora Obiektów, więc on najbardziej nadaje się do tego celu; I nie będziesz się musiał też martwić o konwersję - ten komponent ma właściwość Value typu Double, gotową do wykorzystania.