Zabezpieczenie TEdit przed wpisaniem litery

Zabezpieczenie TEdit przed wpisaniem litery
M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

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ć?

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 60
1

W zdarzeniu OnKeyPress dla Edita sprawdzasz czy wpisany znak jest literą.

Przykład:

Kopiuj
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;
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
2

@Sauler - Twój zakres wyklucza znaki pomiędzy Z a a, czyli o kodach od 91 do 96; Jeśli już to tak:

Kopiuj
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.

M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

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.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
2

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.

M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

O to dobre rozwiązanie. Myślę, że wszytko (przynajmniej teraz) działa jak trzeba :D
Jeszcze raz dzięki za pomoc!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.