Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 21
1

Перехват ошибки, или как деактивировать все едиты одновременно

11.05.2010, 00:56. Показов 1039. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
на форме есть лукапкомбобокс и много много эдитов, есл не трогая его попытаться сохранить данные через эдиты выходит ошибка типа "необходимо наличие связной записи в такой-то таблице". НО это то я понимаю зачем=)
на сохранении я перехватываю ошибку
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm3.Button1Click(Sender: TObject);
begin
if datamodule2.std.Modified then
  try
  datamodule2.std.post;
  except
  showmessage('Определите группу для студента')
  end;
 
datamodule2.adoquery1.Requery;
close;
 
end;
, ели исключение возникает сообщение-то показывается, НО ошибка следом за ним тоже указывается! нужно его вот убрать=)

есть другой пусть решения проблемы: вырубить все эдиты пока не будет выбрана та самая "связная запись" в локапкомбобокс. как в этом случае обращаться ко всем эдитам сразу(DBEdit-ам есл есть разница в данном случае) чтобы "едит.энаблед:=фалс"? ну и потом обратно включать как-только будет выбрана запись.. просто эдитов предполагается много, и не хотелось бы прописывать их всех=)) должен быть более рациональный выход))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2010, 00:56
Ответы с готовыми решениями:

Флажки: как снимать все одновременно или же все вместе в определенное время?
Всем привет! 8-) Есть такое чудо Private Sub Вибув_ла_Click() If Вибув_ла.Value = True Then ...

Условие для ошибки или перехват
Как сделать условие, если произошла ошибка например. Допустим если произойдёт ошибка, нужно вместо...

Как деактивировать или отключить несколько строк в таблице SQL Server?
Можно ли деактивировать или отключить несколько строк в таблице SQL Server, чтобы запросы в...

Перехват ошибки dataGridView когда заполнены не все поля строки
Я добавил на форму dataGridView и добавил через источник данных таблицу с тремя столбцами. Во всех...

6
50 / 49 / 16
Регистрация: 12.03.2009
Сообщений: 133
11.05.2010, 08:48 2
Цитата Сообщение от malayka Посмотреть сообщение
на сохранении я перехватываю ошибку
Delphi
1
2
3
4
5
6
7
8
procedure TForm3.Button1Click(Sender: TObject);
begin
if datamodule2.std.Modified then
  try
  datamodule2.std.post;
  except
  showmessage('Определите группу для студента')
  end;
, ели исключение возникает сообщение-то показывается, НО ошибка следом за ним тоже указывается! нужно его вот убрать=)
Вы скорее всего ошибку наблюдается в режиме отладки(т.е. запускаете программу из под дельфи), попробуйти запустить программу одельно, путем запуска exe-шника. Тогда вы увидите только сообщение
Delphi
1
showmessage('Определите группу для студента')
1
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 21
11.05.2010, 12:15  [ТС] 3
не в этом дело, даже с ехешника стандартную ошибку показывало. на другом форуме подсказали, что нужно дописать exit и все заработало:
Delphi
1
2
3
4
5
6
7
8
 
...  
  try
  datamodule2.std.post;
  except
  showmessage('Определите группу для студента');
  exit;
  end;
а что касается второй части вопроса, можно как-то решить?)
0
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,564
11.05.2010, 12:25 4
Delphi
1
2
for i:=0 to controlcount-1 do
if (controls[i] is tedit) then (controls[i] as tedit).enabled:=false
1
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 21
11.05.2010, 12:27  [ТС] 5
все верно, уже разобрался)
0
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 21
11.05.2010, 16:18  [ТС] 6
хм.. возник вопрос) как этоже самое запускать из другой формы? допустим едиты на одной форме, а событие на котором прописываешь на другой
0
50 / 49 / 16
Регистрация: 12.03.2009
Сообщений: 133
12.05.2010, 08:27 7
то же самое? всмысле те же самые эдиты? и какое событие происходит на другой форме ?

по идеи можно перечислить все компоненты через (controls[i] is tedit) на любой форме любого компонента, наследника TWinControl так как у них есть свойство controls. Для этого необходимо указать parent-а этих TEdit-ов(parent - родитель, т.е. тот контрол(окно которое может получить фокус) на котором отображаются компоненты которые ему принадлежат) в твоем случае это скорее всего твоя первая форма.

Delphi
1
2
for i:=0 to From3.controlcount-1 do
if (From3.controls[i] is tedit) then (From3.controls[i] as tedit).enabled:=false
этот код можно вызвать из любой формы, и все эдиты которые расположены на Form3 перейдут в в режим disable
1
12.05.2010, 08:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2010, 08:27
Помогаю со студенческими работами здесь

Можно ли деактивировать форму, при этом не деактивировать MainMenu и PopupMenu?
Здравствуйте. Проблема такая: мне нужно чтобы нельзя было кликать по форме, но при этом можно было...

Не могу деактивировать или изменить свой плагин в админке?
Активируется плагин на ура, а вот деактивировать по ссылкам или "изменить" не получается,...

Перехват интентов или push. Возможно ли и как?
Добрый день. Есть приложение которая получает какую то информацию от сервера, наверно push...

ошибки или всё не правильно.
вводится текст.разбивается на слова.....и если слова не одинаковы то выводятся..... ничего не...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru