1 (edited by savage 2014-08-13 23:23:26)

Topic: [Решено] сообщения об ошибках на английском

Иногда при работе с созданными программами возникают предупреждения пользователей, например, о необходимости заполнения те-иных полей (тип "обязательные"). Эти предупреждения выскакивают на английском языке, что может поставить в тупик какого-нить пользователя. Можно ли добиться, чтобы они были на русском?

с уважением,

Виталий

Re: [Решено] сообщения об ошибках на английском

Можете воспользоваться скриптом, используя событие OnClick от кнопки, отвечающую за сохранение записи,

пример:

 procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
 begin
    if Form1.Edit1.Text='' then
    begin
       ShowMessage('Незаполнено обязательное поле.'); // ваше сообщение
       Cancel := True; // отменяем действие кнопки 
    end;
 end;
Dmitry.

Re: [Решено] сообщения об ошибках на английском

спасибо!

Re: [Решено] сообщения об ошибках на английском

DriveSoft wrote:

Можете воспользоваться скриптом, используя событие OnClick от кнопки, отвечающую за сохранение записи,

пример:

 procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
 begin
    if Form1.Edit1.Text='' then
    begin
       ShowMessage('Незаполнено обязательное поле.'); // ваше сообщение
       Cancel := True; // отменяем действие кнопки 
    end;
 end;

DriveSoft, а если на 1 кнопку завязано 2-3 поля на форме ввода? Как реализовать это дело через OR?
Пробовал через

 procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
 begin
    if Form1.Edit1.Text='' OR Form1.Edit2.Text='' then
    begin
       ShowMessage('Незаполнено обязательное поле.'); // ваше сообщение
       Cancel := True; // отменяем действие кнопки 
    end;
 end;

не сработало

Re: [Решено] сообщения об ошибках на английском

savage
Думаю просто не хватает скобок

 procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
 begin
    if (Form1.Edit1.Text='') OR (Form1.Edit2.Text='') then
    begin
       ShowMessage('Незаполнено обязательное поле.'); // ваше сообщение
       Cancel := True; // отменяем действие кнопки 
    end;
 end;

либо можно проверять каждое поле отдельно с отдельными сообщениями

 procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
 begin
    if (Form1.Edit1.Text='') then
    begin
       ShowMessage('Незаполнено поле 1'); // ваше сообщение
       Cancel := True; // отменяем действие кнопки 
    end;

    if (Form1.Edit2.Text='') then
    begin
       ShowMessage('Незаполнено поле 2'); // ваше сообщение
       Cancel := True; // отменяем действие кнопки 
    end;
 end;
Dmitry.

6 (edited by savage 2014-08-13 23:22:41)

Re: [Решено] сообщения об ошибках на английском

DriveSoft, попробовал вариант 1 - работает!
Спасибо за помощь!

7 (edited by savage 2014-08-17 17:41:05)

Re: [Решено] сообщения об ошибках на английском

Еще обнаружил такой глюк по работе с локализацией:
1. при добавлении новой книги, справа от грида "История книги" нажать кнопку "новая" и открыть форму "История чтения книги"
2. пробуем добавить Читателя через кнопку "Новая" - выскакивает предупреждение о незаполненных полях, хотя это сообщение "висит" на кнопке "ОК"
Кнопки имеют разные имена, но располагаются на одной и той же форме.
Что я делаю не так?
После того, как сменил Действие с "Новой записи" на "Показать форму" , этот баг ушел, но появился другой. Теперь при нажатии на кнопку "Новая", появляется форма с заполненными полями, блин...

Прикрепил свой файл (вернул в нем Действие на "Новая запись"). Логин - vik, Пароль -  vik
с уважением,
savage

Post's attachments

Attachment icon MyLibrary.zip 325.41 kb, 547 downloads since 2014-08-17 

Re: [Решено] сообщения об ошибках на английском

Добавил скрин для наглядности

Post's attachments

Attachment icon Screen-2014-08-17_20-37.png 307.45 kb, 313 downloads since 2014-08-17 

Re: [Решено] сообщения об ошибках на английском

savage
Дело в том, что когда вы добавляете сразу же читателя для новой книги, то программа пытается сохранить для начала книгу, чтобы можно было привязать к ней читателя, поэтому автоматически нажимается кнопка OK и выполняется ваш скрипт проверки.


можно завести глобальную переменную, которая будет устанавливать значение при нажатии на кнопке, которая предназначена для добавления нового читателя, и проверять эту переменную в скрипте кнопки OK, чтобы не производить проверку в данном случае.


либо сперва заполнять информацию о книге и только потом добавлять читателя.

Dmitry.

Re: [Решено] сообщения об ошибках на английском

DriveSoft, а можно просто повесить на кнопку модифицированный скрипт а-ля "Новая запись", только без автоматическего нажатия кнопки OK?

Re: [Решено] сообщения об ошибках на английском

