Если edit пустой то ошибка

gekasa

1 / 1 / 0

Регистрация: 21.09.2014

Сообщений: 26

1

11.11.2015, 21:57. Показов 12125. Ответов 18

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Задача на площадь треугольника за 3 отрезками

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;
 
type
  TForm2 = class(TForm)
    Image1: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Image2: TImage;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label2: TLabel;
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form2: TForm2;
  a,b,c,p,S:real;
 
implementation
 
{$R *.dfm}
 
procedure TForm2.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
 
if not(Key in [#8]) then
    Key := #0;
end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
    #8,'0'..'9':;
    ',','.':
    begin
    if pos(DecimalSeparator,Edit1.Text)=0 then Key:=DecimalSeparator
    else Key:=#0
    end
    else Key:=#0;
end;
if Edit1.Text='0' then
  if Key='0' then Key:=#0;
end;
 
procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
    #8,'0'..'9':;
    ',','.':
    begin
    if pos(DecimalSeparator,Edit2.Text)=0 then Key:=DecimalSeparator
    else Key:=#0
    end
    else Key:=#0;
end;
if Edit1.Text='0' then
  if Key='0' then Key:=#0;
end;
 
procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
    #8,'0'..'9':;
    ',','.':
    begin
    if pos(DecimalSeparator,Edit3.Text)=0 then Key:=DecimalSeparator
    else Key:=#0
    end
    else Key:=#0;
end;
if Edit1.Text='0' then
  if Key='0' then Key:=#0;
end;
 
procedure TForm2.Button1Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Label2.Caption:='Ðåçóëüòàò';
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
 if Edit1.Text <> '' then
a:=strtofloat(Edit1.Text);
b:=strtofloat(Edit2.Text);
c:=strtofloat(Edit3.Text);
if (abs(a-b)<c)and(c<(a+b))then
begin
p:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));
label2.Caption:=floattostr(S);
end
else showmessage('íå òðåóãîëüíèê');
end;

Помогите вывести ошибку , если Edit пустые , при это также должно выдавать ошибку , если не является треугольником

1

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

11.11.2015, 21:57

Ответы с готовыми решениями:

если edit пустое или =0 — вывести ошибку
Здравствуйте!
Мне нужно сделать так, чтобы в Edit1 (туда нужно вводить размерность массива)…

Если введён первый нуль в Edit,и не стоит запятая после него, выдать ошибку
Здравствуйте программисты! Подскажите пожалуйста, как Если введён первый нуль в Edit1,и не стоит…

Если строка- запись целого числа, то вывести 1; если вещественного , то вывести 2; если строку нельзя преобразовать в число, то вывести 0.
Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с…

Не учитывать пустые Edit
Как, в данном случае, не учитывать пустые Edit. То есть что бы программа сохраняла результаты…

18

droider

Эксперт Pascal/Delphi

4896 / 2766 / 851

Регистрация: 04.10.2012

Сообщений: 10,075

11.11.2015, 22:33

2

Цитата
Сообщение от gekasa
Посмотреть сообщение

вывести ошибку , если Edit пустые

Delphi
1
2
3
4
5
6
if (Edit1.Text = '') and (Edit2.Text = '') and (Edit3.Text = '') then
begin
ShowMessage('Не заданы стороны треугольника! Заполните поля'); //вывод сообщения
end
else
...

Цитата
Сообщение от gekasa
Посмотреть сообщение

выдавать ошибку , если не является треугольником

Delphi
1
if (c=a+b) or (b=a+c) or (a=b+c) then ShowMessage('Не является треугольником');

0

1 / 1 / 0

Регистрация: 21.09.2014

Сообщений: 26

11.11.2015, 23:03

 [ТС]

3

Не работает почему то, я в Button1.Click вставляю , правильно ?

0

пофигист широкого профиля

4662 / 3096 / 855

Регистрация: 15.07.2013

Сообщений: 17,865

12.11.2015, 00:25

4

Цитата
Сообщение от gekasa
Посмотреть сообщение

я в Button1.Click вставляю , правильно ?

Не знаю правильно ли ты вставляешь в Button1.Click, но попробуй вставить в Button2Click.

0

3035 / 2217 / 511

Регистрация: 11.09.2009

Сообщений: 8,196

12.11.2015, 02:28

5

Цитата
Сообщение от droider
Посмотреть сообщение

if (c=a+b) or … (‘Не является треугольником’);

if (c>=a+b) …

0

0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 20:32

6

Ребята подскажите, кто сталкивался с таким вопросом:
Для числового компонента Edit типа Integer, в Делфи7 нужно прописать условие, в котором нужно показать:

Если Edit пустой, то за этим последуют определённые инструкции.

Для символьного понятно: Edit1.text:=»
А вот как быть с числовым? Сразу скажу, что перевод в строку:IntToStr(Edit1.text):=», не вариант, потому что в условиях фигурируют только числовые компоненты Edit,если переведу в строку, то будет конфликт числовых со строковым.

0

Эксперт Pascal/Delphi

4896 / 2766 / 851

Регистрация: 04.10.2012

Сообщений: 10,075

30.11.2015, 20:52

7

Цитата
Сообщение от Евгик
Посмотреть сообщение

в условиях фигурируют только числовые компоненты Edit

поясните

0

Евгик

0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 21:11

8

Поясняю: Есть условие, в котором хочу учесть 2 эдита числового типа. Одному присвоить значение 0, а второму пусто.
Если пусто не присвою, то при нажатии на кнопку обработать, сообщение: »is not a valid floating point value
Что в переводе приблизительно так: » не действительное значение с плавающей запятой.
Но чтоб, присвоить значение пусто, я знаю только показатель символьного типа». А для числового как показать?
Пример програмки где возникает ошибка:
Эдит в данном случае является переменной.
вот краткий отрывок с програмки: можете скомпилировать у себя и проверить:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var
a,b:real;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit1.text);
begin
if (a=0) and (b='') //не так не получается.
if (a=0) and floattostr(b)='' //не так. 
then begin
edit2.Visible:=false;
end;
end.

0

2649 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

30.11.2015, 21:37

9

Цитата
Сообщение от Евгик
Посмотреть сообщение

то при нажатии на кнопку обработать

Так все ведь много проще — достаточно

запретить

реакцию кнопки на нажатие, выставив его св-ву Enabled значение False, если содержимое того или иного Edit’а некорректно)

