Author |
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 пользователь увидит русское название. При другом - украинское. Если языков не два а больше, в формуле будут вложенные условия. Только такие свойства (с условиями) придется вводить либо через шейп-лист, либо программно. И шрифт в данном случае не меняется. |
|
|
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. А как что бы было на странице и не выводилось на принтер? |
|
|
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 и нужно писать такие формулы. А с принтером не понял. Что именно нужно не выводить? |
|
|
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 |
|
|
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 не существует |
|
|
VitekSVM
Ukraine
6 Posts |
Posted - 07/05/2007 : 11:03:01
|
Допустим у меня есть макрос со сменой текста. Как передать шейпам указание на выполнение этого макроса, когда изменяется ThePage!Prop.Lang. Или хотя бы как словить изменение ThePage!Prop.Lang? |
|
|
Tumanov
Russia
1198 Posts |
Posted - 07/06/2007 : 00:03:47
|
Не так-то просто :( Нужно отлавливать событие FormulaChanged или CellChanged. Но такие события происходят часто, значит из них нужно будет еще отфильтровать только те случаи, когда изменяется именно нужная ячейка. Кажется в форуме уже приводились примеры отслеживания события FormulaChanged... |
|
|
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..." - как такое же добавить?
|
|
|
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. Но это посложнее и на пальцах не объяснишь, как сделать... |
|
|
VitekSVM
Ukraine
6 Posts |
Posted - 01/21/2008 : 09:26:52
|
В окне Drawing Explorer window выбираю объект и его визио помещает в видимую часть окна. запись макроса не помогла. Как такое сделать в VBA? |
|
|
|
Topic |
|