All Forums
 Категория Visio
 Форум Вопросы и ответы
 Опять custom properties
Author Previous Topic Topic Next Topic  

Евгений

88 Posts

Posted - 01/17/2005 :  12:41:56
Добрый день, уважаемые мастера Вижио! У меня к вам два вопроса.

Как наложить ограничения на длину проперти? Для одной надо ограничение - только 3 символа, для другой - 4 или 5.

Второй вопрос. Одна из пропертей шейпа должна зависеть от проперти другого шейпа, а точнее - если шейп лежит на другом шейпе, то должна копировать величину этой проперти себе, а если не лежит ни на одном другом шейпе, должна копировать себе величину проперти листа/страницы. Как это реализовать? Через RUNADDON? Но как конкретно, если так?

Евгений

88 Posts

Posted - 01/17/2005 :  13:19:27
Да, и еще надо некоторые проперти сделать нередактируемыми. То есть, чтобы они были видны, но изменить их было нельзя.
Go to Top of Page

Евгений

88 Posts

Posted - 01/17/2005 :  17:50:23
И еще вопрос попроще. Как перехватить событие изменения проперти? Например для определенного шейпа, чтобы при изменении какой-то custom property вызывалась соответствующая процедура?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/17/2005 :  21:04:28
1. Ограничение наложить нельзя, но после ввода можно проверить длину и отрезать лишнее или заблокировать изменение.
Для этого надо обрабатывать что-то типа CellChanged, FormulaChanged или ShapeChanged скорее всего для объекта Page.
Например, страница объявляется как Dim WithEvents pg As Visio.Page при открытии документа pg ассоциируется с нужной страницей, после чего Вас будут уведомлять о соответствующих событиях.

2. В том же обработчике можно разбираться и с порядком следования шейпов.

3. Запретить редактирование можно используя =GUARD("Замучаешься редактировать"). Видимость редактирования есть, а значение остается прежним.

4. См. п. 1. WithEvents
Go to Top of Page

Digitall

Russia
389 Posts

Posted - 01/17/2005 :  23:11:23  Visit Digitall's Homepage
quote:
Originally posted by Евгений

Да, и еще надо некоторые проперти сделать нередактируемыми. То есть, чтобы они были видны, но изменить их было нельзя.


Сделать фиксированный список из 1-й строки.
Go to Top of Page

Евгений

88 Posts

Posted - 01/20/2005 :  11:08:53
Г-н Туманов, спасибо :) Не ожидал, что для слежения изменений в шейпе надо следить за изменениями страницы.

Digitall, :D
Go to Top of Page

Евгений

88 Posts

Posted - 01/20/2005 :  11:18:13
Насчет =GUARD() сразу появилась проблема. Делаю =GUARD() для custom property, и когда стараюсь изменить значение проперти в окошке, хотя в ShapeSheet значение не меняется, зато видимое значение становится тем, на которое я его поменял. А мне хотелось бы, чтобы видимое значение также оставалось неизмененным. (Желательно, чтобы вообще на инпуте этой проперти невозможно было установить фокус)
Go to Top of Page

Евгений

88 Posts

Posted - 01/20/2005 :  11:26:51
Как ни странно, пока сделал так, как предложил г-н Digitall :). Хотя разворачивающийся одноэлементовый список при нередактируемом значении выглядит немного странно, все же исполняет свою функцию. Если не будет лучшего решения, я даже готов так оставить.
Но все же, может, можно?
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)