All Forums
 Категория Visio
 Форум Вопросы и ответы
 SectionExists, RowExists, CellExists
Author Previous Topic Topic Next Topic  

9rey

Russia
30 Posts

Posted - 01/20/2012 :  15:39:50
объясните, пожалуйста смысл этого параметра в перечисленных выше функциях

например ф-я SectionExists(Section As Integer, fExistsLocally As Integer)

fExistsLocally - это что? я думал, что если false, то ищет везде, во всех вложенных шейпах, если true, то только в этом шейпе. но че-то не работает так.

кто в курсе?

Tumanov

Russia
1198 Posts

Posted - 01/21/2012 :  08:20:51
Во-первых, сам я этот параметр никогда не использовал, поэтому могу ошибаться :)
Во-вторых, понимал его по-другому.
В Visio используется механизм наследования атрибутов. (Причем наследование может быть не только от мастер-шейпов, но и от стилей и не только от них). Для каждого шейпа в документе хранятся только атрибуты, отличающиеся от унаследованных.
Так, если мастер-шейп имеет секцию Shape Data и во всех копиях этого мастера на странице эта секция не изменялась, то в каждом шейпе данные этой секции не сохраняются, а при необходимости выбираются из мастера. (Это хорошо видно при сохранении документа в XML формате).
А если в какой-то копии добавить еще одно пользовательское свойство, то для этого шейпа это будет уже локальное изменение. И оно будет храниться непосредственно в этом шейпе.
Так вот, когда мы используем функцию SectionExists, то проверяемый шейп мы указываем однозначно. А параметр fExistsLocally говорит, в какой части искать - включая наследуемую от мастер-шейпа или только в принадлежащей исключительно шейпу на странице.
Если fExistsLocally = True, то для утвердительного ответа нужно, чтобы мастер не имел нужной секции, а в копии такая секция была. То есть она не унаследована, а создана именно в этом шейпе.
К сожалению, простенькая экспериментальная проверка, которую я сейчас провел, не подтвердила вышеизложенного. Почему - не знаю. Может все рассуждения не верны, а может просто не учел какой-то мелочи :(
Go to Top of Page

Obsidian

12 Posts

Posted - 01/21/2012 :  15:42:53
Ну кстати, да - если бы назначение этого аргумента было таковым, то его тип был бы скорее всего Boolean...

Хотя, с другой стороны - в SDK примерно так и написано.

Edited by - Obsidian on 01/21/2012 15:56:13
Go to Top of Page

9rey

Russia
30 Posts

Posted - 01/21/2012 :  16:18:18
Да, действительно, все именно так. секция, ряд или ячейка наследуются.
проверил. создал мастер-шейп, создал в нем секцию custom prop. вписал значение в ячейку Value. дропнул его на лист. проверил этот шейп:
CellExists("Prop.Row_1.Value", 0) = true
CellExists("Prop.Row_1.Value", 1) = false
поменял в дропнутом шейпе это значение на другое - обе проверки стали true.
вот так вот.
спасибо за подсказку
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)