1 (edited by d.v.aleinikov 2015-06-30 14:44:23)

Topic: Маска ввода - десятизначное число.

Доброго времени суток! Подскажите пожалуйста способ реализации маски ввода - десятизначное число. Необходимо чтобы в поле (в форме) вводилось десятизначное число, а при попытке сохранения другого числа (меньшего или большего) - выводилось необходимое сообщение - об ошибке или другое.
И еще один момент - если поле является обязательным, то при попытке сохранить его пустым выдается системное сообщение об ошибке. Как его отредактировать или создать свой текст сообщения об ошибке?

Заранее благодарен.

P.S. Необходима маска для ИНН. Поле является обязательным.

Re: Маска ввода - десятизначное число.

Приветствую,


пример, как контролировать количество цифр в поле ИНН
необходимо создать событие OnClick для кнопки с действием "Сохранить запись"

procedure frmAbonent_Button6_OnClick (Sender: string; var Cancel: boolean);
begin
    if Length(frmAbonent.edINN.Text)<>10 then
    begin
        ShowMessage('Поле ИНН должен содержать 10 чисел');
        Cancel := True;
    end;
end;

пример, как создать свой текст об ошибке для обязательного поля

procedure frmAbonent_Button6_OnClick (Sender: string; var Cancel: boolean);
begin
    if frmAbonent.edFirstName.Text='' then
    begin
        ShowMessage('Обязательное поле не заполнено.');
        Cancel := True;
    end;
end;
Dmitry.

Re: Маска ввода - десятизначное число.

Спасибо!

Re: Маска ввода - десятизначное число.

Применил, все работает. Возник второй вопрос: как во втором варианте прописать проверку нескольких полей одновременно и выводить только одно сообщение?

Re: Маска ввода - десятизначное число.

d.v.aleinikov wrote:

Применил, все работает. Возник второй вопрос: как во втором варианте прописать проверку нескольких полей одновременно и выводить только одно сообщение?

procedure frmAbonent_Button6_OnClick (Sender: string; var Cancel: boolean);
begin
    if (frmAbonent.edFirstName.Text='') or (frmAbonent.edLastName.Text='') then
    begin
        ShowMessage('Обязательные поля не заполнены.');
        Cancel := True;
    end;
end;
Dmitry.

Re: Маска ввода - десятизначное число.

Хочу немного оптимизировать под свой проект. Есть необходимость в прерывании процедуры на определенном этапе (в моем случае на первом этапе), не дожидаясь ее исполнения до конца.
Вот что у меня есть:

procedure frmDogovor_knpkAddDog_OnClick (Sender: string; var Cancel: boolean);
begin
    if (frmDogovor.addVidDog.Text='') or (frmDogovor.addKontragent.Text='') or (frmDogovor.addINN.Text='') then
    begin
        ShowMessage('Обязательные поля не заполнены!');
        Cancel := True;
    end;
    if Length(frmDogovor.addINN.Text)<>10 then
    begin
         ShowMessage('Поле "ИНН" должно содержать 10 знаков');
         Cancel := True;
    end;
end;

7 (edited by d.v.aleinikov 2015-07-02 11:34:28)

Re: Маска ввода - десятизначное число.

И еще один вопрос: как изменить надпись в окне сообщения? Картинку прилагаю
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=1127&amp;download=0

Post's attachments

Attachment icon Screenshot-115.jpg 129.78 kb, 291 downloads since 2015-07-02 

Re: Маска ввода - десятизначное число.

d.v.aleinikov

procedure frmDogovor_knpkAddDog_OnClick (Sender: string; var Cancel: boolean);
begin
    if (frmDogovor.addVidDog.Text='') or (frmDogovor.addKontragent.Text='') or (frmDogovor.addINN.Text='') then
    begin
        ShowMessage('Обязательные поля не заполнены!');
        Cancel := True;
        Exit;
    end;

    if Length(frmDogovor.addINN.Text)<>10 then
    begin
         ShowMessage('Поле "ИНН" должно содержать 10 знаков');
         Cancel := True;
    end;
end;


Изменить заголовок сообщения к сожалению пока нельзя.

Dmitry.

Re: Маска ввода - десятизначное число.

Спасибо!

10 (edited by d.v.aleinikov 2015-07-03 13:27:25)

Re: Маска ввода - десятизначное число.

Продолжение следует )). Сказывается отсутствие опыта в программировании )). Как можно, в таком случае, написать скрипт, если ИНН может состоять только из 10 или 12 знаков? Все иные варианты должны выдавать ошибку. А при вводе 10-значного или 12-тизначного числа - производилась бы запись.


P.S. После того как покумекал, вот что придумал и таки работает. Может можно проще написать?

procedure frmDogovor_knpkAddDog_OnClick (Sender: string; var Cancel: boolean); // проверка на заполнение обязательных полей и соответствие ИНН количеству введенных символов
begin
    if Length(frmDogovor.addINN.Text)<10 then
        begin
            ShowMessage('Не верный ИНН!');
            Cancel := True;
            Exit;
        end;
    if Length(frmDogovor.addINN.Text)=10 then
        begin
            Exit;
        end;
    if Length(frmDogovor.addINN.Text)<>12 then
        begin
            ShowMessage('Не верный ИНН!');
            Cancel := True;
        end;
end;

Re: Маска ввода - десятизначное число.

попробуйте так

procedure frmDogovor_knpkAddDog_OnClick (Sender: string; var Cancel: boolean); // проверка на заполнение обязательных полей и соответствие ИНН количеству введенных символов
begin
    if (Length(frmDogovor.addINN.Text)<>10) and (Length(frmDogovor.addINN.Text)<>12) then
        begin
            ShowMessage('Не верный ИНН!');
            Cancel := True;
        end;
end;
Dmitry.

Re: Маска ввода - десятизначное число.

Помогло!

Re: Маска ввода - десятизначное число.

Надпись в сообщении Showmessage можно изменить просто переименовав файл названия своего проекта. К примеру у вас (reest) заменить на (Внимание! или Ошибка!). Разумеется подпись будет иметь смысл только при наличии одного всплывающего окна или нескольких однотипных., потому и фразу лучше выбирать общего характера).

Evgeniy