Niektórzy użytkownicy wolą tworzyć tabele za pomocą dostosowywania szerokości tabulatorów, lub wolą stworzyć tabelę w formacie, który ich nie obsługuje.
W poprzednich wersjach FastReport .NET, RichObject oferował funkcję zmiany szerokości tabulatora w wierszu, ale wszystkie ich rozmiary po pierwszym tabulatorze były takie same. Zostało to poprawione w obecnej wersji i teraz można ustawić rozmiar dla każdego znaku tabulacji.
Nowa właściwość dla TextObject TabPositions pozwala na ustawienie szerokości tabulatora. Jest ona używana podczas konwersji RichObject. Teraz można kontrolować szerokość znaków tabulacji na dwa sposoby:
- ustawiając z poziomu kodu szerokość poszczególnych znaków tabulacji dla każdej linii obiektu TextObject;
- poprzez załadowanie gotowego dokumentu do RichObject.
Funkcja edycji tej właściwości w projektancie jest chwilowo niedostępna. Jeśli znaków tabulacji jest więcej niż szerokości, rozmiar tabulacji będzie normalny, a jeśli będzie więcej wartości niż tabulacji, nadmiarowe wartości szerokości nie zostaną zastosowane.
Przykład tekstu z różnymi szerokościami tabulatorów
Oryginalny dokument RTF:
Tak to wyglądało w poprzedniej wersji:
Aktualna wersja:
Dopasowanie szerokości zakładek z poziomu kodu:
//tworzenie instancji raportu klasy Report report = new Report(); //twórz stronę raport ReportPage pageBase = new ReportPage(); //Utwórz pasmo danych DataBand dataBand = new DataBand(); //Utwórz obiekt tekstowy TextObject textObject = new TextObject(); //ustaw wartość tekstu textObject.Text = "1\t2\t3\t4"; //ustaw szerokość każdej zakładki symbolu w centymetrach textObject.TabPositions = new FloatCollection() { Units.Centimeters * 2.5f, Units.Centimeters * 3.5f, Units.Centimeters * 5 }; //Dodaj obiekt tekstowy do pasma danych textObject.Parent = dataBand; //Ustaw wygenerowaną nazwę textObject.CreateUniqueName(); //ustawianie granic obiektów tekstowych textObject.Bounds = new RectangleF(0, 0, Units.Centimeters * 15, Units.Centimeters * 0.5F); //utwórz jeszcze jeden obiekt tekstowy 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); //utwórz jeszcze jeden obiekt tekstowy 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); //dodaj zespół do kolekcji zespołu pageBase.Bands.Add(dataBand); //dodaj stworzoną stronę do zbioru raportów report.Pages.Add(pageBase); //Pokaż raport report.Show();
Dzięki nowym poprawkom można zatem zamienić RichObject i TextObject na obiekt będący alternatywą dla obiektu Table.