public HCTableCell(HCStyle AStyle) : this() { FCellData = new HCTableCellData(AStyle); FAlignVert = View.AlignVert.cavTop; FBorderSides = new HCBorderSides(); FBorderSides.InClude((byte)BorderSide.cbsLeft); FBorderSides.InClude((byte)BorderSide.cbsTop); FBorderSides.InClude((byte)BorderSide.cbsRight); FBorderSides.InClude((byte)BorderSide.cbsBottom); FBackgroundColor = AStyle.BackgroudColor; FRowSpan = 0; FColSpan = 0; }
public virtual void LoadFromStream(Stream aStream, HCStyle aStyle, ushort aFileVersion) { byte[] vBuffer = BitConverter.GetBytes(FWidth); aStream.Read(vBuffer, 0, vBuffer.Length); FWidth = BitConverter.ToInt32(vBuffer, 0); vBuffer = BitConverter.GetBytes(FHeight); aStream.Read(vBuffer, 0, vBuffer.Length); FHeight = BitConverter.ToInt32(vBuffer, 0); vBuffer = BitConverter.GetBytes(FRowSpan); aStream.Read(vBuffer, 0, vBuffer.Length); FRowSpan = BitConverter.ToInt32(vBuffer, 0); vBuffer = BitConverter.GetBytes(FColSpan); aStream.Read(vBuffer, 0, vBuffer.Length); FColSpan = BitConverter.ToInt32(vBuffer, 0); if (aFileVersion > 11) { byte vByte = 0; vByte = (byte)aStream.ReadByte(); FAlignVert = (View.HCAlignVert)vByte; // 垂直对齐方式 HC.HCLoadColorFromStream(aStream, ref FBackgroundColor); // 背景色 } if (aFileVersion > 13) { FBorderSides.Value = (byte)aStream.ReadByte(); // load FBorderSides } bool vNullData = false; vBuffer = BitConverter.GetBytes(vNullData); aStream.Read(vBuffer, 0, vBuffer.Length); vNullData = BitConverter.ToBoolean(vBuffer, 0); if (!vNullData) { FCellData.LoadFromStream(aStream, aStyle, aFileVersion); FCellData.CellHeight = FHeight; } else if ((FRowSpan < 0) || (FColSpan < 0)) // 修正表格合并处理不准确造成的错误,容错打不开的情况 { FCellData.Dispose(); FCellData = null; } }
public void LoadFromStream(Stream AStream, HCStyle AStyle, ushort AFileVersion) { byte[] vBuffer = BitConverter.GetBytes(FWidth); AStream.Read(vBuffer, 0, vBuffer.Length); FWidth = BitConverter.ToInt32(vBuffer, 0); vBuffer = BitConverter.GetBytes(FHeight); AStream.Read(vBuffer, 0, vBuffer.Length); FHeight = BitConverter.ToInt32(vBuffer, 0); vBuffer = BitConverter.GetBytes(FRowSpan); AStream.Read(vBuffer, 0, vBuffer.Length); FRowSpan = BitConverter.ToInt32(vBuffer, 0); vBuffer = BitConverter.GetBytes(FColSpan); AStream.Read(vBuffer, 0, vBuffer.Length); FColSpan = BitConverter.ToInt32(vBuffer, 0); if (AFileVersion > 11) { byte vByte = 0; vByte = (byte)AStream.ReadByte(); FAlignVert = (View.AlignVert)vByte; // 垂直对齐方式 HC.LoadColorFromStream(AStream, ref FBackgroundColor); // 背景色 } if (AFileVersion > 13) { FBorderSides.Value = (byte)AStream.ReadByte(); // load FBorderSides } bool vNullData = false; vBuffer = BitConverter.GetBytes(vNullData); AStream.Read(vBuffer, 0, vBuffer.Length); vNullData = BitConverter.ToBoolean(vBuffer, 0); if (!vNullData) { FCellData.LoadFromStream(AStream, AStyle, AFileVersion); FCellData.CellHeight = FHeight; } else { FCellData.Dispose(); FCellData = null; } }
public virtual void ParseXml(XmlElement aNode) { FWidth = int.Parse(aNode.Attributes["width"].Value); FHeight = int.Parse(aNode.Attributes["height"].Value); FRowSpan = int.Parse(aNode.Attributes["rowspan"].Value); FColSpan = int.Parse(aNode.Attributes["colspan"].Value); FAlignVert = (HCAlignVert)(byte.Parse(aNode.Attributes["vert"].Value)); FBackgroundColor = HC.HCRGBStringToColor(aNode.Attributes["bkcolor"].Value); HC.SetBorderSideByPro(aNode.Attributes["border"].Value, FBorderSides); if ((FRowSpan < 0) || (FColSpan < 0)) { FCellData.Dispose(); FCellData = null; } else { FCellData.Width = FWidth; // // 不准确的赋值,应该减去2个水平padding,加载时使用无大碍 FCellData.ParseXml(aNode.SelectSingleNode("items") as XmlElement); } }