Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Ввод только цифр и запятой в Edit

Автор: Rudolf 15.12.2006 22:08

Извиняюсь если такая тема уже была, но я не нашел...Вобщем нужно чтоб в поле 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 15.12.2006 22:47

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 15.12.2006 23:16

Как вариант:

setWindowLong(Edit1.Handle, GWL_STYLE, getWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER)

Автор: Rudolf 15.12.2006 23:23

То Klem4: Нет минус не нужен...а что такое DecimalSeparator?

Автор: klem4 15.12.2006 23:46

десятичный разделитель

Автор: Rudolf 16.12.2006 0:27

Спасибо..все работаетsmile.gif