И сделать это удобнее всего в обработчиках событий OnChange и OnExit тех самых Edit’ов, содержимое которых напрямую влияет на возможность проведения тех или иных расчетов по нажатию кнопки.

0

0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 21:59

10

Я вижу, толковые ответы у тебя есть, за что спасибо! Подумаю, как их можно применить!
Но понятие корректности содержимого эдита, здесь не актуально! Поскольку у эдита должно быть 4 формы: 0, целое число, число с запятой и пусто. И во всех случаях должны происходить определённые вычисления и поля должно быть активно!

0

Эксперт Pascal/Delphi

4896 / 2766 / 851

Регистрация: 04.10.2012

Сообщений: 10,075

30.11.2015, 22:00

11

Может лучше вести обсуждение в отдельно созданной для этого теме?

0

0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 22:01

12

Согласен!

0

2649 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

30.11.2015, 22:21

13

Цитата
Сообщение от Евгик
Посмотреть сообщение

понятие корректности содержимого эдита, здесь не актуально!

Хренасе заява)

Да как же не актуально-то, если значение «пусто» невозможно преобразовать ни в какое число в принципе, хоть ты из штанов выпрыгни ?)

Цитата
Сообщение от Евгик
Посмотреть сообщение

0, целое число, число с запятой

Чем, по-твоему, 0 отличается от 0.00000 ? Какую из ф-ций преобразования ты будешь использовать, заранее не зная что юзер впендюрит в Edit — «0» или «0.00000» ?

Тот же самый вопрос тебе на засыпку для случая впендюривания «5» и «5.000000000000000»)

0

0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 22:31

14

Блокировка стоит для эдита в событии OnKeyPress, пользователь сможет ввести только числа!

0

2649 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

30.11.2015, 22:35

15

Цитата
Сообщение от Евгик
Посмотреть сообщение

пользователь сможет ввести только числа!

Ну а я о чем ?)

Вот он ввел «5» — это он число ввел ? Число.
А потом он ввел «5.00000» — это он число ввел ? Тоже число.

И тут же вопрос — в какой тип ты будешь преобразовывать то что он ввел ?

0

0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 22:50

16

Ну в моём случае случае он не введет число с точкой. Блокировка сработает.
Потому что в событии OnKeyPress проставлена блокировка на все кроме чисел.
Ну, а по твоей теме:
5 интеджер присвою
5.0000000 реал к примеру

0

2649 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

30.11.2015, 22:53

17

Цитата
Сообщение от Евгик
Посмотреть сообщение

в событии OnKeyPress проставлена блокировка на все кроме чисел

Сказка про белого бычка)

И «5» — число, и «5.000» —

тоже

число)

0

0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 23:47

18

да, с тобой не поспоришь! не буква.

0

Arcor

5694 / 2285 / 466

Регистрация: 20.11.2009

Сообщений: 7,697

Записей в блоге: 1

01.12.2015, 02:11

19

а если отследить это все чудо вот так

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
var k: Integer;
    l: Extended;
begin
  if not TryStrToInt(Edit1.Text, k) then
    ShowMessage('Ошибка, введено не целое число');
 
  if not TryStrToFloat(Edit1.Text, l) then
    ShowMessage('Ошибка, введено не вещественное число');
 
end;

если будет введено целое — оно пропустится полностью без каких либо сообщений, будет это вещественное число, первая проверка зафиксирует, что число не является целым, во втором случае пропустится
введем символ(не цифры) не будет пропущенно ни одной из этих проверок

или в чем вся конкретная соль сего задания?

в k и l будут возвращены соответствующие результаты, если проверка будет успешной, в них запишется обработанное значение, иначе в этих 2 переменных будет вероятнее всего мусор, который возможно выдаст крит при дальнейших преобразованиях

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

01.12.2015, 02:11

Помогаю со студенческими работами здесь

Если хотя бы один из Edit-ов или ячейка StringGrid не заполнены, то вывести сообщение об ошибке
ПРоблема заключается в том что есть форма, на форме расположена таблица StringGrid и 2 Edit в…

Если a>b, то вывести дату рождения, если a=b, то вывести ФИО, если a<b, то вывести количество пальцев на руке
Добрый день, подскажите пожалуйста, что не так, ломаю голову не один час, а ошибку найти не могу….

Если вводит в объект Edit отрицательное число, то выдает ошибку «-» is not a valid integer value». Как исправить?
var
Form1: TForm1;
a,r:integer;
l,s,v,p:real;

implementation

{$R *.dfm}

procedure…

из таблицы DBGrid нужно вывести в edit количество строк из столбца Статус со значением работает, вот код, но выдает ошибку
Здравствуйте, запрограммировала базу данных через библиотеку ADO, из таблицы DBGrid нужно вывести…

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

Или воспользуйтесь поиском по форуму:

19

Читайте также:

  1. Диагностика результативного компонента правовой обученности
  2. Женское свойство (норов) и на свинье не объедешь.
  3. Методы и средства ограничения доступа к компонентам ЭВМ
  4. Получение катализаторов нанесением активного компонента на носитель
  5. Порядок реализации федерального компонента
  6. Свойство емкости

Filter – это строка, которая служит для задания критерия, по которому производится выборка записей. В ней нужно указать имя поля, по которому идет фильтрация, затем = ( если нужно полное совпадение) либо LIKE (если мы хотим организовать поиск и по части слова) и само значение, по которому выбираются записи.

Допустим, есть таблица с полями Фамилия, Имя, Отчество. Нужно фильтровать данные по одному из полей (на выбор), т.е. пользователь должен иметь возможность выбрать по какому из полей фильтровать данные. Задача стоит такая отсеивать данные по мере ввода искомой строки в Edit.

Расположим на форме компоненты Combobox и Edit. Combobox будет использоваться для выбора столбца, а в Edit будет вводится искомое слово. Заполняем свойство Items в Combobox именами столбцов. Затем в обработчике события Edit1Change пишем следующее:

procedure TForm1.Edit1Change(Sender: TObject);
begin
if Length(Edit1.Text) > 0 then
begin
ADOTable1.Filtered:=false;
ADOTable1.Filter:=Combobox1.Text + ‘ LIKE ‘ + #39 + Edit1.Text + ‘%’ + #39;
ADOTable1.Filtered:=true;
end
else ADOTable1.Filtered:=false;
end;

