На этом шаге мы рассмотрим организацию контроля за воодом данных.
Вернемся к программе предыдущего шага. Допустим, необходимо предусмотреть запрет ввода отрицательного числа. Для этого можно написать такой обработчик события OnKeyPress для компонента DBEdit2 (компонент, с которым мы связали поле Kolvo).
procedure TForm1.DBEdit2KeyPress(Sender: TObject; var Key: Char); begin if not(key in ['0'..'9',#8]) then key:=chr(0); end;
Событие OnKeyPress наступает, когда пользователь нажимает клавишу. Если была нажата клавиша, отличная от цифры, или Backspace, то мы отменяем ввод символа.
Для написания качественного приложения, необходимо просчитывать такие ситуации.
В заключение, дополним созданное приложение двумя процедурами. Опишите две процедуры EnabledVisual и DisabledVsual.
procedure EnabledVisual; begin Form1.DBLookupComboBox1.Enabled:=True; Form1.DBEdit1.Enabled:=True; Form1.DBEdit2.Enabled:=True; Form1.DBEdit3.Enabled:=True; end; procedure DisabledVisual; begin Form1.DBLookupComboBox1.Enabled:=False; Form1.DBEdit1.Enabled:=False; Form1.DBEdit2.Enabled:=False; Form1.DBEdit3.Enabled:=False; end;
Измените обработчик события OnClick компонентов TButton таким образом, что при выполнении условия, кроме вызова того или другого метода для Table2, вызывалась бы процедура:
Например:
procedure TForm1.InsertButtonClick(Sender: TObject); begin if Table2.State = dsBrowse then begin Table2.Insert; EnabledVisual; end; end;
Свойству Enabled компонентов TDBEdit и TDBLookupComboBox придайте значение False.
Запустите программу. Когда НД находится в режиме dsBrowse, визуальные компоненты для работы с полями недоступны, но если мы нажмем кнопку Добавить или Изменить, то вызывается процедура EnabledVisual, и компоненты становятся доступными.
Рис.1. Внешний вид приложения
Созданное приложение можно взять здесь.
На следующем шаге мы рассмотрим формирование набора данных из нескольких таблиц.