Страница 1 из 1

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

Добавлено: 26 июн 2008, 09:46
vlsaf
Добрый день.

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

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

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

Если листов несколько, то можно ли текстовый объект дублировать на всех листах?

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

Добавлено: 26 июн 2008, 10:01
Vital
Здравствуйте,

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

Спасибо.

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

Добавлено: 26 июн 2008, 10:36
vlsaf
В этом и был вопрос.
Как программно положить текстовый компонент на страницу?

Текстовых компонент должно быть столько, сколько строк в таблице.
А строк в таблице может быть разное кол-во.
Поэтому требуется добавлять текстовый компонент на страницу программно.
Это возможно?

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

Добавлено: 26 июн 2008, 20:13
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);
  }
}
Спасибо.

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

Добавлено: 30 июн 2008, 07:52
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 может вызвать исключение.



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

Добавлено: 30 июн 2008, 21:20
Edward
Здравствуйте.

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

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

Спасибо.