Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > TFibDataSet обмирает OnSetText


Автор: Delphist 27.7.2006, 16:31
В FibDataSet'е на определенное поля наложен обработчик события OnSetText в котором ведется проверка вводимых данных.
Код

  if Text = (определенный критерий) then
    Sender.AsFloat := Text;
    FibDataSet.Post;
  else
    MessageBox(Self.Handle, 'Не правильно введены данные', 'Ошибка', MB_ICONERROR or MB_OK)

Проблема в том, что после того как пользователь ввел данные и нажамал Enter поле все равно остается в режиме редактирования.
Как с этим бороться? 

Автор: superVad 27.7.2006, 17:24
перейди на запись вперед потом назад
Next Prior

или открой и закрой датасет

хотя это все извращение, но в голову больше ничего не приходит, вообще после Post должно выходить из редактирования (на практике не проверял) 

Автор: Delphist 28.7.2006, 07:49
Цитата(superVad @ 27.7.2006,  17:24)
перейди на запись вперед потом назад
Next Prior

или открой и закрой датасет

хотя это все извращение, но в голову больше ничего не приходит, вообще после Post должно выходить из редактирования (на практике не проверял)

Честно говоря вот это: "перейди на запись вперед потом назад Next Prior".
я уже знал, но это извращение. 

Автор: Alex 30.7.2006, 23:12
Использовать нужные события нужно:
Цитата

TField.OnValidate Event
 
Occurs just before the data is written to the record buffer.
 
Class 
TField 

Syntax 


[Delphi] property OnValidate: TFieldNotifyEvent;


Description 
Write an OnValidate event handler to validate changes made to the data in the field, just before the data is written to the current record buffer. The EditMask property allows validation of the data on a character by character basis while it is being entered by the user. OnValidate allows an application to validate the data as a whole. 
When the value of a field component is assigned programmatically, validation by the EditMask is bypassed, since there is no data-aware control to enforce adherence to the mask. OnValidate allows an application to validate such data before it is posted to the database table.
 
To reject the current value of the field from the OnValidate event handler, raise an exception.
 
When writing the value of a field to the current record buffer, the following steps occur:
 
1The OnValidate event handler is called to validate the data. 
2If the OnValidate event handler does not raise an exception, the data is written to the current record buffer. 
3If writing the data does not raise an exception, the OnChange event handler is called to allow a response to the change.

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)