Таблицы взаимодействия слов C # формируют позиции - PullRequest
2 голосов
/ 28 октября 2011

Я пытаюсь сделать следующее: вставить стрелку на основе значения в ячейке таблицы.Эта часть у меня работает просто отлично.Цвет стрелки должен быть условным и работать одинаково хорошо.

Но моя проблема заключается в следующем: как определить правильную позицию для ее размещения.Я заключил это для 2 задач:

по вертикали : охват страниц.Для 1 страницы это работает, как только я пробую это для 2-ой страницы, это помещает формы в первую.
По горизонтали : правильное положение относительно текста, который введен вТаблица.

Это код для вертикального позиционирования, который у меня сейчас есть:

private float getVertical(Word.Range r)
    {
        return (float)r.Characters.Last.get_Information(
            Microsoft.Office.Interop.Word.WdInformation.wdVerticalPositionRelativeToPage);
    }

код для горизонтального (в основном добавьте ширину каждого элемента в той же строке до 2/3ширина фактической ячейки)

 private float getHorizontal(Word.Range r, Word.Table tab, int col)
    {
        float i1, i2 = 0.0f, i3;
        i1 = (tab.Cell(2, col).Width / 3) * 2;
        int i;
        for (i = 1; i < col; i++)
        {
            i2 += tab.Cell(2, i).Width;
        }
        i3 = i1 + i2;
        return i3;
    }

любые предложения приветствуются и приветствуются,

Приветствия

ShadowFlame

1 Ответ

2 голосов
/ 31 октября 2011

Наконец-то я понял это, и извечно (вечно?) Для будущих ссылок и документации: -).

То, что я раньше не делал, было : добавить диапазон привязки к фигуре.
Где я нашел это : нигде не пришлось выяснять это с помощью документации MSDN, что фигуры связаны с якорями, и если вы не укажете, c # поместит ваши фигуры в диапазон по умолчанию (первая страница в моем случае)
Решение :( Обратите внимание, это фрагмент кода, предполагающий некоторые знания взаимодействия слов. Если есть какая-либо дополнительная информациятребуется, не стесняйтесь спрашивать.)

//create word document  
--some code  

//insert page break here    
--some code   

//insert paragraph  
--some code    

//insert table here
--some code  

//define range  
Word.Range shapeAnchor = doc.Bookmarks.get_Item(ref oEndOfDoc).Range;  

//insert shape  
Microsoft.Office.Core.MsoAutoShapeType sh =  
Microsoft.Office.Core.MsoAutoShapeType.msoShapeUpArrow;   

Word.Shape shh = doc.Shapes.AddShape(sh.GetHashCode(), x, y, 
width, height, shapeAnchor);

Код, который фактически написан, можно поместить в функцию, которая будет работать всегда.

Привет,

Темное

...