Прокомментирую код: если Edit не пустой (при пустом вылетит ошибка), отключаем фильтрацию, формируем строку фильтра, запускаем фильтрацию, если Edit пустой — отключаем фильтрацию.
В самом простом случае, если не нужно давать возможность выбора определенного столбца, а фильтровать по одному конкретному полю(например «ФАМИЛИЯ»), строка фильтра выглядела бы следующим образом: ADOTable1.Filter:=’ФАМИЛИЯ LIKE ‘+ #39 + Edit1.Text + ‘%’ + #39;

Строка-условие фильтра означает следующее — выбрать те записи из столбца ‘ФАМИЛИЯ’, которые начинаются с тех же символов, что и набраны в Edit1.Text.

Особое внимание обратите на пробелы — «потеряете» пробел — не будет работать.

Ключевое слово LIKE позволяет по заданному шаблону сравнивать строки. При этом нужно знать следующее:

символ ‘_’ (подчеркивание) – заменяет любой одиночный символ,

символ ‘%’ (процент) – заменяет любую последовательность из символов.

Знак #39 — означает номер символа ‘ (одинарная кавычка) в кодовой таблице ASCII. Дело в том, что значение на фильтрацию нужно указывать в одинарных кавычках, а так как одинарные кавычки используются в Delphi для ограничения строк, то чтобы внутри строки поставить одинарную кавычку, её нужно поставить дважды. Конструкция #39 + Edit1.Text + ‘%’ + #39 идентична »» + Edit1.Text + ‘%’ + »».

Если, например, нужно искать любое вхождение искомой строки в записях, а не начиная с первого символа, то строка фильтра выглядела бы следующим образом:

ADOTable1.Filter:=’ФАМИЛИЯ LIKE ‘ + #39 + ‘%’ + Edit1.Text + ‘%’ + #39;

Заметили ‘%’ перед Edit1.Text? Переводится так — выбрать те записи из столбца ‘ФАМИЛИЯ’, в которых есть последовательность символов, которые набраны в Edit1.Text.

Часто нужно фильтровать по нескольким столбцам. Тут применяется немного иная конструкция.

Добавим еще два компонента Edit на форму. Combobox использовать не будем, его можно удалить, т.к. у нас каждое поле (Edit) будет отвечать за ввод информации по определенному столбцу. Еще добавим кнопочку, она будет запускать фильтрацию. Казалось бы, следующая конструкция должна корректно работать:

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.Filtered:=false;
ADOTable1.Filter:=’ФАМИЛИЯ LIKE ‘+ #39 + Edit2.Text + ‘%’ + #39 +’ AND ‘ + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39 + ‘ AND ‘ + ‘ОТЧЕСТВО LIKE ‘ + #39 + Edit4.Text + ‘%’ + #39;
ADOTable1.Filtered:=true;
end;

Она и работает, но только в том случае, если данные введены во все три поля. Если одно из полей ввода(Edit) пустое — вылетает ошибка «Аргументы имеют неверный тип». Впрочем, есть способ с этим бороться. Сначала код:

procedure TForm1.Button1Click(Sender: TObject);
var filtr, // формируемая строка фильтра
add: string;
begin
ADOTable1.filtered:=false;
filtr:=»;
if length(edit2.text) > 0 then
filtr:= ‘ФАМИЛИЯ LIKE ‘+ #39 + Edit2.Text + ‘%’ + #39;
if length(edit3.text) > 0 then
begin
if length(filtr) > 0 then add:= ‘ and ‘ else add:=»;
filtr:=filtr + add + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39;
end;
if length(edit4.text) > 0 then
begin
if length(filtr) > 0 then add:= ‘ and ‘ else add:=»;
filtr:=filtr + add + ‘ОТЧЕСТВО LIKE ‘+ #39 + Edit4.Text + ‘%’ + #39;
end;
if length(filtr) > 0 then
begin
ADOTable1.Filter:= filtr;
ADOTable1.filtered:=true;
end
else Showmessage(‘Все поля пусты!’);
end;

Смысл такой: нужно провести проверку, пустое поле ввода или нет, а затем уже формировать строку фильтра. Причем начиная со второго поля ввода нужно проверять и строку фильтра. Это нужно для последующего правильного формирования строки.

Например, если поле Edit2 (Фамилия) пустое, то соответственно и строка фильтра будет пуста (filtr:=») , а, например, поле Edit3 (ИМЯ) заполнено, это значит, строка фильтра должна иметь вид ‘ИМЯ LIKE ‘ + #39 + Edit3.Text + ‘%’ + #39 , а не ‘ and ‘ + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39 , (т.е. без ‘ and ‘ вначале). Следующий фрагмент кода это и выполняет:

…..
if length(edit3.text) > 0 then
begin
if length(filtr) > 0 then add:= ‘ and ‘ else add:=»;
filtr:=filtr + add + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39;
end;
…..

Если Edit3 не пустое, то проверяем строку фильтра(filtr) если она не пуста, то прибавляем к сторке фильтра ‘ and ‘ + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39, если пуста, то просто ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39.

Присваиваем сформированную строку(filtr) свойству ADOTable1.Filter и запускаем фильтрацию.

…..
if length(filtr) > 0 then
begin
ADOTable1.Filter:= filtr;
ADOTable1.filtered:=true;
end
else Showmessage(‘Все поля пусты!’);
…..

Соответственно, если на этом этапе filtr=», значит, ни одно из полей не было заполнено, о чем и выводим соответствующую надпись.

Кроме операции and можно использовать и другие логические операции or, not, xor, при формирования строки-условия фильтрации по нескольким столбцам, хотя такая необходимость возникает достаточно редко.

8. Теперь рассмотрим организацию поиска через ADOQuery. Поиск можно осуществлять как на текущей, так и на другой форме.

9. Приступим к организации самого поиска. Для этого нам нужен компонент ADOQuery. Предварительно не забудьте «познакомить» формы и юниты друг с другом (см. рисунок ниже).

После этого в свойстве Connection компонента ADOQuery станет доступен компонент ADOConnection с формы1.

Следующее свойство, самое важное, отвечающее за сам поиск – свойство SQL. В него мы должны внести запрос, формирующий результирующую таблицу. К примеру, запрос на рисунке выбирает все поля из таблицы base, в которых значение поля price равно 55000. Последнее свойство, которое нужно указать – свойство Active устанавливаем в true.

