Шаг 39.
Работа с локальными БД в Delphi.
Режимы набора данных (окончание)

    На этом шаге мы рассмотрим организацию контроля за воодом данных.

    Вернемся к программе предыдущего шага. Допустим, необходимо предусмотреть запрет ввода отрицательного числа. Для этого можно написать такой обработчик события 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. Внешний вид приложения

    Созданное приложение можно взять здесь.

    На следующем шаге мы рассмотрим формирование набора данных из нескольких таблиц.




Предыдущий шаг Содержание Следующий шаг