Текстовый объект.

Обсуждение Stimulsoft Reports.NET
Ответить
vlsaf
Сообщения: 46
Зарегистрирован: 26 июн 2008, 09:17

Текстовый объект.

Сообщение vlsaf »

Добрый день.

Можно ли программно добавить текстовый объект в отчет?
Дело в том, что постановка задачи такая:
Есть таблица. Каждая строка таблицы содержит информацию -
текст, цвет, местоположение на листе (x,y) и размер и тип шрифта.

Надо это дело вывести на каждой странице отчета.
Таблица, это своего рода матрица для оформления документа.

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

Если листов несколько, то можно ли текстовый объект дублировать на всех листах?
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Текстовый объект.

Сообщение Vital »

Здравствуйте,

Положите текстовый компонент на страницу. Установите свойства Lock и Link в true. После этого текстовый компонент будет привязан к старнице и будет повторятьтся на каждой странице.
Также можно использовать бэнд Overlay.

Спасибо.
vlsaf
Сообщения: 46
Зарегистрирован: 26 июн 2008, 09:17

Текстовый объект.

Сообщение vlsaf »

В этом и был вопрос.
Как программно положить текстовый компонент на страницу?

Текстовых компонент должно быть столько, сколько строк в таблице.
А строк в таблице может быть разное кол-во.
Поэтому требуется добавлять текстовый компонент на страницу программно.
Это возможно?
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Текстовый объект.

Сообщение Vital »

Здравствуйте,

к примеру можно сделать так:

Код: Выделить всё

report.Render();

int count = 10;

foreach (StiPage page in report.RenderedPages)
{
  for (int index = 0; index < count; index++)
  {
    StiText headerText = new StiText(new RectangleD(0, index, 5, 0.5));//Единицы измерения отчета
    headerText.Text = "MyText";
    headerText.Brush = new StiSolidBrush(Color.LightGreen);
  
    page.Components.Add(headerText);
  }
}
Спасибо.
vlsaf
Сообщения: 46
Зарегистрирован: 26 июн 2008, 09:17

Текстовый объект.

Сообщение vlsaf »

Добрый день.
В вашем примере есть такая строка.

Код: Выделить всё

StiText headerText = new StiText(new RectangleD(0, index, 5, 0.5));//Единицы измерения
Чтобы текст уместился в выделенную область, нужно заранее знать длину и ширину прямоугольника, в котором будет происходить рисование.
Делаю так

Код: Выделить всё

double height = StiReport.MeasureGraphics.MeasureString(myText, myFont).Height;
double width = StiReport.MeasureGraphics.MeasureString(myText, myFont).Width;
это все возвращается в единицах измерения
StiReport.MeasureGraphics.PageUnit

Как отконвертировать высоту и ширину в единицы измерения отчера?

Код: Выделить всё

// сотые доли дюйма
double heightInch = StiReport.MeasureGraphics.MeasureString(myText, myFont).Height/StiReport.MeasureGraphics.DpiX*100.0;
double widthInch = StiReport.MeasureGraphics.MeasureString(myText, myFont).Width/StiReport.MeasureGraphics.DpiY*100.0;

// сантиметры
double height = stiUnit.ConvertFromHInches(heightInch);
double width = stiUnit.ConvertFromHInches(widthInch);
Это корректно?
Читал по форуму, что обращение к StiReport.MeasureGraphics может вызвать исключение.


Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Текстовый объект.

Сообщение Edward »

Здравствуйте.

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

http://forumru.stimulsoft.com/Default.a ... osts&t=130

Спасибо.
Ответить