Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 28 мар 2024, 18:02

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Запретить переход к записи
СообщениеДобавлено: 31 янв 2019, 14:50 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
Добрый.
Грид связан с memtableeh.
Можно ли как-то, при попытке перейти на запись, делать какую-то проверку, и в случае неуспеха оставить текущую запись, как то так? Вроде события BeforeChange с возможностью отмены.

ЗЫ. А еще очень не хватает OnValidate на ячейке грида, с запретом выхода\сохранения.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Запретить переход к записи
СообщениеДобавлено: 05 фев 2019, 02:56 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.

Если во время проверки DataSet находится в режиме редактирования
то можно использовать метод MemTblEh1.BeforePost и вызывать исключение в случае неконсистентности в записи.

Код:
procedure TForm1.MemTblEh1BeforePost(DataSet: TDataSet);
begin
  if MemTblEh1.FieldByName('Name').AsString = '' then
    raise Exception.Create('Field Name should not be empty');
end;


Для проверки значения при записи из редактора текста в поле
используйте событие TField.OnValidate
Код:
procedure TForm1.MemTblEh1NAMEValidate(Sender: TField);
begin
  if Sender.AsString = '' then
    raise Exception.Create('Field Name should not be empty');
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Запретить переход к записи
СообщениеДобавлено: 07 фев 2019, 09:11 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
raise Exception - это понятно. Простите, видимо неточность формулировки вопроса. Имел ввиду, можно ли подобное организовать без выбрасывания исключений?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Запретить переход к записи
СообщениеДобавлено: 07 фев 2019, 09:21 
Не в сети

Зарегистрирован: 24 ноя 2012, 12:58
Сообщений: 32
А почему Вы так не любите использовать исключения в программе?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Запретить переход к записи
СообщениеДобавлено: 07 фев 2019, 15:27 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
Не хотелось бы разводить тут холивары и тп на эту тему, столько уже копий сломано об это. Считаю неверным использовать исключения для управления ходом выполнения: накладные расходы, множественность точек выхода, передача управления в произвольную точку, ну и тд...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Запретить переход к записи
СообщениеДобавлено: 08 фев 2019, 08:32 
Не в сети

Зарегистрирован: 24 ноя 2012, 12:58
Сообщений: 32
Все что Вы сказали крайне сомнительно и не подтверждено практикой. Но я согласен с Вами что здесь нечего
разводить холивар на эту тему. Каждый живет (и программирует) как хочет и как может.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Запретить переход к записи
СообщениеДобавлено: 08 фев 2019, 17:08 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.

Чтобы исключение не отображалось на экране в виде диалога с сообщением используйте "тихое" исключение EAbort или процедуру Abort.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB