Перейти к содержанию
Fire Monkey от А до Я
  • 0

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


elxanders

Вопрос

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

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

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

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

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

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

Ссылка на комментарий

Рекомендуемые сообщения

  • 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, под Андроидом в этом же проекте не наблюдался.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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