| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Какое условие поставит для Edit в Delphi ? |
| Автор: Алекс 17.11.2002, 06:52 |
| Какое условие поставит для Edit в Delphi чтобы можно было вводить только цифры ? |
| Автор: December 17.11.2002, 08:41 | ||
if ord(edit1.text[length(edit1.text)]<48) or ord(edit1.text[length(edit1.text)]>57) then edit1.text:=copy(edit1.text,1,length(edit1.text)-1); |
| Автор: Vit 17.11.2002, 09:31 |
| OnKeyPress: if not (Key in ['0'..'9']) then Key:=#0; Но этого недостаточно, надо обрабатывать ещё и onChange на случай если попытаются внести что-то при помощи Clipboard. А вообще это как раз тот случай когда надо использовать или TSpinEdit или написать свой компонент. |
| Автор: Song 17.11.2002, 22:03 |
| ES_NUMBER |
| Автор: Vit 18.11.2002, 00:39 | ||
Что-то я его в help'e не нашёл, это сообщение? В модуле Windows константа определена в разделе "Control Manager Structures and Definitions" - и как ей пользоваться? |
| Автор: МММ 18.11.2002, 11:16 |
| А может проще MaskEdit? |
| Автор: Vit 18.11.2002, 14:37 | ||
Проще, но не всегда подходит |
| Автор: Song 18.11.2002, 19:21 | ||||
Это не сообщение, это стиль. Он появился от IE 4.0. Чтобы его активировать, надо перекрывать CreateParams |
| Автор: AntonSaburov 18.11.2002, 23:09 |
| А может не изобретать велосипед, а использовать RxLib |
| Автор: man2002ua 19.11.2002, 00:21 |
| S := GetWindowLong(Edit1.Handle,GWL_STYLE); S := S OR ES_NUMBER; SetWindowLong(Edit1.Handle,GWL_STYLE,S); HO ! ES_NUMBER не поможет при вставке данных из Clipboard. Тут метод предложенный Vit (OnChange) имеет большую силу. что-то вроде procedure TForm1.Edit1Change(Sender: TObject); var f : Extended; begin if (Edit1.Text = '') or (Edit1.Text = '-') then exit; try f := StrTofloat(Edit1.Text); except on e:exception do begin edit1.text := s; edit1.SelStart := length(s); end; end; s := edit1.text; end; |
| Автор: Song 19.11.2002, 02:48 |
| Насколько я помню ES_NUMBER нельзя включить через SetWindowLong(). Именно поэтому я не написал этот вариант. |
| Автор: man2002ua 19.11.2002, 02:49 |
запросто можно. я не раз подобное делал, только с другими стилями, заодно попробовал сделать с ES_NUMBER - ok |
| Автор: алекс 19.11.2002, 07:02 |
| Народ я в программировании полный ноль !!! Сделал на Delphi обычный калькулятор Типа procedure TForm1.Button1Click(Sender: TObject); begin a:=StrtoInt(Edit1.Text)+StrtoInt(Edit2.Text); Edit3.Text:=InttoStr(a); end; Если можете, объясите какое условие поставить для Edit1 и Edit2, чтобы можно было вводить только цифры ? На моём примере покажите PLZ а то я в ваших месагах ничего не понимаю |
| Автор: Vit 19.11.2002, 07:56 | ||
Для твоих Edit1 и Edit2 в обработчике события onKeyPress поставь строку:
На твоём примере никак не покажешь, так как при исполнении твоего кода значения в Edit поля уже введены, можно только проверить числа там или нет |
| Автор: man2002ua 19.11.2002, 18:41 |
| алекс - ты мой код видел? Поставь для события OnChange обоих Edit этот код (скопируй и вставь). |