Помощь - Поиск - Пользователи - Календарь
Полная версия: Ввод только цифр и запятой в Edit
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Rudolf
Извиняюсь если такая тема уже была, но я не нашел...Вобщем нужно чтоб в поле Edit вводились только цифры и запятая, а остальные нажатия клавишь игнорировались(ну кроме может быть backspace), т.е. нужно избежать ошибок типа Invalid Floating Value...Я написал но что то не очень она работает...если кто сталкивался подскажите пожалста.Вот код

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var set1:set of ord('0')..ord('9');
s:string;
begin
set1:=[ord('0'),ord('1'),ord('2'),ord('3'),ord('4'),ord('5'),ord('6'),ord('7'),ord('8'),ord('9')]+[ord(',')];
if (not(key in set1)) and (key<>VK_BACK) and (key<>ord(','))
then
ShowMessage('Ошибка ввода');

end;

klem4
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9', #8:;
',', '.': if Pos(DecimalSeparator, Edit1.Text) = 0 then
Key := DecimalSeparator else Key := #0;
else
Key := #0;
end;
end;



Минус не нужен ?
volvo
Как вариант:
setWindowLong(Edit1.Handle, GWL_STYLE, getWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER)
Rudolf
То Klem4: Нет минус не нужен...а что такое DecimalSeparator?
klem4
десятичный разделитель
Rudolf
Спасибо..все работаетsmile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.