Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Язык проекта и его смена v2  (Прочитано 208 раз)

Серега

  • Старожил
  • ****
  • Сообщений: 275
    • Просмотр профиля
Язык проекта и его смена v2
« : 29 Октября 2025, 10:57:31 »
Добрый день!
Произошли ли какие либо изменения по теме https://simple-scada.com/forum/index.php?topic=1465.msg11009#msg11009, особенно в части сообщений?
Ну и в принципе 2 вопроса:
1. Можно ли получить доступ на изменение текста сообщения или рассматривается такая возможность в будущем?
2. В проекте есть много объектов со свойствами. Например Text1, Text2, Field1 и т.д. Они  все типа TM_Control и имеют  свойства например H. Но вот само ID объекта, вот это Text1 или Field1 как то можно получить, хотя бы для чтения? Или это только для внутреннего Вашего использования и не рассматривается вопрос о предоставлении какого либо доступа для пользователей?
Жду вопросов и предложений!

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3194
    • Просмотр профиля
    • Simple-Scada
Re: Язык проекта и его смена v2
« Ответ #1 : 30 Октября 2025, 17:21:33 »
Здравствуйте.

Менять текст сообщений нельзя. Они всегда отображаются в том же виде, в котором были добавлены в БД.

Цитировать
В проекте есть много объектов со свойствами. Например Text1, Text2, Field1 и т.д. Они  все типа TM_Control и имеют  свойства например H. Но вот само ID объекта, вот это Text1 или Field1 как то можно получить, хотя бы для чтения? Или это только для внутреннего Вашего использования и не рассматривается вопрос о предоставлении какого либо доступа для пользователей?
Имя можно получить обратившись к свойству Name. Но зачем? Если нужно сравнить указатель с каким-то экземпляром объекта, то гораздо эффективнее сравнивать напрямую:
Код: (delphi)
if Sender = Text1 then
но такое может пригодиться скорее всего только в каком-то странном коде.

Серега

  • Старожил
  • ****
  • Сообщений: 275
    • Просмотр профиля
Re: Язык проекта и его смена v2
« Ответ #2 : 31 Октября 2025, 11:16:49 »
Просто возникла идея перевода текста для элемента "Текст" и подсказок для всех остальных элементов.
Можно создать файл, где в строке прописать что то на подобии:
ID;       текст на рус;текст на анг.;подсказка на рус;    подсказка на анг
Text1;  Старт;          Start;            Готовность к старту;Start ready
Field23;x;                x;                  Введите значение;   Enter value
А дальше (для сокращения кода) узнаем ID элемента и если он есть в списке меняем в зависимости от языка. Как бы хотелось в пару строк вложиться. Но пока работает только прямое присваивание.
Глобальный модуль:
Код: (delphi)
interface

procedure OpenFileLang(nameFile:string);

implementation

procedure OpenFileLang(nameFile:string);
begin
  TextFileOpen(nameFile, '', fomReset, fcpUTF8);
  //как бы прописываем все элементы у которых надо перевести подсказки и текст.
  Text1.Text := TextFileReadLn;
  Text1.Hint := TextFileReadLn;
  Text2.Text := TextFileReadLn;
  Text2.Hint := TextFileReadLn;
  TextFileClose;
end;

end.
Универсальный, но надо предварительно в строгом соответствии подготовить соответствующие файлы:
Код: (delphi)
begin
  if not FileExists('lang_ru.txt', '') then Exit;
  if not FileExists('lang_eng.txt', '') then Exit;
  if not FileExists('lang_X.txt', '') then Exit;

  if Sender is TM_Object then   // проверяем, что Sender это объект
    with Sender as TM_Object do // приводим Sender к типу "TM_Object"
    begin
      if bLangNumber.Value = 0 then
        OpenFileLang('lang_X.txt');

      if bLangNumber.Value = 1 then
        OpenFileLang('lang_ru.txt');

      if bLangNumber.Value = 2 then
        OpenFileLang('lang_eng.txt');
    end;
end.
В принципе это можно было бы провернуть и с сообщениями. Дополнительно обрабатывать каждое состояние. То что в базу будет писаться то русский то английский, ну так мы же язык меняли не просто так. Ну а так как менять текст сообщения нельзя, то как бы и все.
Да что то ручками надо было бы писать самому, но как бы что бы это был встроенный механизм самой скады. Механизм по созданию таблицы для имени переменной и ее ID прекрасно работает.
« Изменён: 31 Октября 2025, 15:26:07 от Simple-Scada »