Для отображения результата поиска нужны еще 2 компонента: DataSource (в свойстве DataSet указываем ADOQuery) для привязки результата к сетке таблицы на форме и сама таблица DBGrid (в свойстве DataSource указываем тот DataSource, который только что поместили на форму). Результат должен уже отобразиться в таблице.

10. Если вы хотите осуществлять несколько видов поиска, не обязательно для каждого из них делать отдельную форму и использовать отдельный компонент ADOQuery. К примеру, можно организовать это следующим образом:

Т.е. вносить значение в свойство SQL не вручную, а программно, по нажатию на кнопку ИСКАТЬ, в зависимости от выбранной радиокнопки. Это можно сделать при помощи команды ADOQuery.SQL.Add(…). В скобках указывается строка запроса.


Дата добавления: 2015-11-28; просмотров: 389 | Нарушение авторских прав



mybiblioteka.su — 2015-2023 год. (0.015 сек.)

 
новичок_из_сыктывкара ©

 
(2004-03-30 18:39)
[0]

Люди помогите надопроверить пустая ли Edit ? если пустая то messagebox? если что то есть то тогда выполнять дальше…вроде все правильно, но что то не получается…может подскажете в чем ошибка, или свой метод…Очень прошу помочь…)

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
d,e,r:real;
kd,ke:real;
code:integer;
begin
e:=strtofloat(edit3.text);
if edit3.Text=»» then    application.MessageBox(PChar(введи курс evro»), «Ошибка», MB_OK);
d:=strtofloat(edit4.text);
if edit4.Text=»» then    application.MessageBox(PChar(введи курс dollar»), «Ошибка», MB_OK);
r:=strtofloat(edit1.text);
if edit1.Text=»» then application.MessageBox(PChar(введи количество рублей»), «Ошибка», MB_OK);
try
ke:=r/e;
kd:=r/d;
except on EZeroDivide do application.MessageBox(PChar(«Ââåäè êóðñ èí. âàëþòû-äåëåíèå íà íîëü+»), «Îøèáêà», MB_OK);
end;
edit2.text:=floattostr(ke);
edit5.text:=floattostr(kd);
end;


 
Smithson ©

 
(2004-03-30 18:42)
[1]

Что именно не получается-то? Телепатов нету


 
новичок_из_сыктывкара ©

 
(2004-03-30 18:43)
[2]

в общем не выводит сообщение об ошибке…


 
panov ©

 
(2004-03-30 18:44)
[3]

>новичок_из_сыктывкара ©   (30.03.04 18:43) [2]

в общем не выводит сообщение об ошибке…

А что выводит?


 
имя

 
(2004-03-30 18:45)
[4]

if (Edit3.Text = «») then raise Exception.Create(«Введите курс Euro»);

P.S. А в чем ошибка-то?


 
Smithson ©

 
(2004-03-30 18:46)
[5]

У тебя в корне неверный подход. Если в строке не число (или строка пустая), то StrToFloat выдаст исключение. Поэтому после нее проверять строку на отсутсвие значения бессмысленно — это нужно делать до. Или не делать вовсе, а заключать каждый StrToFloat в try except и реагировать на ошибку тама.


 
PVOzerski ©

 
(2004-03-30 18:46)
[6]

