Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
А не случалось ли вам выводить для пользователя сообщения об ошибках? Кажется -что может проще? Правильно кажется. Только бывает возможностей для него ошибиться – море, а вы один. Например, заполняет он базу, полей много, и обязательных для заполнения среди них тоже много. И ведь он забудет че ниб заполнить. И захочет шоб прога сама ему подсказала, че именно он забыл.
Слава Борланду, он уже все написал за нас – если у необходимого объекта TField свойство Required = true, то при его незаполнении вылетает месага типа “Field ‘Bonus’ must have a value” – пожалуйста, дополняйте именно это поле и работайте дальше. И все бы ничего, но попадаются еще юзеры, которые вместо того, шоб выучить быстренько английский, звонят вам и давай: …а твоя программа выдала какую-то ошибку, диктую по буквам – эф – латинское, и – белорусское, е – русское и т.д. Неплохой вариант – выдать ему MessageBox(Handle, PChar('Не все поля заполнены'), PChar('Ошибка при заполнении'), 0) и пускай, нерадивый, пробежит еще разок глазками по форме. Недостаток этого подхода в том, что нужно писать кучу дополнительного кода (try, except, end, MessageBox с параметрами – уже больше 5 слов!!!), да для каждого датасета, да еще переделывая то, что уже давно написано. (В русифицированной Делфе, все это может быть на русском и выскакивает – не знаю, но что делать если вы как и я не доверяете русифицированным продуктам). Я решил так – раз уж Делфи поставляется с исходниками, почему бы не подправить их как надо и забыть про эти стандартные месаги по крайней мере до выхода нового релиза. Во первых надо найти где эти самые мессаги определены. Для выше рассмотренного примера надо найти директорию $(DELPHI)sourcevcl; и в DBConsts.pas исправить ресурс SFieldRequired с 'Field ''%s'' must have a value'; на на что ниб типа SFieldRequired = 'А ну ка заполни поле''%s'' чем-ниб подходящим’ (вместо '%s''вставляется название поля).
(Можно так изменить значения всех ресурсов, но среди них много тех, что
появляются (или должны появляться) только в режиме разработки т.е. для
вас и если вы разработали парочку другую проектов, то и так поймете, что
они значат. А что ниб вроде SDeleteRecordQuestion = 'Delete record?' –
подтверждение перед удалением строки заменить будет совсем не лишним.)
После этого модуль DBConsts компилируем (например подключив его к любому
левому приложению) и полученным DBConst.dcu заменяем такой же в
директории $(DELPHI)lib
Вот почти и все. Месага – уже понятна и в любых ваших дальнейших
проектах не нужно писать ни строчки лишнего кода. Название поля в ней
вставляется из свойства DisplayLabel этого самого поля, так что его тоже
следует набрать на русском (немецком, испанском). Напомню только –
чтобы сообщение вываливалось до того. как произойдет попытка сохранить
запись в саму БД, Required нужного нам поля должно быть true (если вы
явно определяете список полей ч/з Field Editor и в БД поле помечено как
обязательно – Required включится автоматом, а если вы сначала написали
весь проект, а потом стали помечать обязательные поля – то надо будет
включить ручками).
Еще один момент. В lookup – ских полях реальное изменение происходит в
полях, определенных как внешние ключи, т.е. юзеру кажется, что он меняет
поле «Имя работника», а на деле заносится код в обязательное поле
«emploee_id». Здесь нужно свойству DisplayLabel как раз поля
«emploee_id» присвоить «Имя работника» - все равно это поле обычно нигде
не показывается.
P.S.
По такой схеме кстати можно поменять многие надписи: Yes, No, Cancel… на кнопках и Warning, Error… на формах, показываемых с помощью MessageDlg() – Consts.pas, сообщения сокетов - ScktCnst.pas… , константы сторонних разработчиков и тд и тп.