// constructors /** * Constructs a <CODE>PdfTable</CODE>-object. * * @param table a <CODE>Table</CODE> * @param left the left border on the page * @param right the right border on the page * @param top the start position of the top of the table */ internal PdfTable(Table table, float left, float right, float top, bool supportUpdateRowAdditions) : base(left, top, right, top) { // constructs a Rectangle (the bottomvalue will be changed afterwards) this.table = table; table.Complete(); // copying the attributes from class Table CloneNonPositionParameters(table); this.columns = table.Columns; positions = table.GetWidths(left, right - left); // initialisation of some parameters Left = positions[0]; Right = positions[positions.Length - 1]; headercells = new ArrayList(); cells = new ArrayList(); UpdateRowAdditionsInternal(); if (supportUpdateRowAdditions) { table.DeleteAllRows(); } }
/// <summary> /// To put a table within the existing table at the given position /// generateTable will of course re-arrange the widths of the columns. /// </summary> /// <param name="aTable">the table you want to insert</param> /// <param name="aLocation">a System.Drawing.Point</param> public void InsertTable(Table aTable, System.Drawing.Point p) { if (aTable == null) throw new Exception("insertTable - table has null-value"); mTableInserted = true; aTable.Complete(); if (p.Y > columns) throw new ArgumentException("insertTable -- wrong columnposition("+ p.Y + ") of location; max =" + columns); int rowCount = p.X + 1 - rows.Count; int i = 0; if ( rowCount > 0 ) { //create new rows ? for (; i < rowCount; i++) { rows.Add(new Row(columns)); } } ((Row) rows[p.X]).SetElement(aTable,p.Y); CurrentLocationToNextValidPosition = p; }
/** * Constructs a RtfTable based on a Table for a RtfDocument. * * @param doc The RtfDocument this RtfTable belongs to * @param table The Table that this RtfTable wraps */ public RtfTable(RtfDocument doc, Table table) : base(doc) { table.Complete(); ImportTable(table); }
/// <summary> /// To put a table within the existing table at the given position /// generateTable will of course re-arrange the widths of the columns. /// </summary> /// <param name="aTable">the table you want to insert</param> /// <param name="aLocation">a System.Drawing.Point</param> public void InsertTable(Table aTable, object aLocation) { System.Drawing.Point p; if (aTable == null) throw new Exception("insertTable - table has null-value"); if (aLocation == null) throw new Exception("insertTable - point has null-value"); else p = (System.Drawing.Point)aLocation; mTableInserted = true; aTable.Complete(); if (mDebug == true) { if (p.Y > columns) Console.Error.WriteLine("insertTable -- wrong Columnposition("+ p.Y + ") of location; max =" + columns); } int rowCount = p.X + 1 - rows.Count; int i = 0; if ( rowCount > 0 ) { //create new rows ? for (; i < rowCount; i++) { rows.Add(new Row(columns)); } } ((Row) rows[p.X]).SetElement(aTable,p.Y); CurrentLocationToNextValidPosition = p; }
/** * Write a <code>Table</code>. * * @param table The <code>table</code> to be written * @param outp The <code>MemoryStream</code> to write to * * Currently no nesting of tables is supported. If a cell contains anything but a Cell Object it is ignored. * * @throws IOException * @throws DocumentException */ private void WriteTable(Table table, MemoryStream outp) { inTable = true; table.Complete(); RtfTable rtfTable = new RtfTable(this); rtfTable.ImportTable(table, pageWidth - marginLeft - marginRight); rtfTable.WriteTable(outp); inTable = false; }