savage
к сожалению не понял, что вы имеете ввиду )

Dmitry.

Re: [Решено] сообщения об ошибках на английском

DriveSoft, вечер добрый.
"программа пытается сохранить для начала книгу, чтобы можно было привязать к ней читателя, поэтому автоматически нажимается кнопка OK и выполняется ваш скрипт проверки." - я имел в виду "отключить" нажатие кнопки ОК на время добавления Читателя

Re: [Решено] сообщения об ошибках на английском

savage
отключить на время кнопку ОК не получиться, как я сказал программа пытается сохранить для начала книгу, чтобы можно было привязать к ней читателя, можно настроить скрипт таким образом, чтобы он не производил проверку в этот момент.


примерное решение я уже написал выше:

можно завести глобальную переменную, которая будет устанавливать значение при нажатии на кнопке, которая предназначена для добавления нового читателя, и проверять эту переменную в скрипте кнопки OK, чтобы не производить проверку в данном случае.

Dmitry.

14 (edited by savage 2014-08-20 22:12:51)

Re: [Решено] сообщения об ошибках на английском

можно завести глобальную переменную, которая будет устанавливать значение при нажатии на кнопке, которая предназначена для добавления нового читателя, и проверять эту переменную в скрипте кнопки OK, чтобы не производить проверку в данном случае.

Пробовал объявлять, не получилось ничего путного...

var
   sBlock: string = '';

procedure AddReader_BtNewDep_OnClick (Sender: string; var Cancel: boolean);
begin
            sBlock:='1';
end;

procedure AddReader_BtAddReaderOK_OnClick (Sender: string; var Cancel: boolean);
begin
       if  sBlock=''  then
         begin
            if (AddReader.Edit1.Text='') OR (AddReader.Edit2.Text='') OR (AddReader.ComboBox1.Text='') then
              begin
                ShowMessage('Не все поля заполнены!'); // ваше сообщение
                 Cancel := True; // отменяем действие кнопки
              end;
         end;
end;

Выдает "No data to add" ...

PS заранее извиняюсь за безграмотность - еще не брался за изучение языка запросов

Re: [Решено] сообщения об ошибках на английском

savage
Скачайте еще раз бета версию, исправил чтобы данное сообщение не появлялось.
https://www.dropbox.com/s/4qdlk4pouldrz … 201.43.zip


код думаю верный, только в конце я добавил строчку sBlock:='';
иначе проверка никогда не будет работать если нажали на кнопку BtNewDep хотя бы раз

var
   sBlock: string = '';

procedure AddReader_BtNewDep_OnClick (Sender: string; var Cancel: boolean);
begin
            sBlock:='1';
end;

procedure AddReader_BtAddReaderOK_OnClick (Sender: string; var Cancel: boolean);
begin
       if  sBlock=''  then
         begin
            if (AddReader.Edit1.Text='') OR (AddReader.Edit2.Text='') OR (AddReader.ComboBox1.Text='') then
              begin
                ShowMessage('Не все поля заполнены!'); // ваше сообщение
                 Cancel := True; // отменяем действие кнопки
              end;
         end;
 
       sBlock:=''; 
end;
Dmitry.

Re: [Решено] сообщения об ошибках на английском

DriveSoft,

с этой версией дистра что-то не все в порядке - даже без ввода данного скрипта ругается при попытке работы с формой AddReader  - см. прикрепленный файл

Post's attachments

Attachment icon Читатель.jpg 12.17 kb, 365 downloads since 2014-08-21 

Re: [Решено] сообщения об ошибках на английском

Проверил дома - та же самая ерунда. Выскакивает предупреждение, аналогичное тому, что прикрепил выше.
Прикрепил прогу с обновленным скриптом (старый архив удалил).

Post's attachments

Attachment icon MyLibrary.zip 332.71 kb, 542 downloads since 2014-08-21 

Re: [Решено] сообщения об ошибках на английском

savage
в структуре базы данных, в таблице Books, поле bookname помечено как обязательное для ввода, поэтому выскакивает ошибка, т.к. как я уже говорил, перед созданием читателя книги, система обязана сохранить данные о книге.


Просто не делайте в структуре базы данных поле bookname обязательным  для ввода, а его обязательное заполнение контролируйте скриптом.

Dmitry.

19 (edited by savage 2014-08-21 19:58:14)

Re: [Решено] сообщения об ошибках на английском

DriveSoft wrote:

savage
в структуре базы данных, в таблице Books, поле bookname помечено как обязательное для ввода, поэтому выскакивает ошибка, т.к. как я уже говорил, перед созданием читателя книги, система обязана сохранить данные о книге.


Просто не делайте в структуре базы данных поле bookname обязательным  для ввода, а его обязательное заполнение контролируйте скриптом.

Хм, похоже, это касается и таблицы Readers. Самое смешное, что на уровне скриптов я это уже ранее сделал..

DriveSoft, спасибо огромное.