Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 12 авг 2020, 05:09

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !
Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 13:06 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
мой код может как увеличивать, так и уменьшать размер листа…

не поднимается группа endPart ? ;)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 13:08 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate, к сожалению нет. projectPropertyCellEditor - поднимается только часть это группы.

А вот с уменьшением размера листа это вообще здорово!!! :)

Сейчас разберусь для начала почему не поднимаем группу верхнюю..


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 13:10 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Вот как получается, что часть группы не поднимается.

Мне чет кажется, что 2 таблицы "Бурового оборудования" и "бурильных труб" не находятся в группе projectPropertyCellEditor.


Последний раз редактировалось ssementsov 27 авг 2012, 13:50, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 13:21 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate, отлично все тоже отработало!!

Только в отчете появился 7-й лист пустой. Можно как-то избавится от него?

Код:
ni = Abs(Int(wi / -11.27624672)) * (11.27624672)

А почему именно 11.27624672?
Я так понимаю, что там не 297 мм, а 280 мм. Тогда должно быть чуть меньше..


Последний раз редактировалось ssementsov 27 авг 2012, 13:49, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 13:26 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
я так думаю что у той группы, что не поднимается в ячейке PinY стоит GUARD, поэтому на нее команда Move не действует
проверь PinY!!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 13:47 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Вот с пустой страницей всё так же. На маленьких отчетах, которые влазят на 4 страницы, остается 5-я пустая.

Как посмотреть эту группу, если к моменту построения отчета она уже разгруппировывается?
И мне кажется, что просто не все вмещается в эту группу. Т.к. тогда бы она вся не поднималась. А не только какая-то часть..


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 14:05 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
ssementsov писал(а):
Я так понимаю, что там не 297 мм, а 280 мм. Тогда должно быть чуть меньше..


да, правильнее использовать множитель 11.69291339 (соответствует высоте листа 297 мм)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 14:32 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Код:
wi = sh.Cells("Height") + 1

как это в объектной модели Visio описать?

Так получаю ошибку: Method, delegate or events is expected.
Код:
double wi = shape.Cells("Height");


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 14:46 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
wi = sh.CellsSRC(visSectionObject, visRowXFormOut, visXFormHeight) +1


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 14:47 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
спасибо!!!


Последний раз редактировалось ssementsov 27 авг 2012, 15:10, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 14:50 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
FormulaU убрать надо, ошибочно вставил


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 15:18 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Могу так написать:

Код:
Cell wi = VisioCellEditor.VisioApplication.ActivePage.PageSheet.CellsSRC[(short) VisSectionIndices.visSectionObject,
                                      (short) VisRowIndices.visRowXFormOut,
                                      (short) VisCellIndices.visXFormHeight];


но к double не привести..( что-то я пока не понимаю ничего(

Аналогично:
Код:
            double wii = shape.CellsSRC[(short)VisSectionIndices.visSectionObject,
                                      (short)VisRowIndices.visRowXFormOut,
                                      (short)VisCellIndices.visXFormHeight];


Требует тип Cell


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 15:38 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
тут я тоже затрудняюсь… :(
в ВБА нет такого строгого соответствия типу переменных

думаю, с типом Double я погорячился. Думаю, Single также подойдет для переменных ni и wi


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 15:40 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Cannot implicitly convert type 'Microsoft.Office.Interop.Visio.Cell' to 'float' Single wi =
Код:
VisioCellEditor.VisioApplication.ActivePage.PageSheet.CellsSRC[(short)VisSectionIndices.visSectionObject,
                                      (short) VisRowIndices.visRowXFormOut,
                                      (short) VisCellIndices.visXFormHeight];


Single так же не подходит((


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 15:50 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
думаю, нужна помощь коллег имеющий представлнение об объектной модели в шарпе !
тут я тебе не помогу :(


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 15:51 
Не в сети
Постоянный участник

Зарегистрирован: 11 май 2012, 15:05
Сообщений: 92
Очков репутации: 25

Добавить очки репутацииУменьшить очки репутации
если дабл нужен то вот так:
Код:
double wii = shape.CellsSRC[(short)VisSectionIndices.visSectionObject,
                                      (short)VisRowIndices.visRowXFormOut,
                                      (short)VisCellIndices.visXFormHeight].Result[VisUnitCodes.visNoCast];


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 15:55 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
ss87, огромное спасибо!!
:)

Вы далеко пожалуйста не уходите) Еще есть вопросы по объектной модели)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 16:02 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Вот код Surrogate:
Код:
  Dim se As Selection                 ' объект Selection
  ActiveWindow.SelectAll              ' выделяем все на листе
  Set se = ActiveWindow.Selection     ' присваиваем переменной
  Debug.Print se.Count
  Dim sh As Shape                     '
  Set sh = se.Group
  Debug.Print sh.ID, se.Count
  Dim ni As Double
  Dim wi As Double
  wi = sh.Cells("Height") + 1 ' определяем высоту группы всех шейпов в дюймах + 1 дюйм (на этот дюйм групповой шейп будет смещен от верха листа)
  ni = Abs(Int(wi / -11.27624672)) * (11.27624672)  ' так замысловато вычисляется, высота листа кратная 297 мм на которой может полностью уместиться группа
  ActivePage.PageSheet.Cells("PageHeight").Formula = ni ' присваиваем листу новую высоту
  ActivePage.PageSheet.Cells("YRulerOrigin").Formula = 0 ' присваиваем листу новую точку начала линейки
  ActivePage.PageSheet.Cells("YgridOrigin").Formula = 0 ' присваиваем листу новую точку начала сетки
  sh.Cells("Piny").Formula = ni - 1                      ' размещаем группу на 1 дюйм ниже верхнего края листа
  sh.Cells("LocPinY").Formula = """=Height*1"""
  sh.Ungroup                                              ' разгруппируем наш шейп


Мой:
Код:
             VisioCellEditor.VisioApplication.ActiveWindow.SelectAll();
            Selection selection = VisioCellEditor.VisioApplication.ActiveWindow.Selection;           
            Shape shape = selection.Group();
               
            double wi = shape.CellsSRC[
                (short)VisSectionIndices.visSectionObject,                                     
                (short)VisRowIndices.visRowXFormOut,                                     
                (short)VisCellIndices.visXFormHeight].Result[VisUnitCodes.visNoCast] + 0.5;
           
            double ni = Math.Abs( (int)(wi/-11.69) ) * 11.69;

            VisioCellEditor.VisioApplication.ActivePage.PageSheet.Cells["PageHeight"].Formula = ni.ToString();
            VisioCellEditor.VisioApplication.ActivePage.PageSheet.Cells["YRulerOrigin"].Formula = 0.ToString();
            VisioCellEditor.VisioApplication.ActivePage.PageSheet.Cells["YgridOrigin"].Formula = 0.ToString();

            shape.Cells["PinY"].Formula = ni.ToString();
            shape.Cells["LocPinY"].Formula = "Height";           

            shape.Ungroup();


ss87, посмотрите пожалуйста, всё ли я верно написал. Спасибо!)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 16:09 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Пока что отчет далек от идеала)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 27 авг 2012, 16:10 
Не в сети
Постоянный участник

Зарегистрирован: 11 май 2012, 15:05
Сообщений: 92
Очков репутации: 25

Добавить очки репутацииУменьшить очки репутации
вроде бы верно, зачем 0.ToString(); заменить на "0"
ну и еще может Formula работать не корректно, если это так, то заменить на FormulaU


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB