Некоторые пользователи предпочитают создавать таблицы регулируя ширину табуляции или им необходимо создать таблицу в формате, который их не поддерживает.
В предыдущих версиях FastReport .NET RichObject имел возможность управления шириной табуляции в строке, но все их размеры после первой табуляции были одинаковыми, в текущей версии это было исправлено и теперь можно задать размер для каждого символа табуляции.
Новое свойство для TextObject TabPositions позволяет задавать ширину табуляции. Оно используется при конвертации RichObject. Теперь управлять шириной символов табуляции можно двумя способами:
– из кода задав ширину отдельных символов табуляции для каждой строки TextObject;
– загрузив готовый документ в RichObject.
Возможности редактировать это свойство в дизайнере временно отсутствует. Если знаков табуляций будет больше чем значений ширины, размер табуляции будет обычным, а если значений больше чем знаков табуляций, то излишние значения ширины не будут применены.
Оригинальный RTF документ:
Как он выглядел в прошлой версии:
В текущей версии:
//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.