示例#1
0
 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;
 }
示例#2
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;
            }
        }
示例#3
0
        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;
            }
        }
示例#4
0
        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);
            }
        }