Witam!
Mam do wszystkich pytanie: jak zrobić aby w edicie możliwe było wpisywanie wyłącznie cyfr, kropki i nawiasów.
Dzięki za pomoc!!!
Można to zrobić na kilka sposobów:
- napisać odpowiednią maskę
- obsłużyć zdarzenie OnChange
- jeszcze pewnie na paręset innych sposobów
Na prszykład przedstawię sposób drugi:
Procedure Edit1Change(Sender: TObject);
var i: integer;
begin
for i:=Length(Edit1.Text) downto 1 do
if ((Edit1.Text[i]<'0') or (Edit1.Text[i]>'9')) and (Edit1.Text[i]<>'(') and (Edit1.Text[i]<>')') and (Edit1.Text[i]<>'.')) then Delete (Edit1.Text, i, 1);
end;
To powinno starczyć. Pisane z pamięci, więc gdzieś jakiś błąd może być...
w OnKeyDown zrob sprawdzanie przyciskanych klawiszy. :-)
//Zostalem uprzedzony
Albo wykorzystanie komunikatów, albo łatwiej trochę sprawdzać w Evencie ONKEYDOWN czy wpisane w Edicie znaki to te co chcesz a jak nie to Delejt :) jak to zacząłem pisać to daje głowę że nie było tych wyżej :/
Tak, ale nie jest to tak dobre rozwiązanie. Załóżmy, że ktoś chce wkleić jakiś kawałek tekstu. Wtedy albo to nie zadziała, albo uniemożliwi wklejenie, co jest dość niewygodne.
A sprawdzanie w OnKeyDown tak nie zrobi. Czy "DE BEŚCIARSKIE" rozwiązanie, ale faktiko przy wklejaniu nie obsłuży OnKeyDown (jeśli wklejałeś myszką) no to jeszcze OnChange najlepiej oprócz OnKeyDown