Страница 1 из 1

Доступ к элементам формы

Добавлено: 11 Август 2015, 18:39
pansoft
Добрый день всем!
Возможно ли в С9 такое:
Loop i#=1 to 10
?button&i#{prop:text}='....'
End
Или
Loop i=элементФормы то ЭлементыФормы
If i=button then
i{prop:text}='...'
End
End

Вообще нужно перебрать все кнопки на форме и изменить их надписи на них.
Заранее благодарен!

Доступ к элементам формы

Добавлено: 11 Август 2015, 20:43
kreator
Пользуйся.

Код: Выделить всё

SetLanguage	Routine 

 if GLO:Language=1
   exit 
 end 
 if ~GLO:Language
   Language" = 'RU'
 else  
   Language" = choose(GLO:Language,'EN','IT','DE','FR','ES','PT')
 end  
 0{prop:Text} = getini(0{prop:Text},Language",0{prop:Text},GLO:LanguageFile)
 0{prop:MSG} = getini(0{prop:MSG},Language",0{prop:MSG},GLO:LanguageFile)
 qty# = create(0,CREATE:prompt)
 if qty#
   destroy(qty#)
   loop i#=1 to (qty#-1)
   	 case i#{prop:Type}	
       of 	CREATE:button
       orof	CREATE:tab
       orof	CREATE:group
       orof	CREATE:prompt
       													i#{prop:Text} = getini(i#{prop:Text},Language",i#{prop:Text},GLO:LanguageFile)
       													i#{prop:MSG} = getini(i#{prop:MSG},Language",i#{prop:MSG},GLO:LanguageFile)
       													i#{prop:Tip} = getini(i#{prop:Tip},Language",i#{prop:Tip},GLO:LanguageFile)
       of 	CREATE:list
       orof	CREATE:combo
       													i#{prop:MSG} = getini(i#{prop:MSG},Language",i#{prop:MSG},GLO:LanguageFile)
       													i#{prop:Tip} = getini(i#{prop:Tip},Language",i#{prop:Tip},GLO:LanguageFile)
       													j# = 1
       													loop
       													  if i#{proplist:Exists, j#}=True
       													    i#{proplist:Header, j#} = getini(i#{proplist:Header, j#},Language",i#{proplist:Header, j#},GLO:LanguageFile)
       													    j# += 1
       													  else
       													    break
       													  end
       													end
     end  
   end
 end
Может список контролов неполный. Только начало.

Доступ к элементам формы

Добавлено: 12 Август 2015, 5:51
pansoft
Огромное спасибо! То что надо!

Доступ к элементам формы

Добавлено: 12 Август 2015, 6:02
Игорь Столяров
kreator писал(а): Только начало.
Вот если бы ты к этому коду прикрутил перевод интерфейса по словарю - было бы супер ... ;)

Доступ к элементам формы

Добавлено: 12 Август 2015, 10:30
kreator
Игорь Столяров писал(а):Вот если бы ты к этому коду прикрутил перевод интерфейса по словарю - было бы супер ... ;)
Ну а как по словарю? Сейчас храню фразы. Воспользоваться гугловским сервисом перевода? В интерфейсе нужны максимально точные формулировки исходя из специфики функционала программы. Боюсь на машинный перевод нельзя положиться. Или не о том речь?

Доступ к элементам формы

Добавлено: 12 Август 2015, 10:40
Игорь Столяров
kreator писал(а):Или не о том речь?
Именно о том. Это мечта всей жизни - создать автоматизированную систему перевода интерфейса программы.
В принципе, я уже как-то думал на эту тему, можно пойти следующим путем:
1. Как показано в твоем примере - пробегаем по всем окнам и формируем список (БД) уникальных
названий на русском: строки, кнопки, шапки списков и т.д. Без учета регистра естественно.
2. Выгружаем в текст, натравливаем на него какой переводчик и получаем значения на нескольких языках.
3. Загружаем обратно в БД, корректируем смысловую нагрузку вручную (тонкости перевода)
4. Все. Далее все-то же самое, просто значение подставляет из БД, в зависимости от выбранного языка,
с учетом заглавных букв, знаков препинания и т.д. :)

Доступ к элементам формы

Добавлено: 12 Август 2015, 11:34
kreator
У меня тоже в этом направлении мысли были. На начальном этапе нет времени усложнять, проект и так горит. А так я согласен. По пунктам:
1. Хранить словарь (естественно, фразы) в БД.
2. Сделать интерфейс для удобоваримого перевода всего что есть на экране. Не уверен, что нужен машинный переводчик, лучше сразу к спецу.
3. Структура словаря (вызывает вопрос). Сейчас я сделал "глобальные фразы", типа "Add" всегда "Добавить". В Clarione есть класс Translate, так вот там привязка к конкретному окну. Я поначалу посчитал это ни к чему. Но в последствии столкнулся с тем, что одинаковые фразы на английском языке на разных окнах нужно по разному "перевести". Вот этот момент тоже неплохо бы как-то обыграть. Но жёсткая привязка к окну тоже не нужна, зачем плодить одинаковые записи.