• 0
elxanders

Как отключить TLang на форме/компоненте?

Вопросы

Ситуация элементарная - приложение получает список файлов в папке, запихивает его в Combobox и предъявляет пользователю для выбора. Версия - 10.1

Имеем проблему - TLang лезет переводить всё, что туда добавляется. Соответственно, если какое-то  имя файла совпадает со словом в списке перевода то он его локализует. В дизайне свойства AutoTranslate  у Combobox нет, в рантайме если выставить AutoTranslate:=false; перед очищением и заполнением никакого эффекта не оказывает.

Самое смешное, что:

а) на этой форме TLang нет, он есть только на соседних, где действительно нужно делать перевод

б) на соседней форме есть комбо, который заполнен в дизайне - так его Tlang переводить не хочет, только первую строчку, пришлось при открытии писать процедуру которая переводит принудительно.

Я уже понял, что Tlang слишком глючный, и проще всего видимо будет самому написать компонент для перевода, но на это придется убить целый день. Может можно малой кровью обойтись, если кто сталкивался?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 ответов на этот вопрос

  • 0

Дело в том, что TComboBox лишь контейнер, вам нужно обращаться именно к списку элементов в ListBox. Чтобы запретить перевод можно поступить так:

var
  i, count : integer;
begin
  count := cbbFiles.Count - 1;
  for i := 0 to count do
    cbbFiles.ListBox.ListItems[i].AutoTranslate := False;
end;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Речь не о TListBox (с ним как раз проблем нет) а о TComboBox - который выпадающий список.

Опять столкнулся с этой же проблемой - заполняю список называниями папок, он вместо Black вводит Чёрный, т.к. на соседней форме есть такая Label с Autotranslate.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
6 часов назад, elxanders сказал:

Речь не о TListBox (с ним как раз проблем нет) а о TComboBox - который выпадающий список.

Опять столкнулся с этой же проблемой - заполняю список называниями папок, он вместо Black вводит Чёрный, т.к. на соседней форме есть такая Label с Autotranslate.

Пожалуйста, внимательно посмотрите пример выше: cbbFiles: TComboBox;

TComboBox содержит внутри себя TComboListBox с элементами списка, которые у вас автопереводятся. При помощи предоставленного выше примера автоперевод отключается. Если у Вас множество TComboBox, которым нужно запретить перевод, то можно воспользоваться таким способом:

//Создаем helper для TComboBox
type
  TComboBoxHelper = class helper for TComboBox
  public
    procedure SetAutoTranslate(AEnabled: Boolean = false);
  end;
...
implementation
...
{ TComboBoxHelper }
//Согласно примеру выше
procedure TComboBoxHelper.SetAutoTranslate(AEnabled: Boolean);
var
  i, count : integer;
begin
  count := Self.Count - 1;
  for i := 0 to count do
    Self.ListBox.ListItems[i].AutoTranslate := AEnabled;
end;
...

    //Пример использования helper в Вашем коде
    <Ваш TComboBox 1>.SetAutoTranslate;
    ...
    <Ваш TComboBox N>.SetAutoTranslate;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ок, понял, спасибо. Метод проблему решает частично - внутри контейнера значения не трогаются, но при раскрытии списка он все равно их переводит. Фиг с ним, главное по itemindex выдает оригинальное значение. Но мне все равно кажутся довольно бредовыми подобные телодвижения. Если у контейнера есть свойство, то почему содержимое не наследует его - не очень понятно.

combo.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 07.06.2017 в 03:30, Fedor K сказал:

elxanders скиньте пожалуйста пример своего проекта, я посмотрю в чем дело.

Спасибо за отзыв, к сожалению, проект сюда кинуть не получится, а демку лепить лень, тем более в результате решил избавляться от TLang и использовать собственный модуль для локализации - TLang под Андроидом еще и не всегда определяет язык системы и вместо локального у пользователей отображает английский.

Если вдруг поможет - описанный эффект имел место быть только под Windows, под Андроидом в этом же проекте не наблюдался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу