Страница 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
Спасибо.