Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
xDololow
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 8
1

Проверка вводимых в Edit символов

22.02.2015, 10:41. Просмотров 1342. Ответов 2
Метки нет (Все метки)

Здравствуйте. Помогите делать так, чтобы в Edit'ах 1 и 2 вводилась только 1 запятая и что бы после стирания её можно было вводить.
Код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
//процедура вычисления
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
rez,a,b:real;
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
case edit3.Text[1] of
'-':rez:=a-b;
'+':rez:=a+b;
'*':rez:=a*b;
'/':if b=0 then //проверка деления на ноль
ShowMessage('На ноль делить нельзя')
else
rez:=a/b;
end;
s:='';
 
if (edit3.Text = '/') and (edit2.Text = '0') then
 
s:=edit1.Text+edit3.Text+edit2.Text+'='+'На ноль делить нельзя'
else
begin
s:=edit1.Text+edit3.Text+edit2.Text+'='+floattostr(rez);
memo1.lines.add(s)
end;
 
end;
//кнопка закрыть
procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.close;
end;
//очищение memo
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.clear;
end;
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',',',#8] ) then Key:=#0; //проверка, что вводятся только цифры и запятая
end;
 
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',',',#8] ) then Key:=#0; //проверка, что вводятся только цифры и запятая
end;
 
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['/','*','+','-',#8] ) then Key:=#0;  //проверка, что вводятся только знаки
end;
 
end.
Спасибо.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2015, 10:41
Ответы с готовыми решениями:

Можно ограничить колличество вводимых символов в Edit?
Можно ограничить колличество вводимых символов в Edit? И как?

Проверка вводимых символов.
Подскажите как сделать цикл, что бы сопоставлял введённый символ с массивом...

Проверка наличия определенных символов в Edit
дано 1 edit состоящий из 20 элементов и баттон, условия: есть ли там такие...

Проверка заполнения Edit-ов в цикле: как исключить один Edit из проверки?
Имеется 6 Edit`ов. Хочу проверить 5 Edit`ов на заполнение/пустоту. Написал...

Определение данных вводимых в edit
Kак сделать чтобы при нажатие на кнопку выдавало сообщение что введено в edit,...

2
Puporev
Модератор
55411 / 42542 / 29396
Регистрация: 18.05.2008
Сообщений: 100,636
22.02.2015, 11:32 2
Если Вам нужно вводить вещественные числа, то это можно написать так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8,'0'..'9' :  ; // цифры и <Back Space>
'.',',': // разделитель целой и дробной частей числа
        begin
        if Key <> DecimalSeparator then
        Key := DecimalSeparator; // заменим разделитель на допустимый
        if Pos(DecimalSeparator,(Sender as TEdit).Text) <> 0
        then Key := Chr(0); // запрет ввода второго разделителя
        end;
'-':    // минус можно ввести только первым символом,
        // т.е. когда ячейка пустая
        if Length((Sender as TEdit).Text) <> 0
        then Key := Chr(0);
else   // остальные символы запрещены
               key := Chr(0);
end;
 
end;
И не нужно это писать 3 раза, просто в инспекторе объектов для Эдитов 2 и 3 выберите в OnKeyPress Edit1KeyPress
1
northener
пофигист широкого профиля
3429 / 2328 / 631
Регистрация: 15.07.2013
Сообщений: 13,796
22.02.2015, 13:15 3
Чуть-чуть упростим код
Delphi
1
2
3
4
5
6
'.',',': // разделитель целой и дробной частей числа
        begin
          if Pos(DecimalSeparator,(Sender as TEdit).Text) <> 0
          then Key := Chr(0) // запрет ввода второго разделителя
          else Key := DecimalSeparator; // установим родной для ОС разделитель
        end;
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2015, 13:15

Проверка вводимых значений
Написал программу, в которой обрабатываются числа (тип Integer), необходимо...

Проверка вводимых данных в StringGrid
Как осуществить проверку вводимых данных в стринггрид? Есть таблица стринггрид...

Проверка в Srtinggrid вводимых данных на совпадение в строке
Всем привет!!! помогите кто чем может) В чём суть, имеется таблица в которой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru