Zabezpieczenie TEdit przed wpisaniem litery

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

1

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;
2

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

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.

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.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1