All Forums
 Категория Visio
 Для заказчиков
 многоязыковый документ из одного файла
Author Previous Topic Topic Next Topic  

VitekSVM

Ukraine
6 Posts

Posted - 06/27/2007 :  15:35:25
Я использую Organization Chart Shapes.
Необходимо эти схемы отдавать на 3 языках (пока на 3).
Каким способом можна выбирать язык, и, после выбора языка, текст заменялся текстом на выбраном языке.

Tumanov

Russia
1198 Posts

Posted - 06/27/2007 :  17:59:40
А что значит "заменить текстом на выбраном языке"? Шрифт тоже должен меняться?
И когда надо менять - трудности в получении трех одинаковых схем с разными надписями или схема должны быть одной, а язык будет переключать пользователь, которому Вы ее отдадите?
В простейшем случае можно добавить на страницу еще одно Custom Properties для выбора языка, а в свойствах шейпов использовать условие.
Например, добавляем к странице свойство Lang. Пусть там будет два возможных значения: 1 (русский) и 2 (украинский).
А в остальных шейпах пишем не просто значение, а формулу с условием.
Например, =Guard(IF(ThePage!Prop.Lang=1;"Русский директор";"Украинский директор"))
При выборе на странице языка 1 пользователь увидит русское название. При другом - украинское.
Если языков не два а больше, в формуле будут вложенные условия.
Только такие свойства (с условиями) придется вводить либо через шейп-лист, либо программно. И шрифт в данном случае не меняется.
Go to Top of Page

VitekSVM

Ukraine
6 Posts

Posted - 06/27/2007 :  19:21:30
quote:
Originally posted by Tumanov

Шрифт тоже должен меняться? И когда надо менять - трудности в получении трех одинаковых схем с разными надписями или схема должны быть одной, а язык будет переключать пользователь, которому Вы ее отдадите?

Шрифт менять не нужно.
Схема одна, но на разных языках.

quote:

Например, =Guard(IF(ThePage!Prop.Lang=1;"Русский директор";"Украинский директор"))...

Какому свойству присваивать?

quote:

... либо через шейп-лист, либо программно...

Вот-вот.

Получается выбор языка через CustomProperties. А как что бы было на странице и не выводилось на принтер?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 06/27/2007 :  20:51:08
Шейпы Organization Chart высвечивают в качестве текста содержимое своих Custom Properties.
Если открыть шейп-лист такого шейпа (Window / Show ShapeSheet), то можно найти в нем секцию Custom Properties, а в ней строки Prop.Name, Prop.Title. Содержимое ячейки Value из этих строк и высвечивается в качестве текста шейпа.
Вот в эту ячейку Value и нужно писать такие формулы.
А с принтером не понял. Что именно нужно не выводить?
Go to Top of Page

VitekSVM

Ukraine
6 Posts

Posted - 07/03/2007 :  11:54:08
А как добраться к Prop.Name в VBA?
Как узнать существует ли Prop.EnglishLine? (в будущем хочу ввести)

Edited by - VitekSVM on 07/03/2007 11:56:07
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 07/03/2007 :  19:06:27
Если в первом шейпе Custom Properties "Name" существует и имеет значение "fgh", а "EnglishLine" - отсутствует, то вот такой скрипт

Sub ttt()
Dim Sh As Visio.Shape
Set Sh = ActivePage.Shapes(1)
PropName = "Name"
On Error Resume Next
Debug.Print Sh.Cells("Prop." & PropName).Formula
If Err Then Debug.Print "Свойства " & PropName & " не существует"
On Error GoTo 0
PropName = "EnglishLine"
On Error Resume Next
Debug.Print Sh.Cells("Prop." & PropName).Formula
If Err Then Debug.Print "Свойства " & PropName & " не существует"
On Error GoTo 0
End Sub

выведет

"fgh"
Свойства EnglishLine не существует
Go to Top of Page

VitekSVM

Ukraine
6 Posts

Posted - 07/05/2007 :  11:03:01
Допустим у меня есть макрос со сменой текста.
Как передать шейпам указание на выполнение этого макроса, когда изменяется ThePage!Prop.Lang. Или хотя бы как словить изменение ThePage!Prop.Lang?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 07/06/2007 :  00:03:47
Не так-то просто :(
Нужно отлавливать событие FormulaChanged или CellChanged. Но такие события происходят часто, значит из них нужно будет еще отфильтровать только те случаи, когда изменяется именно нужная ячейка.
Кажется в форуме уже приводились примеры отслеживания события FormulaChanged...
Go to Top of Page

VitekSVM

Ukraine
6 Posts

Posted - 01/17/2008 :  08:05:42
вот такая менюшка (вернее ее часть) получается у меня сейчас
http://www.filehoster.ru/files/l9898
в "Custom properties" каждого Manager я изменил тип параметра "Name" со "string" на "fixed list". Теперь что бы настроиться на другой язык, я выбираю в "Custom properties" -> "Name" надпись соответсвующую языку.
Как можна макросом поменять во всех manager'ах эту надпись?
Например в свойствах страницы есть "Color schemes..." - как такое же добавить?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/17/2008 :  17:05:00
Как-то не очень удачно получилось :( Тяжело управлять такой штукой.
Посмотрите, как сделано в http://visio.artberg.ru/store/m2.zip
может такой способ больше понравится...
В три ячейки Custom Properties заносятся тексты на разных языках. В четвертой ячейке они объединяются по тому принципу, который я писал выше.
Все управление идет от Custom Properties страницы. Вот там стоит фиксированный список.
При выборе другого значения в Custom Properties страницы, меняется язык во всех шейпах (выбирается другая строка). И никаких макросов.
Такие значения удобно заносить, но не очень удобно то, что технологические строки видны в Custom Properties и могут слегка мешать. В принципе, в готовом рисунке их можно сделать невидимыми.
Конечно, лучшим решением здесь было бы применение отдельного XML файла типа файла ресурсов. Из него можно было бы подставлять данные в шейпы, не размножая Custom Properties. Но это посложнее и на пальцах не объяснишь, как сделать...
Go to Top of Page

VitekSVM

Ukraine
6 Posts

Posted - 01/21/2008 :  09:26:52
В окне Drawing Explorer window выбираю объект и его визио помещает в видимую часть окна. запись макроса не помогла. Как такое сделать в VBA?
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)