Author |
Topic |
|
zhuravsky
Russia
115 Posts |
Posted - 10/05/2006 : 20:16:24
|
Как сделать так, чтобы на одну и ту же страницу нельзя было бы дважды вставить определенный шейп. Например, имеется штамп для формата А4, он на листе должен быть в единственном экземпляре (или его может вообще не быть). Желательно было бы заложить такую функциональность в сам шейп. |
|
Dart
11 Posts |
Posted - 10/06/2006 : 23:38:41
|
По моеиу токое возможно только через Visual Basic (макрос, или написать Add-i)n, который по событию ShapeAdded будет смотреть на Имя мастер шейпа и при повторном добавлении, его в с ругательством в MessageBox - удалять. |
|
|
zhuravsky
Russia
115 Posts |
Posted - 10/07/2006 : 12:08:52
|
Я тоже думаю в этом направлении. А нет ли какого-нибудь примерчика с кодом, пусть не совсем то что надо, просто изучить принципы? |
|
|
Tumanov
Russia
1198 Posts |
Posted - 10/07/2006 : 13:21:53
|
Можно сыграть на том, что Name шейпа образуется путем добавления к имени индекса через точку. Значит, например, первый шейп Triangle будет иметь Name=Triangle, а остальные Triangle.1, Triangle.20 и т.д. Тогда можно не проверять, если уже такие шейпы на странице, а удалять все шейпы, к имени которых добавлена точка. Тогда макрос (обработчик события ShapeAdded, обеспечивающий уникальность шейпа Triangle) будет выглядеть так:
Private Sub Document_ShapeAdded(ByVal Shape As IVShape)
If InStr(1, Shape.Name, "Triangle.") Then
MsgBox "Шейп Triangle уже существует. Второй добавлять не разрешается. Удаляю."
Shape.Delete
End If
End Sub |
|
|
zhuravsky
Russia
115 Posts |
Posted - 10/08/2006 : 11:15:04
|
Спасибо. Буду пробовать. |
|
|
zhuravsky
Russia
115 Posts |
Posted - 10/08/2006 : 11:20:38
|
>Tumanov А можно ли в ваш код добавить проверку, что шейп существует именно на той странице, куда вставляется новый шейп? Просто у меня документ многостраничный и на каждой из страниц должен быть шейп с именем "PageDef" |
|
|
Tumanov
Russia
1198 Posts |
Posted - 10/08/2006 : 12:17:36
|
Не нужно. Шейпы нумеруются в пределах страницы. Данный макрос разрешает на каждой странице иметь по одному шейпу Triangle. |
|
|
zhuravsky
Russia
115 Posts |
Posted - 10/09/2006 : 08:51:09
|
Спасибо! Работает как надо. |
|
|
|
Topic |
|