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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
pansoft
Бывалый
Сообщения: 76
Зарегистрирован: 08 Август 2011, 11:37

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

Сообщение pansoft »

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

Вообще нужно перебрать все кнопки на форме и изменить их надписи на них.
Заранее благодарен!
kreator
✯ Ветеран ✯
Сообщения: 4994
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

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

Сообщение 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
Может список контролов неполный. Только начало.
We are hard at work… for you. :)
pansoft
Бывалый
Сообщения: 76
Зарегистрирован: 08 Август 2011, 11:37

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

Сообщение pansoft »

Огромное спасибо! То что надо!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7387
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

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

Сообщение Игорь Столяров »

kreator писал(а): Только начало.
Вот если бы ты к этому коду прикрутил перевод интерфейса по словарю - было бы супер ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4994
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

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

Сообщение kreator »

Игорь Столяров писал(а):Вот если бы ты к этому коду прикрутил перевод интерфейса по словарю - было бы супер ... ;)
Ну а как по словарю? Сейчас храню фразы. Воспользоваться гугловским сервисом перевода? В интерфейсе нужны максимально точные формулировки исходя из специфики функционала программы. Боюсь на машинный перевод нельзя положиться. Или не о том речь?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7387
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

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

Сообщение Игорь Столяров »

kreator писал(а):Или не о том речь?
Именно о том. Это мечта всей жизни - создать автоматизированную систему перевода интерфейса программы.
В принципе, я уже как-то думал на эту тему, можно пойти следующим путем:
1. Как показано в твоем примере - пробегаем по всем окнам и формируем список (БД) уникальных
названий на русском: строки, кнопки, шапки списков и т.д. Без учета регистра естественно.
2. Выгружаем в текст, натравливаем на него какой переводчик и получаем значения на нескольких языках.
3. Загружаем обратно в БД, корректируем смысловую нагрузку вручную (тонкости перевода)
4. Все. Далее все-то же самое, просто значение подставляет из БД, в зависимости от выбранного языка,
с учетом заглавных букв, знаков препинания и т.д. :)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4994
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

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

Сообщение kreator »

У меня тоже в этом направлении мысли были. На начальном этапе нет времени усложнять, проект и так горит. А так я согласен. По пунктам:
1. Хранить словарь (естественно, фразы) в БД.
2. Сделать интерфейс для удобоваримого перевода всего что есть на экране. Не уверен, что нужен машинный переводчик, лучше сразу к спецу.
3. Структура словаря (вызывает вопрос). Сейчас я сделал "глобальные фразы", типа "Add" всегда "Добавить". В Clarione есть класс Translate, так вот там привязка к конкретному окну. Я поначалу посчитал это ни к чему. Но в последствии столкнулся с тем, что одинаковые фразы на английском языке на разных окнах нужно по разному "перевести". Вот этот момент тоже неплохо бы как-то обыграть. Но жёсткая привязка к окну тоже не нужна, зачем плодить одинаковые записи.
We are hard at work… for you. :)
Ответить