|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Можно ли запретить в "Edit" вводить буквы? |
|
|
Delphi - Можно ли запретить в "Edit" вводить буквы?
|
Пользователь Сообщения: 98 |
Скажите, мож но ли запретить в "Edit" в инструментах "Стандартные" вводить буквы? Я тут подумал зачем писать кучу условий и окон подсказки, тем самым усложнять код програмки, есть ли возможность запретить ввод строковых символо (текста), что бы вводились только числа?
![]() |
|
Отправлено: 14:26, 15-10-2008 |
DOOMer Сообщения: 3254
|
Профиль | Отправить PM | Цитировать Использовать компонент MaskEdit ?
|
------- Отправлено: 15:03, 15-10-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Извиняюсь за глупый вопрос, просто я только учусь и поэтому ещё не всё понятно а где находится "компонент MaskEdit" в смысле в какой групе инструментов?
Просто вот уже столько сижу с програмкой которую хочу написать в виде тренеровки но видно знаний катострофически мало так, как програмка то работает но вот когда оставляеш поля ввода "Edit1" и "Edit2" пустыми или пишеш текст то возникает критическая ошибка и програмка виснет ![]() procedure TForm1.ZimLezaClick(Sender: TObject); begin Edit1.Enabled:= ZimLeza.Checked; Edit3.Enabled:= ZimLeza.Checked; end; procedure TForm1.Button1Click(Sender: TObject); var x1: real; x2: integer; y: real; begin x1:= StrToInt(Edit1.Text); x2:=StrToInt(Edit2.Text); y:= StrToInt(Edit1.Text); Edit3.Text:= floattostr(Strtofloat(Edit1.text)*(1.013- 0.0267123*strtofloat(edit2.text))); label5.Caption :='Вес: '+ Edit3.Text+ #13 + 'Кл.раз: '+ Edit2.Text; end; end. |
Отправлено: 15:35, 15-10-2008 | #3 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать ShadowMas, А вот посмотрите, мне когда-то тоже нужно было, код не на Delphi, но думаю, не составит труда перевести или другие участники помогут. [решено] *Теория* | Контроль ввода в компоненте Edit
|
------- Отправлено: 16:25, 15-10-2008 | #4 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать if(Edit2->Text != "" && Edit1->Text != "" && StrToInt(Edit2->Text)<=StrToInt(Edit1->Text){
//если оба Edit'а не пусты то проверяем их на //валидность Edit2->Text=""; //Очищаем Edit2... Edit2->SetFocus(); //...и устанавливаем фокус на него. Application->MessageBox("Error", "Error", 16); //Показываем Messagebox. } Да, что то я совсем подвис не могу понять само условие if(Edit2->Text != "" && Edit1->Text != "" && StrToInt(Edit2->Text)<=StrToInt(Edit1->Text) Что ето значит??? |
|
Отправлено: 17:02, 15-10-2008 | #5 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать ShadowMas,
Если Edit не равен пустому и содержимое первого Edit меньше или равно содержимому второго Edit то очистить второй Edit и установить фокус на него, я извиняюсь, это не совсем тот код, но мне он тогда помог. Нужно условие немножко изменить с && на || и добавить в обработчике onExit строки: Естественно Edit'ы могут быть разными.
можно ещё так, в обработчике OnKeyPress: //Функция ввода, проверяет ввод только цифр А != 0 или D != 0, для Edit1 и Edit2 void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if ((Key >= '0') && (Key <= '9') || Key == '-' || Key == VK_BACK) {} // цифры else if ((Key == '.') || (Key == ','))//{ // запятая // if (((TEdit*)Sender)->Text.Pos(DecimalSeparator)!= 0) // если запятая уже есть Key = 0; // else // если ещё нет // Key = DecimalSeparator; // } else Key = 0; // не цифра } |
------- Отправлено: 17:27, 15-10-2008 | #6 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Спасибо Drongo очень подробно описал попробую применить к своей програмке на Delphi
|
Отправлено: 21:11, 15-10-2008 | #7 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать Лень копипастить, поэтому приведу ссылку на один из возможных вариантов решения задачи. Ее можно также усовершенствовать, использовав вместо "." константу DecimalSeparator.
З.Ы. Также можно использовать функции StrToIntDef и StrToFloatDef. Но это получится, так сказать, борьба с последствиями, а не их предотвращение. |
Отправлено: 13:39, 16-10-2008 | #8 |
![]() Ветеран Сообщения: 540
|
Профиль | Отправить PM | Цитировать В свое время часто пользовался вот таким кодом:
На мой взгляд очень удобный и компактный код. |
------- Отправлено: 23:22, 20-10-2008 | #9 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать Порылся в своих исходниках и вот еще что обнаружил:
procedure NumericKor(Edit: TEdit); begin if Edit.Text <> '' then begin try StrToFloat(Edit.Text);//если поменять StrToFloat на StrToDate, то также можно контролировать правильность введения даты except Edit.SetFocus; MessageBeep(0); raise Exception.Create('"' + Edit.Text + '" - некорректное число'); Exit; end Edit.Text := FloatToStr(StrToFloat(Edit.Text)); end else Edit.Text := '0'; end; |
Последний раз редактировалось VasyaPupkin81, 21-10-2008 в 08:21. Причина: Не обратил внимание на предыдущее сообщение Отправлено: 08:17, 21-10-2008 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? | verdix | Microsoft Windows 2000/XP | 3 | 03-10-2009 23:46 | |
Интернет - Как запретить запуск службы" RemoteAccess" | масяня@ | Microsoft Windows 7 | 2 | 01-10-2009 18:14 | |
После установки Windows Xp меняются буквы дисков "C" и "D"!!! | ProgrammerPC | Автоматическая установка Windows 2000/XP/2003 | 3 | 26-09-2009 20:12 | |
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") | submaster | Microsoft Windows NT/2000/2003 | 5 | 13-09-2006 12:29 | |
HELP! Как запретить "расшаривание" файлов | KSS | Сетевые технологии | 3 | 11-07-2003 01:37 |
|