![]() |
Можно ли запретить в "Edit" вводить буквы?
Скажите, мож но ли запретить в "Edit" в инструментах "Стандартные" вводить буквы? Я тут подумал зачем писать кучу условий и окон подсказки, тем самым усложнять код програмки, есть ли возможность запретить ввод строковых символо (текста), что бы вводились только числа? :)
|
Использовать компонент MaskEdit ?
|
Извиняюсь за глупый вопрос, просто я только учусь и поэтому ещё не всё понятно а где находится "компонент 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. |
ShadowMas, А вот посмотрите, мне когда-то тоже нужно было, код не на Delphi, но думаю, не составит труда перевести или другие участники помогут. [решено] *Теория* | Контроль ввода в компоненте Edit
|
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) Что ето значит??? |
ShadowMas,
Код:
if(Edit2->Text != "" && Edit1->Text != "" && StrToInt(Edit2->Text)<=StrToInt(Edit1->Text) Код:
Edit1->Text=""; //Очищаем Edit1... Код:
//Функция ввода, проверяет ввод только цифр А != 0 или D != 0, для Edit1 и Edit2 |
Спасибо Drongo очень подробно описал попробую применить к своей програмке на Delphi
|
Лень копипастить, поэтому приведу ссылку на один из возможных вариантов решения задачи. Ее можно также усовершенствовать, использовав вместо "." константу DecimalSeparator.
З.Ы. Также можно использовать функции StrToIntDef и StrToFloatDef. Но это получится, так сказать, борьба с последствиями, а не их предотвращение. |
В свое время часто пользовался вот таким кодом:
Код:
var OldText:String; |
Порылся в своих исходниках и вот еще что обнаружил:
Код:
procedure NumericKor(Edit: TEdit); |
Если вы хотите, чтобы пользователь мог вводить в окно редактирования Edit только цифры и символ точки, вы можете в обработчик события OnKeyPress этого компонента вставить оператор:
if not (Key in ['0'..'9', ',']) then Key := #0; Этот оператор подменит все символы, кроме цифр и запятой, нулевым символом, который не занесется в текст окна Edit. |
Время: 16:15. |
Время: 16:15.
© OSzone.net 2001-