Algunos usuarios prefieren crear tablas ajustando el ancho de la pestaña, o quieren crear una tabla en un formato que no los admite.
En versiones anteriores de FastReport .NET, RichObject ofrecía la función de modificar el ancho de una pestaña en una línea, pero todos sus tamaños después de la primera pestaña eran iguales. Esto se ha corregido en la versión actual y ahora puede establecer el tamaño de cada carácter de pestaña.
La nueva propiedad para TextObject TabPositions le permite establecer el ancho de una pestaña. Se utiliza al convertir RichObject. Ahora puede controlar el ancho de los caracteres de tabulación de dos formas:
– para establecer a partir del código el ancho de los caracteres de tabulación individuales para cada línea del TextObject;
– cargando el documento terminado en RichObject.
La función para editar esta propiedad en el diseñador no está disponible temporalmente. Si hay más caracteres de tabulación que anchos, el tamaño de la pestaña será normal, y si habrá más valores que tabulaciones, no se aplicarán los valores excedentes de ancho.
Un ejemplo de un texto con diferentes anchos de pestaña
Documento RTF original:
Cómo se veía en la versión anterior:
En la versión actual:
Personalizar el ancho de la pestaña desde el código:
//crear instancia de informe de clase Report report = new Report(); //crear página de informe ReportPage pageBase = new ReportPage(); //crear banda de datos DataBand dataBand = new DataBand(); //crear objeto de texto TextObject textObject = new TextObject(); //establecer el valor del texto textObject.Text = "1\t2\t3\t4"; //establecer ancho para cada pestaña de símbolo en centímetros textObject.TabPositions = new FloatCollection() { Units.Centimeters * 2.5f, Units.Centimeters * 3.5f, Units.Centimeters * 5 }; //agregar el objeto de texto a la banda de datos textObject.Parent = dataBand; //establecer el nombre generado textObject.CreateUniqueName(); //establecer los límites del objeto de texto textObject.Bounds = new RectangleF(0, 0, Units.Centimeters * 15, Units.Centimeters * 0.5F); //crear un objeto de texto más 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); //crear un objeto de texto más 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); //añadir la banda a la colección de bandas pageBase.Bands.Add(dataBand); //agregar página creada a la colección de páginas de informes report.Pages.Add(pageBase); //mostrar informe report.Show();
Por lo tanto, puede convertir RichObject y TextObject en una alternativa al objeto Table con la ayuda de nuevas mejoras.