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

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

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


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


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



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

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

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

ss87, спасибо)


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

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


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

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

Добавить очки репутацииУменьшить очки репутации
Сейчас всё работает хорошо. И с округлением вверх тоже нет проблем.
Но вот почему-то основная таблица заползает вверх. И накрывает часть таблиц "Буровое оборудование" и "Бурильные трубы"..

Я могу узнать самую нижнюю границу 3-х компонентов и главную часть вниз опустить. Но почему происходит "наползание" вверх?
Шэйпы может как-то закрепить можно? почему находять в группе они ползают?)

Причем самое интересное в том, что макрос в VBA отрабатывает хорошо. Всё на своих местах и ничего не заползает.
А вот в С# ползает(


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

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

Добавить очки репутацииУменьшить очки репутации
C#:
Код:
            VisioCellEditor.VisioApplication.ActiveWindow.SelectAll();
            Selection selection = VisioCellEditor.VisioApplication.ActiveWindow.Selection;
            Shape shape = selection.Group();

            double heightShapeGroup = shape.CellsSRC[(short)VisSectionIndices.visSectionObject, (short)VisRowIndices.visRowXFormOut,
                (short)VisCellIndices.visXFormHeight].Result[VisUnitCodes.visNoCast];

            double newHeightPage = Math.Ceiling(heightShapeGroup / 11.02362204724409) * 11.02362204724409;

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

            shape.Cells["PinY"].FormulaU = (newHeightPage + 1).ToString();
            shape.Cells["LocPinY"].FormulaU = "Height";

            shape.Ungroup();


VBA:
Код:
Sub Test()
  Dim se As Selection               
  ActiveWindow.SelectAll             
  Set se = ActiveWindow.Selection     
  Dim sh As Shape                     
  Set sh = se.Group
  Dim ni As Double
  Dim wi As Double
  wi = sh.Cells("Height") + 0.5
  ni = Abs(Int(wi / -11.0236220472441)) * (11.0236220472441)
  ActivePage.PageSheet.Cells("PageHeight").Formula = ni
  ActivePage.PageSheet.Cells("YRulerOrigin").Formula = 0
  ActivePage.PageSheet.Cells("YgridOrigin").Formula = 0
  sh.Cells("Piny").Formula = ni                   
  sh.Cells("LocPinY").Formula = """=Height*1"""
  sh.Ungroup                                             
End Sub


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

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

Добавить очки репутацииУменьшить очки репутации
так-с. Вроде как получается, что не главная часть наползает вврех, а эти 2 таблицы растягиваются больше положенного. Т.е. их высота становится слишком большой. Из-за этого все проблемы.

Как бы этого избежать?


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

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


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

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

Добавить очки репутацииУменьшить очки репутации
Понимаю. Просто хотел что понять..

К моменту когда начинается подбор размера страницы - все таблицы выстроены ровно и как надо.
После этого уже все шэйпы в одну группу, и пошло-пошло. Далее мы разгруппировываем эту группу и получаем, что 2 таблицы эти какие-то большие. Разве дело в том, какие у них высота и местоположение, если перед этим мы как раз и выровняли всё как положено?


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

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


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

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

Добавить очки репутацииУменьшить очки репутации
Есть класс, EquipmentTableHelper. В нем-то и рисуются одна из таблиц. Есть класс для второй таблице.
Т.е. я так понимаю, что должен быть шэйп, который сгруппирует все элементы. И потом можно размер менять..

Вот разбираюсь. Пока никакой ссылки на высоту странцы или другие шэйпы не наблюдал.
Код:
  public override void DrawColumn()
        {
                // Рисуем все колонки таблицы с последующем обьеденении с шапкой таблицы , что бы можно было потом растягивать размер по вертикали

                var cell = VisioCellEditor.Group(
                    DrawEquipmentGroupNameColumn(ShapeIds.DrillingEquipmentNameColumn).GetGroupedColumn(),
                    DrawEquipmentTypeNameColumn(ShapeIds.DrillingEquipmentGroupColumn).GetGroupedColumn(),
                    DrawEquipmentInfoColumn(ShapeIds.DrillingEquipmentTonnageColumn).GetGroupedColumn(),
                    creator.GetCellEditor((int) ShapeIds.DrillingEquipmentHeaderGrouppedColumn));
                // Корректируем высоту таблицы растягивая сгрупиированные эелементы, вычисляя исходя из нужной(исзвестной) глубины до которой должна распостранятся таблица
                if (cell != null)
                {
                    cell.SetHeightPinnedTop(cell.Height + (cell.Bottom - realNeedingBottom));
                }
        }


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

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


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

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

Добавить очки репутацииУменьшить очки репутации
Дело в том, что эт самая realNeedingBottom и рисование самих таблиц уже происходит после автоподгона размера(

Когда отрабатывает метод этот - DrawColumn , то отрисовывает уже абы как. Сейчас будем копать)


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

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

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

Есть 3 таблицы вверху: Буровое оборудование, Основные проектные данные и Бурильные трубы.
Сначала находим самую высокую из них. Это и будет наша переменная min. Далее я сдвигал отчет вверх. Не меня переменной min. С этой переменной, которая находится соответственно ниже, чем должна быть я в методе DrawColumn отрисовывал эти 2 таблицы.

Получается, что необходимо лишь верные значения туда подать и таблицы растягиваться не будут.

А то с больной головой совсем не думалось.


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

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

Добавить очки репутацииУменьшить очки репутации
Вынес в отдельный метод подбор размера страницы. Этот метод вызываю уже после построения всего отчета и всё хорошо:)

Спасибо всем за помощь!!! :)

Темку можно закрыть))


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

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


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

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

Добавить очки репутацииУменьшить очки репутации
Surrogate, спасибо)) Я думаю, что это временно)

Желаю успехов в развитии этом форуму) Всех ещё раз спасибо большое :) :) :)


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

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



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

Сейчас этот форум просматривают: Yandex [bot] и гости: 1


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

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