|
|
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
опыта никакого, задача интереснаят, но базируется на multi-language интерфейсе думаю создать словарь с captions объектов на формах, который будет пополнять автоматом, а юзера будут туда вводить свои перевоты терминов. Но для этого надо элементарно суметь в Init (наверно) формы перебирать все объекты на форме -а я чо-то позабыл как это сделать что-то типа for each objest in thisform... - не проходит, ессно Помогите, а? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 23:38 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
1. Пишем функцию GetCaption принимающую два параметра: имя контрола и идентификатор языка и возвращающую Caption: Код: plaintext 1. 2. 3. 4. 5. В методе Init формы пишем: Код: plaintext 1. Эта рекурсивная функция присваивает нужные надписи: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. goApp - объект приложения; LangId - свойство приложения - идентификатор языка приложения (напрмер: "ua") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2006, 08:59 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
Hi kdanylo! У многих объектов-контейнеров нету свойства ControlCount и коллекции Controls. А вот коллекция Objects есть у всех контейнеров (появилось это начиная с VFP5 или 6). Кроме того вполне можно использовать и более простые, неитеративные схемы - например запрашивать Caption из Init контрола (естественно прописав это в своём классе - т.е. один раз, а не на каждом объекте). Если же нужно обеспечить "динамику" - то можно использовать метод SetAll, и своё свойство с Assign методом. Кстати обычно при "переводах" возникает сложная проблема подгонки размеров контролов - редко когда надписи на разных языках занимают одинаковое место на экране... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2006, 20:05 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
А кто гдже хранит собственно эти надписи на разных языках ?? В отдельно отведенной таблице или непосредсвенно в неком методе (типа Init) тупо: this.Caption = IIF(LnId, "русский", "не русский") Меня вот тут еще один вопрос мучает: если интерфейс программы можно сделать мультиязычным, то как быть с самими данными в таблицах (рабочие данные) ? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 19:37 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
По-моему зависит от кодовой страницы. Английский, украинский и русский спокойно можно хранить в одной табличке CP=1251 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 20:45 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
Имхо мультиязычный интерфейс, надо проектировать следующим образом. Создавать файл языка(неважно в каком формате дбф или текстовый ) Все надписи делать присваивая значения переменных хранящихся в языковом файле. И сделать настройку, позволяющую выбрать языковой файл. Имхо 1 файл - 1 язык. При старте проги файлик лучше всего выгружать в массив. искать в массиве это намного быстрее. Например процедурка LangUse() без параметров выгружает файл языка в массив. А с параметрами ищет например Код: plaintext ______________________________________ Strong ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2006, 10:01 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Hi kdanylo! У многих объектов-контейнеров нету свойства ControlCount и коллекции Controls. А вот коллекция Objects есть у всех контейнеров (появилось это начиная с VFP5 или 6). Согласен полностью. Заменяем функцию SetCaption новой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Igor Korolyov Кроме того вполне можно использовать и более простые, неитеративные схемы - например запрашивать Caption из Init контрола (естественно прописав это в своём классе - т.е. один раз, а не на каждом объекте). Если же нужно обеспечить "динамику" - то можно использовать метод SetAll, и своё свойство с Assign методом. Эта функция универсальна. В придачу - одна точка входа для всей формы. Не задевает существующей или будущей функциональности интерфейса. А использование субкласированных контролов совсем не проще, так как требует много времени на анализ и выбор правильной иерархии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2006, 05:07 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо, буду думать, еще и свои мыслишки появились. Но вот при наличии словаря(где ключевое поле - имя формы + имя контрола на этой форме) заменить captions на текущей форме не кажется сложным, то как быть с меню (главное горизонтальное с выпадающими popup-ами)???? Ума не приложу, прям хоть программируй меню программно, что ли? Можно ли подобраться к нему как к составному объекту? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 11:06 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
fyodmaTo как быть с меню (главное горизонтальное с выпадающими popup-ами)???? Ума не приложу, прям хоть программируй меню программно, что ли? Можно ли подобраться к нему как к составному объекту? Работать с меню как объектом нельзя, по-крайней мере без стороних продуктов. Самый простой способ сделать меню незавсимым от конкретного языка я бы разбил на 4 этапа: 1 Создать меню в Дизайнере; 2 Сгенерировать меню - получиться файл с расширением .mpr. 3 Скопировать полученый файл (его будем править) 4 Заменить строки типа Код: plaintext 1. Код: plaintext 1. При любых изменениях меню ты его сможешь переделать в Дизайнере, потом опять создать копию .mpr файла и добавить вызовы функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 01:31 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
Объектно-ориентированое меню для FoxPro 6.0 : http://www.spacefold.com/colin/archive/articles/oo_menus/menus.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 08:21 |
|
||
|
двухязычный интерфейс
|
|||
|---|---|---|---|
|
#18+
kdanylo2 Сгенерировать меню - получиться файл с расширением .mpr. 3 Скопировать полученый файл (его будем править) 4 Заменить строки типа ... Можно один раз изменить в GenMenu.prg (FUNCTION defbars) строку Код: plaintext Код: plaintext 1. 2. 3. 4. 5. ~GetPrompt("Bar1", goApp.LangId) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 08:41 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1592152]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 344ms |

| 0 / 0 |