>PChar(введи
апостроф Пушкин введет? И телепатия не требуется. На будущее: просьба писать внятно, программа не компилируется или работает, но не так


 
новичок_из_сыктывкара ©

 
(2004-03-30 18:47)
[7]

надо что бы выводилась не виндосовское сообщение об ошибке а отлавливалась програмно, а она не отлавливается


 
PVOzerski ©

 
(2004-03-30 18:51)
[8]

>e:=strtofloat(edit3.text);
>if edit3.Text=»» then    application.MessageBox(PChar(введи курс >evro»), «Ошибка», MB_OK);
Дык надо же сначала проверять содержимое, а потом strtofloat


 
Smithson ©

 
(2004-03-30 18:51)
[9]

виндосовское сообщение об ошибке
Такового зверя здесь нет в принципе. Все сообщения об ошибках выдает твоя прогамма. Те ошибки, которые ТЫ не обработал, обработает код Borland`а и выдаст стандартное уведомление об ошибке. Не нравиться оно — обрабатывай ошибки сам :))

А windows, по-моему, только про Access Violation ругается сама, поскольку защита ресурсов — привелегия OC.


 
новичок_из_сыктывкара ©

 
(2004-03-30 18:51)
[10]

всем спасибо огромное


 
имя

 
(2004-03-30 18:56)
[11]

1.
try
 E := StrToFloat(Edit3.Text);
except
 on Excp: Exception do // что-то сделать
end;

2.
if (Edit3.Text = "") then
begin
 ShowMessage("Введите курс Euro");
 Exit;
end;
E := StrToFloat(Edit3.Text);

3.
if (Edit3.Text = "") then raise Exception.Create("Введите курс Euro");
E := StrToFloat(Edit3.Text);

4….


 
новичок_из_сыктывкара ©

 
(2004-03-30 18:57)
[12]

:)


Если вы разрабатываете программу на Delphi, то вероятно, вам придется столкнуться с ситуацией, когда пользователь не заполнит обязательные поля формы приложения. В таком случае важно сообщить пользователю о необходимости заполнения этих полей.

Для проверки пустоты поля ввода (edit), в Delphi можно использовать следующий код:

if (Edit1.Text = '') then
ShowMessage('Введите значение для поля');

Этот код проверяет содержимое поля Edit1 и, если оно пустое, показывает сообщение с просьбой ввести значение для поля.

Также можно добавить проверку на пробелы и другие символы:

if Trim(Edit1.Text) = '' then
ShowMessage('Введите значение для поля');

Этот код удаляет пробелы в начале и конце строки и проверяет, что остаток строки не пустой.

Editing Databases in Delphi — Editing a current record

DELPHI Урок 3 Создание БД, добавление, удаление, изменение записей

Программирование в Delphi Урок 3 2 Работа с текстом, строковые функции Length, Pos и другие

Программирование в Delphi Урок 5. Массивы и циклы, цикл for, глобальные переменные. Array

[Новые уроки по Lazarus] №3 Компонент Label и Edit. Работа с полем ввода данных.

How to Synchronize or Align a BMW ECU DME to the EWS security system ISN

DELPHI Исправляем ошибки прошлого урока под номером 7 =)

Пример использования компонента KRIniConfig в Delphi

Уроки программирования в Lazarus. Урок №3. Работа с полем ввода, компонентом Edit

При изменении TEdit процедура автоматически начинает подсчёт суммы, и если очистить поле TEdit, то высвечивается ошибка » »is not a valid integer value «, можете подсказать, что можно сделать? Заранее благодарю за ответ.

  • delphi
  • edit

задан 16 дек 2020 в 22:09

Nickolai Bondarenko's user avatar

1

  • можно при подсчете суммы проверить, пустая ли строка. и если пустая то использовать при вычислениях 0, не вписывая в сам едит ничего

    16 дек 2020 в 22:33

1 ответ

Можно использовать функцию IntToStrDef, вместо IntToStr

ответ дан 17 дек 2020 в 8:50

Герман Борисов's user avatar

Герман БорисовГерман Борисов

10.3k14 серебряных знаков37 бронзовых знаков

 
новичок_из_сыктывкара ©
 
(2004-03-30 18:39)
[0]

Люди помогите надопроверить пустая ли Edit ? если пустая то messagebox? если что то есть то тогда выполнять дальше…вроде все правильно, но что то не получается…может подскажете в чем ошибка, или свой метод…Очень прошу помочь…)

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
d,e,r:real;
kd,ke:real;
code:integer;
begin
e:=strtofloat(edit3.text);
if edit3.Text=»» then    application.MessageBox(PChar(введи курс evro»), «Ошибка», MB_OK);
d:=strtofloat(edit4.text);
if edit4.Text=»» then    application.MessageBox(PChar(введи курс dollar»), «Ошибка», MB_OK);
r:=strtofloat(edit1.text);
if edit1.Text=»» then application.MessageBox(PChar(введи количество рублей»), «Ошибка», MB_OK);
try
ke:=r/e;
kd:=r/d;
except on EZeroDivide do application.MessageBox(PChar(«&#194;&#226;&#229;&#228;&#232; &#234;&#243;&#240;&#241; &#232;&#237;. &#226;&#224;&#235;&#254;&#242;&#251;-&#228;&#229;&#235;&#229;&#237;&#232;&#229; &#237;&#224; &#237;&#238;&#235;&#252;+»), «&#206;&#248;&#232;&#225;&#234;&#224;», MB_OK);
end;
edit2.text:=floattostr(ke);
edit5.text:=floattostr(kd);
end;


 
Smithson ©
 
(2004-03-30 18:42)
[1]

Что именно не получается-то? Телепатов нету


 
новичок_из_сыктывкара ©
 
(2004-03-30 18:43)
[2]

в общем не выводит сообщение об ошибке…


 
panov ©
 
(2004-03-30 18:44)
[3]

>новичок_из_сыктывкара ©   (30.03.04 18:43) [2]

в общем не выводит сообщение об ошибке…

А что выводит?


 
имя
 
(2004-03-30 18:45)
[4]

if (Edit3.Text = «») then raise Exception.Create(«Введите курс Euro»);

P.S. А в чем ошибка-то?


 
Smithson ©
 
(2004-03-30 18:46)
[5]

У тебя в корне неверный подход. Если в строке не число (или строка пустая), то StrToFloat выдаст исключение. Поэтому после нее проверять строку на отсутсвие значения бессмысленно — это нужно делать до. Или не делать вовсе, а заключать каждый StrToFloat в try except и реагировать на ошибку тама.


 
PVOzerski ©
 
(2004-03-30 18:46)
[6]

>PChar(введи
апостроф Пушкин введет? И телепатия не требуется. На будущее: просьба писать внятно, программа не компилируется или работает, но не так


 
новичок_из_сыктывкара ©
 
(2004-03-30 18:47)
[7]

надо что бы выводилась не виндосовское сообщение об ошибке а отлавливалась програмно, а она не отлавливается


 
PVOzerski ©
 
(2004-03-30 18:51)
[8]

>e:=strtofloat(edit3.text);
>if edit3.Text=»» then    application.MessageBox(PChar(введи курс >evro»), «Ошибка», MB_OK);
Дык надо же сначала проверять содержимое, а потом strtofloat


 
Smithson ©
 
(2004-03-30 18:51)
[9]

виндосовское сообщение об ошибке
Такового зверя здесь нет в принципе. Все сообщения об ошибках выдает твоя прогамма. Те ошибки, которые ТЫ не обработал, обработает код Borland`а и выдаст стандартное уведомление об ошибке. Не нравиться оно — обрабатывай ошибки сам :))

А windows, по-моему, только про Access Violation ругается сама, поскольку защита ресурсов — привелегия OC.


 
новичок_из_сыктывкара ©
 
(2004-03-30 18:51)
[10]

всем спасибо огромное


 
имя
 
(2004-03-30 18:56)
[11]

1.
try
 E := StrToFloat(Edit3.Text);
except
 on Excp: Exception do // что-то сделать
end;

2.
if (Edit3.Text = "") then
begin
 ShowMessage("Введите курс Euro");
 Exit;
end;
E := StrToFloat(Edit3.Text);

3.
if (Edit3.Text = "") then raise Exception.Create("Введите курс Euro");
E := StrToFloat(Edit3.Text);

4….


 
новичок_из_сыктывкара ©
 
(2004-03-30 18:57)
[12]

:)



Форум программистов Vingrad

Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> Как проверить введены ли данные в edit? Если все 10 Edit пусты то message ‘****’ 

