Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OnValidate

3.0K
28 февраля 2006 года
Inga
79 / / 27.12.2005
Подскажите, как правильно написать обработчик OnValidate для поля в таблице?
Например, поле имеет тип AsCurrency и содержит значения типа 78,53, а пользователь вводит туда ошибочно, например, дату типа 25.02.2006. Естественно при нажатии Enter возникает исключение. Как его правильно обработать в OnValidate поля, чтобы показать ShowMessage о некоренных данных и отменить ввод этих не правильных данных?
Cпасибо.
7.9K
28 февраля 2006 года
uki_
122 / / 26.01.2006
Может проще для того поля определить
DisplayFormat = ### ### ##0.00
EditFormat = ### ### ##0.00 ?

Для этого правый щелчок мышю на TTable.
Из popup меню выбырается Fields Editor.
В окне выбырается нужное поле.
F11.
В Object Inspectore устанавливаются значения.
3.0K
01 марта 2006 года
Inga
79 / / 27.12.2005
Цитата:
Originally posted by uki_
Может проще для того поля определить
DisplayFormat = ### ### ##0.00
EditFormat = ### ### ##0.00 ?

Для этого правый щелчок мышю на TTable.
Из popup меню выбырается Fields Editor.
В окне выбырается нужное поле.
F11.
В Object Inspectore устанавливаются значения.



Спасибо, вечером попробую (проект дома) последовать вашему совету.
А все-таки, в каких случаях можно использовать событие OnValidate с точки зрения его полезности?

7.9K
01 марта 2006 года
uki_
122 / / 26.01.2006
Цитата:
Originally posted by Inga
А все-таки, в каких случаях можно использовать событие OnValidate с точки зрения его полезности?

Если какая-то сложная проверка. Проверить формат введенных данных imho лучше через EditFormat. Но можно и c OnValidate.

 
Код:
void __fastcall TForm1::Table1PRICEValidate(TField *Sender)
{
  Currency c = StrToCurr(Sender->AsString);
  String s = FormatCurr("######0.##", c);
  if(s!=Sender->AsString)
  {
    throw Exception("Неправильное число. Повторите ввод.");
  }
}
3.0K
01 марта 2006 года
Inga
79 / / 27.12.2005
Цитата:
Originally posted by uki_
Если какая-то сложная проверка. Проверить формат введенных данных imho лучше через EditFormat. Но можно и c OnValidate.
 
Код:
void __fastcall TForm1::Table1PRICEValidate(TField *Sender)
{
  Currency c = StrToCurr(Sender->AsString);
  String s = FormatCurr("######0.##", c);
  if(s!=Sender->AsString)
  {
    throw Exception("Неправильное число. Повторите ввод.");
  }
}



Спасибо!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог