Как управлять шириной табуляции в RichObject

05.09.2021

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

В предыдущих версиях FastReport .NET RichObject имел возможность управления шириной табуляции в строке, но все их размеры после первой табуляции были одинаковыми, в текущей версии это было исправлено и теперь можно задать размер для каждого символа табуляции.

Новое свойство для TextObject TabPositions позволяет задавать ширину табуляции. Оно используется при конвертации RichObject. Теперь управлять шириной символов табуляции можно двумя способами:

– из кода задав ширину отдельных символов табуляции для каждой строки TextObject;
– загрузив готовый документ в RichObject.

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

Пример текста с разной шириной табуляции

Оригинальный RTF документ:

Настройка ширины табуляции в Word

Как он выглядел в прошлой версии:

Разная ширина табуляции в окне предварительного просмотра прошлой версии

В текущей версии:

Разная ширина табуляции в окне предварительного просмотра этой версии

Управление шириной табуляции из кода:

 //create instance of class Report
 Report report = new Report();
 //create report page
 ReportPage pageBase = new ReportPage();
 //create data band
 DataBand dataBand = new DataBand();
 //create text object
 TextObject textObject = new TextObject();
 //set the text value
 textObject.Text = "1\t2\t3\t4";
 //set width for every symbol tab in centimeters
 textObject.TabPositions = new FloatCollection() { Units.Centimeters * 2.5f, Units.Centimeters * 3.5f, Units.Centimeters * 5 };
 //add the text object to data band
 textObject.Parent = dataBand;
 //set generated name
 textObject.CreateUniqueName();
 //set the text object bounds
 textObject.Bounds = new RectangleF(0, 0, Units.Centimeters * 15, Units.Centimeters * 0.5F);
 //create one more text object
 TextObject textObject2 = new TextObject();
 textObject2.Text = "5\t6\t7\t8";
 textObject2.TabPositions = new FloatCollection() { Units.Centimeters * 2.5f, Units.Centimeters * 3.5f, Units.Centimeters * 5 };
 textObject2.Parent = dataBand;
 textObject2.CreateUniqueName();
 textObject2.Bounds = new RectangleF(0, Units.Centimeters * 1, Units.Centimeters * 15, Units.Centimeters * 0.5F);
 //create one more text object
 TextObject textObject3 = new TextObject();
 textObject3.Text = "9\t10\t11\t12";
 textObject3.TabPositions = new FloatCollection() { Units.Centimeters * 2.5f, Units.Centimeters * 3.5f, Units.Centimeters * 5 };
 textObject3.Parent = dataBand;
 textObject3.CreateUniqueName();
 textObject3.Bounds = new RectangleF(0, Units.Centimeters * 2, Units.Centimeters * 15, Units.Centimeters * 0.5F);
 //add the band to band collection
 pageBase.Bands.Add(dataBand);
 //add created page to report page collection
 report.Pages.Add(pageBase);
 //show report
 report.Show();

Таким образом, с помощью новых улучшений можно RichObject и TextObject превратить в альтернативу объекту Table.

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.