:(

   

Опции темы

DenRip
Дата 16.6.2007, 11:10 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 67
Регистрация: 12.6.2007

Репутация: нет
Всего: нет

На форме 10 Editov, если они все пустые то выходит сообщение ‘Вы не ввели ни одного параметра, продолжить???’

Если хоть один заполнен то выполнение кода……???

PM MAIL   Вверх
gambit
Дата 16.6.2007, 11:36 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
***
Награды: 1

Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
if (edit1.text='') and (edit2.text='') and (edit3.text='') and (edit4.text='') and (edit5.text='') and (edit6.text='') and (edit7.text='') and (edit8.text='') and (edit9.text='') and (edit10.text='') then
begin
if MessageDlg('Вы не ввели ни одного параметра, продолжить???', mtConfirmation, [mbOk, mbCancel], 0) = mrOK then qwe;
end
else
begin
qwe;
end;
end;

procedure qwe;
begin
showmessage('hello');
end;

Это сообщение отредактировал(а) gambit — 16.6.2007, 11:43

PM MAIL ICQ Skype   Вверх
DenRip
Дата 16.6.2007, 13:06 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 67
Регистрация: 12.6.2007

Репутация: нет
Всего: нет

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
if (edit1.text='') and (edit2.text='') and (edit3.text='') and (edit4.text='') and (edit5.text='') and (edit6.text='') and (edit7.text='') and (edit8.text='') and (edit9.text='') and (edit10.text='') then
begin
if MessageDlg('Вы не ввели ни одного параметра, продолжить???', mtConfirmation, [mbOk, mbCancel], 0) = mrOK then form2.show;
end
else
begin
form3.show;
end;
end.

Не ругается и ни чего не происходит!! что тут не так??

PM MAIL   Вверх
Guedda
Дата 16.6.2007, 13:11 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Подрывник
****

Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 1
Всего: 78

gambit, у тебя код не заработает, так как процедура qwe стоит ниже по коду, чем процедура её вызвавшая.

———————

Ll 2

PM MAIL WWW ICQ Skype GTalk   Вверх
mr.Anderson
Дата 16.6.2007, 13:17 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

iOS Lead Developer
****

Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128

Используйте IsEmpty().

———————

user posted image

user posted image

PM MAIL ICQ Skype   Вверх
Rodman
Дата 16.6.2007, 15:43 (ссылка)
|    (голосов:1)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

CIO
****

Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122

Код

procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
  for i:=1 to 10 do
    if(Length(TEdit(FindComponent('Edit' + IntToStr(i))).Text)=0)then
    begin
      ShowMessage('Enter some in '+IntToStr(i)+' Edit');
      Exit;
    end;
  Form3.show;
end;

Цитата(DenRip @  16.6.2007,  12:06 Найти цитируемый пост)
Не ругается и ни чего не происходит!! что тут не так?? 

а пошагово проверял???

———————

CRM с функцией АвтоОбзвона

Лотереи мира

PM MAIL WWW Skype GTalk YIM MSN   Вверх
lukas
Дата 16.6.2007, 18:42 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15

DenRip

так дык… условие не правильно поставлено…  smile , логику нужно развивать…

не and а or

У тебя условие: если все едиты пустые, то тогда выводить сообщение…

а нужно, если хотя бы один пустой, выводить сообщение…  smile

Но я бы посоветовал код Rodman, (а если едитов будет 20, 30, 40, ты будешь все вручную писать…?)

Это сообщение отредактировал(а) lukas — 16.6.2007, 18:44

———————

http://code.google.com/p/orionphp/ — opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.

PM MAIL WWW   Вверх
DenRip
Дата 17.6.2007, 15:37 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 67
Регистрация: 12.6.2007

Репутация: нет
Всего: нет

н

Цитата
е and а or

Как 
gambit,  подсказал

Цитата
я бы посоветовал код Rodman

Да это грамотно будет, спасибо!! бум использовать!!!!
А теперь я позволю себе задать вам нескроный вопрос!

мне надо запретить ввод текста в едиты, только цифры, ??? 
Во как!??

PM MAIL   Вверх
Rodman
Дата 17.6.2007, 16:34 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

CIO
****

Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122

Цитата(DenRip @  17.6.2007,  14:37 Найти цитируемый пост)
мне надо запретить ввод текста в едиты, только цифры, ??? 

Код

procedure TForm1.FormCreate(Sender: TObject);
var i, j:Integer;
    st:String;
begin
  for j:=1 to 10 do
    for i:=Length(TEdit(FindComponent('Edit' + IntToStr(j))).Text) downto 1 do
      if not(TEdit(FindComponent('Edit' + IntToStr(j))).Text[i] in ['0'..'9'])then
      begin
        st:=TEdit(FindComponent('Edit' + IntToStr(j))).Text;
        Delete(st, i, 1);
        TEdit(FindComponent('Edit' + IntToStr(j))).Text:=st;
      end;
end;

———————

CRM с функцией АвтоОбзвона

Лотереи мира

PM MAIL WWW Skype GTalk YIM MSN   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
Правила форума «Delphi: Для новичков»
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »

Если вы разрабатываете программу на Delphi, то вероятно, вам придется столкнуться с ситуацией, когда пользователь не заполнит обязательные поля формы приложения. В таком случае важно сообщить пользователю о необходимости заполнения этих полей.

Для проверки пустоты поля ввода (edit), в Delphi можно использовать следующий код:

if (Edit1.Text = '') then
ShowMessage('Введите значение для поля');

Этот код проверяет содержимое поля Edit1 и, если оно пустое, показывает сообщение с просьбой ввести значение для поля.

Также можно добавить проверку на пробелы и другие символы:

if Trim(Edit1.Text) = '' then
ShowMessage('Введите значение для поля');

Этот код удаляет пробелы в начале и конце строки и проверяет, что остаток строки не пустой.

Editing Databases in Delphi — Editing a current record

DELPHI Урок 3 Создание БД, добавление, удаление, изменение записей

Программирование в Delphi Урок 3 2 Работа с текстом, строковые функции Length, Pos и другие

Программирование в Delphi Урок 5. Массивы и циклы, цикл for, глобальные переменные. Array

[Новые уроки по Lazarus] №3 Компонент Label и Edit. Работа с полем ввода данных.

How to Synchronize or Align a BMW ECU DME to the EWS security system ISN

DELPHI Исправляем ошибки прошлого урока под номером 7 =)

Пример использования компонента KRIniConfig в Delphi

Уроки программирования в Lazarus. Урок №3. Работа с полем ввода, компонентом Edit

Обновлено: 21.09.2023

Ввод и редактирование текста выполняется в специальных полях или областях формы. При необходимости пользователь может изменить отображаемые данные. Для этих целей система Delphi предлагает различные компоненты, например, Edit, MaskEdit, Memo, RichEdit и LabeledEdit.

Однострочный редактор, или поле редактирования (поле ввода), представляет собой поле ввода текста, в котором возможно отображение и изменение текста. В Delphi есть несколько однострочных редакторов, из них наиболее часто используется компонент Edit.

Компонент ввода и редактирования текста Edit

