Topic: Кнопка "сохранить" Как проверить заполнение обязательных полей

Здравствуйте.
Как включить проверку заполнен или нет ComboBox3 при нажатии Button1 (Action: Сохранить запись)? И если ComBobox3 не заполнен в форме, то выдать сообщение о том что нужно заполнить все поля.
В таблице поле для ComboBox3 необязательное для заполнения.

Re: Кнопка "сохранить" Как проверить заполнение обязательных полей

сделайте его обязательным и будет ок.

Re: Кнопка "сохранить" Как проверить заполнение обязательных полей

ivan wrote:

сделайте его обязательным и будет ок.

Если делать обязательным поле - то нужно в справочнике создать значение по умолчанию с id.
Поэтому не хотелось бы плодить в  справочнике ненужные записи - не заполнено, пусто, 0, и т.п.

Re: Кнопка "сохранить" Как проверить заполнение обязательных полей

Andrei wrote:
ivan wrote:

сделайте его обязательным и будет ок.

Если делать обязательным поле - то нужно в справочнике создать значение по умолчанию с id.
Поэтому не хотелось бы плодить в  справочнике ненужные записи - не заполнено, пусто, 0, и т.п.

Значение по умолчанию необходимо указывать только если БД уже создана (т.к. для уже существующих записей необходимо присвоить это значение, если в них вдруг пусто), поэтому можете удалить файл sqlite.db, а затем сделать это поле обязательным, тогда значение по умолчанию присваивать не нужно.


Либо просто использовать скрипт.

procedure frmAbonent_bOK_OnClick (Sender: TObject; var Cancel: boolean);
begin
    if frmAbonent.cbGroup.dbItemID = -1 then
    begin
        ShowMessage('Обязательное поле');
        frmAbonent.cbGroup.SetFocus;
        frmAbonent.cbGroup.DroppedDown := True;
        Cancel := True;
    end;
end;
Dmitry.

5 (edited by Andrei 2019-05-28 07:17:09)

Re: Кнопка "сохранить" Как проверить заполнение обязательных полей

Либо просто использовать скрипт.

procedure frmAbonent_bOK_OnClick (Sender: TObject; var Cancel: boolean);
begin
    if frmAbonent.cbGroup.dbItemID = -1 then
    begin
        ShowMessage('Обязательное поле');
        frmAbonent.cbGroup.SetFocus;
        frmAbonent.cbGroup.DroppedDown := True;
        Cancel := True;
    end;
end;

Добрый день.
Извиняюсь за невежество, хотелось бы уточнения по процедуре.
Правильно ли я понял:
Если id=-1 (т.е. не заполнено/пусто), то наводится фокус на Combobox и устанавливается курсор (разворачивается список). Курсор стоит до тех пор, пока в форму не  будет заполнен объект (ID=чему-то из выпавшего списка). После чего отрабатывает Сохранение в БД.
Если я правильно понял процедуру OnClick, то как дописать процедуру для другого обязательного поля формы if frmAbonent.cbTel.dbItemID = -1. Делаем в процедуре отдельный блок для каждого поля или можно как-то оптимизировать проверку незаполненных обязательных полей?

Re: Кнопка "сохранить" Как проверить заполнение обязательных полей

Все верно, -1, значит в ComboBox пусто.


Пример для нескольких ComboBox.

procedure frmAbonent_bOK_OnClick (Sender: TObject; var Cancel: boolean);
begin
    if frmAbonent.cbGroup.dbItemID = -1 then
    begin
        ShowMessage('Обязательное поле');
        frmAbonent.cbGroup.SetFocus;
        frmAbonent.cbGroup.DroppedDown := True;
        Cancel := True;
    end;
    
    if frmAbonent.ComboBox1.dbItemID = -1 then
    begin
        ShowMessage('Обязательное поле');
        frmAbonent.ComboBox1.SetFocus;
        frmAbonent.ComboBox1.DroppedDown := True;
        Cancel := True;
    end;

    if frmAbonent.ComboBox2.dbItemID = -1 then
    begin
        ShowMessage('Обязательное поле');
        frmAbonent.ComboBox2.SetFocus;
        frmAbonent.ComboBox2.DroppedDown := True;
        Cancel := True;
    end;
end;

Можно конечно оптимизировать и написать по другому, чтобы было меньше кода, но в этом есть смысл если у вас хотя бы 10 таких ComboBox-ов

Dmitry.

Re: Кнопка "сохранить" Как проверить заполнение обязательных полей

Дмитрий спасибо.
С текстовыми полями разобрался )))

if frmAddPint.edit5.Text = '' then
    begin
        ShowMessage('Обязательное поле');
        frmAddPint.edit5.SetFocus;
        Cancel := True;
    end;