void __fastcall TForm1::Table1PRICEValidate(TField *Sender)
{
Currency c = StrToCurr(Sender->AsString);
String s = FormatCurr("######0.##", c);
if(s!=Sender->AsString)
{
throw Exception("Неправильное число. Повторите ввод.");
}
}
OnValidate
Например, поле имеет тип AsCurrency и содержит значения типа 78,53, а пользователь вводит туда ошибочно, например, дату типа 25.02.2006. Естественно при нажатии Enter возникает исключение. Как его правильно обработать в OnValidate поля, чтобы показать ShowMessage о некоренных данных и отменить ввод этих не правильных данных?
Cпасибо.
DisplayFormat = ### ### ##0.00
EditFormat = ### ### ##0.00 ?
Для этого правый щелчок мышю на TTable.
Из popup меню выбырается Fields Editor.
В окне выбырается нужное поле.
F11.
В Object Inspectore устанавливаются значения.
Цитата:
Originally posted by uki_
Может проще для того поля определить
DisplayFormat = ### ### ##0.00
EditFormat = ### ### ##0.00 ?
Для этого правый щелчок мышю на TTable.
Из popup меню выбырается Fields Editor.
В окне выбырается нужное поле.
F11.
В Object Inspectore устанавливаются значения.
Может проще для того поля определить
DisplayFormat = ### ### ##0.00
EditFormat = ### ### ##0.00 ?
Для этого правый щелчок мышю на TTable.
Из popup меню выбырается Fields Editor.
В окне выбырается нужное поле.
F11.
В Object Inspectore устанавливаются значения.
Спасибо, вечером попробую (проект дома) последовать вашему совету.
А все-таки, в каких случаях можно использовать событие OnValidate с точки зрения его полезности?
Цитата:
Originally posted by Inga
А все-таки, в каких случаях можно использовать событие OnValidate с точки зрения его полезности?
А все-таки, в каких случаях можно использовать событие OnValidate с точки зрения его полезности?
Если какая-то сложная проверка. Проверить формат введенных данных imho лучше через EditFormat. Но можно и c OnValidate.
Код:
Цитата:
Originally posted by uki_
Если какая-то сложная проверка. Проверить формат введенных данных imho лучше через EditFormat. Но можно и c 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("Неправильное число. Повторите ввод.");
}
}
{
Currency c = StrToCurr(Sender->AsString);
String s = FormatCurr("######0.##", c);
if(s!=Sender->AsString)
{
throw Exception("Неправильное число. Повторите ввод.");
}
}
Спасибо!