Компонент Edit позволяет вводить и редактировать с клавиатуры различные символы, при этом поддерживаются операции, такие как перемещение по строке с использованием клавиш управления курсором, удаление символов с помощью клавиш и , выделение части текста и др. Отметим, что у однострочного редактора отсутствует реакция на управляющие клавиши и .

Свойство CharCase

Для изменения регистра символов в поле редактирования служит свойство СharСase типа TEditcharCase, которое может принимать одно из трех значений:

  • ecLowerCase — текст преобразуется к нижнему регистру;
  • ecNormal — регистр символов не изменяется (по умолчанию);
  • ecUpperCase — текст преобразуется к верхнему регистру.

Свойство PasswordChar

При использовании компонента Edit для ввода пароля можно воспользоваться свойством PasswordChar типа Char, задающим символ для отображения в поле ввода. Этот символ при вводе текста появляется вместо фактически введенного символа. Например, после выполнения инструкций

в поле редактирования появится строка ******, в то время как в действительности свойство Text имеет значение — ‘Пароль’.

Компонент MaskEdit

Компонент MaskEdit также является однострочным редактором, но по сравнению с компонентом Edit он предоставляет дополнительную возможность ввода информации по шаблону. С помощью шаблона (маски) можно ограничить число вводимых пользователем символов, тип вводимых символов (алфавитный, цифровой и т. д.). Кроме того, во вводимую информацию можно вставить дополнительные символы (разделители при вводе даты, времени и т. п.). С помощью редактирования по маске удобно вводить телефонные номера, даты, почтовые индексы и другую информацию заранее определенного формата.

Свойство EditMask

Маска задается в свойстве EditMask типа string и представляет собой последовательность специальных кодов, определяющих для поля редактирования формат содержащегося в ней текста.

Маска состоит из разделенных символом трех полей:

  1. первое поле является собственно маской;
  2. второе поле— это символ, определяющий, считаются ли литеральные символы частью данных. По умолчанию используется 1, и литеральные символы маски являются частью не только значения, редактируемого в визуальном компоненте, но и значения, содержащегося в поле. Если вместо 1 установить символ о, то литеральные символы маски по-прежнему будут отображаться при редактировании значения, однако в поле не сохраняются. Литеральные символы удобно применять в качестве разделителей, например, при вводе телефонных номеров;
  3. третье поле содержит символ, используемый для указания незаполненных символов во вводимом тексте, по умолчанию это символ подчеркивания.

Если второе и/или третье поля не определены, то для них действуют значения по умолчанию.

В маске могут использоваться следующие специальные символы:

Примеры масок:

Для составления маски можно использовать редактор шаблонов (Input Mask Editor). Редактор шаблонов вызывается двойным щелчком мыши в поле значения свойства EditMask или командой Input Mask Editor контекстного меню.

Маска вводится в поле Input Mask, ее также можно выбрать из образцов в поле Sample Masks и затем изменить. Флажок Save Literal Characters управляет включением в маску литеральных символов, а поле Character for Blanks содержит символ, используемый для указания незаполненных позиций во входной строке. Поле Test Input позволяет проверить функционирование подготовленной маски. Маску также можно загрузить из файла с расширением dem, который выбирается в окне Open Mask File, открываемом нажатием кнопки Masks.

Подготовить маску можно и самому, но это более сложно. Удобно, воспользовавшись редактором маски, выбрать наиболее близкую к требуемой маску, а затем уже откорректировать ее вручную.

Компонент LabeledEdit

Компонент LabeledEdit представляет собой однострочный редактор с надписью и, в отличие от обычного однострочного редактора Edit, дополнительно имеет три свойства, управляющие надписью: EditLabel, LabelPosition и LabelSpacing.

Свойство EditLabel

Свойство EditLabel типа TBoundLabel указывает объект надписи, основные свойства которого (Caption, Alignment, AutoSize, Transparent, Color, Font) не отличаются от свойств рассмотренной ранее надписи Label.

Свойство LabelPosition

Свойство LabelPosition типа TLabeiPosition задает расположение надписи относительно поля редактирования и может принимать значения:

  • lpAbove (над полем) — по умолчанию;
  • lpBelow (под полем);
  • lpLeft (слева от поля);
  • lpRight (справа от поля).

Свойство LabelSpacing типа Integer указывает расстояние (в пикселах) между надписью и полем редактирования (по умолчанию 3).

Обработчик события onKeyPress

Для проверки информации, вводимой в редакторы, можно использовать обработчики событий нажатия клавиш, например обработчик события onKeyPress.

В следующем примере для редактора Edit1 установлено разрешение ввода только десятичных цифр:

В поле редактирования может содержаться одна строка без символа конца строки, поэтому при нажатии клавиши не выполняются никакие действия и в строку ничего не вводится. При необходимости программист должен сам написать код действий, связанных с нажатием клавиши . Чаще всего нажатие этой клавиши служит признаком окончания ввода информации в поле редактора, после чего следует перейти к другому элементу управления, т. е. передать ему фокус ввода, например, с помощью метода SetFocus или установки значения свойства ActiveControl.

Задать реакцию однострочного редактора на нажатие клавиши можно так:

Информация последовательно вводится в три поля, являющихся компонентами Edit1, Edit2 и Edit3. При окончании ввода в первое или второе поля нажатие клавиши автоматически активизирует очередное поле. Из третьего поля фокус ввода автоматически не передается. Передача фокуса ввода из разных полей реализована двумя способами: с использованием свойства ActiveControl формы и с помощью метода SetFocus.

Часто при окончании ввода в элемент редактирования и переходе к следующему (в порядке табуляции) элементу управления удобнее использовать разделяемый (общий) обработчик события, связанного с нажатием клавиши . Эта процедура должна быть общей для всех элементов редактирования и может выглядеть так:

При нажатии клавиши выполняется метод SelectNext, передающий фокус ввода следующему элементу управления. Процедура SelectNext (CurControl: TWinControl; GoForward, CheckTabStop: Boolean) имеет три параметра, из которых CurControl указывает оконный элемент управления, относительно которого выполняется передача фокуса. Параметр GoForward определяет направление передачи фокуса. Если его значение равно True, то фокус получает следующий элемент управления, в противном случае — предыдущий элемент управления. Параметр CheckTabStop определяет, нужно ли учитывать значение свойства TabStop элемента управления, который должен получить фокус. При значении True параметра элемент управления получит фокус, если его свойство Tabstop также имеет значение True.

Чтобы приведенная процедура вызывалась в качестве обработчика для всех трех редакторов, ее нужно включить в описание класса формы и указать в качестве обработчика события OnKeyPress:

Аналогично можно создать разделяемую процедуру, общую для нескольких компонентов (в том числе и разных, например, Edit и Memo), выполняющую обработку других событий.

Аналогичным образом выполняется обработка нажатия клавиши и других клавиш.

если edit пустое или =0 — вывести ошибку
Здравствуйте! Мне нужно сделать так, чтобы в Edit1 (туда нужно вводить размерность массива).

Если введён первый нуль в Edit,и не стоит запятая после него, выдать ошибку
Здравствуйте программисты! Подскажите пожалуйста, как Если введён первый нуль в Edit1,и не стоит.

Не учитывать пустые Edit
Как, в данном случае, не учитывать пустые Edit. То есть что бы программа сохраняла результаты.

Ребята подскажите, кто сталкивался с таким вопросом:
Для числового компонента Edit типа Integer, в Делфи7 нужно прописать условие, в котором нужно показать:

Если Edit пустой, то за этим последуют определённые инструкции.

Для символьного понятно: Edit1.text:=»
А вот как быть с числовым? Сразу скажу, что перевод в строку:IntToStr(Edit1.text):=», не вариант, потому что в условиях фигурируют только числовые компоненты Edit,если переведу в строку, то будет конфликт числовых со строковым.

Так все ведь много проще — достаточно запретить реакцию кнопки на нажатие, выставив его св-ву Enabled значение False, если содержимое того или иного Edit’а некорректно)

И сделать это удобнее всего в обработчиках событий OnChange и OnExit тех самых Edit’ов, содержимое которых напрямую влияет на возможность проведения тех или иных расчетов по нажатию кнопки.

Репутация: нет
Всего: нет

Если хоть один заполнен то выполнение кода.

Репутация: нет
Всего: 40

Код
procedure TForm1.Button1Click(Sender: TObject);
begin
if (edit1.text=») and (edit2.text=») and (edit3.text=») and (edit4.text=») and (edit5.text=») and (edit6.text=») and (edit7.text=») and (edit8.text=») and (edit9.text=») and (edit10.text=») then
begin
if MessageDlg(‘Вы не ввели ни одного параметра, продолжить. ‘, mtConfirmation, [mbOk, mbCancel], 0) = mrOK then qwe;
end
else
begin
qwe;
end;
end;

Репутация: нет
Всего: нет

Код
procedure TForm1.Button1Click(Sender: TObject);
begin
if (edit1.text=») and (edit2.text=») and (edit3.text=») and (edit4.text=») and (edit5.text=») and (edit6.text=») and (edit7.text=») and (edit8.text=») and (edit9.text=») and (edit10.text=») then
begin
if MessageDlg(‘Вы не ввели ни одного параметра, продолжить. ‘, mtConfirmation, [mbOk, mbCancel], 0) = mrOK t hen form2.show;
end
else
begin
form3.show;
end;
end.

Не ругается и ни чего не происходит!! что тут не так??

Репутация: 1
Всего: 78

gambit, у тебя код не заработает, так как процедура qwe стоит ниже по коду, чем процедура её вызвавшая.

iOS Lead Developer

Репутация: 3
Всего: 128

user posted image

Репутация: 1
Всего: 122

Код
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
for i:=1 to 10 do
if(Length(TEdit(FindComponent(‘Edit’ + IntToStr(i))).Text)=0)then
begin
ShowMessage(‘Enter some in ‘+IntToStr(i)+’ Edit’);
Exit;
end;
Form3.show;
end;
Цитата(DenRip @ 16.6.2007, 12:06 )
Не ругается и ни чего не происходит!! что тут не так??

Репутация: 3
Всего: 15

так дык. условие не правильно поставлено. , логику нужно развивать.

не and а or

Но я бы посоветовал код Rodman, (а если едитов будет 20, 30, 40, ты будешь все вручную писать. )

Репутация: нет
Всего: нет

Как
gambit, подсказал

Да это грамотно будет, спасибо!! бум использовать.
А теперь я позволю себе задать вам нескроный вопрос!

мне надо запретить ввод текста в едиты, только цифры, .
Во как.

Поскольку в моем коде пустые edit учитываются программой и программа удаляет еще и пробелы.

1 ответ 1

Вот так, например:

@Татьяна пожалуйста, не отвечайте комментариями типа «спасибо», они не несут ценной информации для других посетителей. Лучшая благодарность — стрелка вверх, галка принять, и то что вы стали чуточку умнее )

Я, поняла и в преть буду соблюдать эти правила. А умнее я стала :) благодаря вашей критике + подсказкам. Так что испытываю к Вам только уважение.

Edit представляет собой однострочное редактируемое тестовое поле. Оно помогает вводить или отображать текстовые строки, с его помощью можно сделать поле для ввода паролей для авторизации пользователей.

Центральное свойство компонента свойство Text, оно содержит отображаемую строку.

С помощью обработчика события onChange можно контролировать вводимый пользователем текст.

Edit2.Font.Size:=10+ length(Edit1.Text);
if length(Edit1.Text)>3 then Edit2.Color:=clYellow;
if length(Edit1.Text) 6 then Edit2.Color:=clLime;
Edit2.Text:=Edit1.Text;

Для автоматического преобразования вводимых букв в заглавные или прописные используйте свойство компонента CharCase:

Если есть вопросы, спрашивайте в комментариях, вам всегда помогут!

Читайте также:

      

  • Сообщение об одной из религий востока конфуцианство буддизм индуизм синтоизм
  •   

  • Казачьи песни забайкалья сообщение
  •   

  • Сообщение виды вышивки гладью
  •   

  • Санкт петербургский театр музыкальной комедии сообщение
  •   

  • Сообщение о работе в новогодние праздники образец

Понравилась статья? Поделить с друзьями:
  • Екатерина мурашова 10 главных родительских ошибок
  • Если бухгалтер допустил ошибку при начислении зарплаты
  • Ерс ошибка на фольксваген тигуан плохо едет
  • Екатерина кариди одна ошибка скачать бесплатно полную версию
  • Если memtest выдает ошибки