Извиняюсь если такая тема уже была, но я не нашел...Вобщем нужно чтоб в поле 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
Спасибо..все работает
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.