private void DoInsertFloatItem(HCCustomFloatItem aItem) { if (FOnInsertFloatItem != null) { FOnInsertFloatItem(this, aItem); } }
public bool MouseUpFloatItem(MouseEventArgs e) { bool vResult = false; if (FMouseDownIndex >= 0) { if (this.ReadOnly) { return(true); } Undo_New(); UndoAction_FloatItemMirror(FMouseDownIndex); HCCustomFloatItem vFloatItem = FFloatItems[FMouseDownIndex]; MouseEventArgs vMouseArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - vFloatItem.Left, e.Y - vFloatItem.Top, e.Delta); vResult = vFloatItem.MouseUp(vMouseArgs); if (vResult) { Style.UpdateInfoRePaint(); } } return(vResult); }
protected override void DoLoadFromStream(Stream aStream, HCStyle aStyle, ushort aFileVersion) { base.DoLoadFromStream(aStream, aStyle, aFileVersion); if (aFileVersion > 12) { int vFloatCount = 0; byte[] vBuffer = BitConverter.GetBytes(vFloatCount); aStream.Read(vBuffer, 0, vBuffer.Length); vFloatCount = BitConverter.ToInt32(vBuffer, 0); HCCustomFloatItem vFloatItem = null; while (vFloatCount > 0) { int vStyleNo = HCStyle.Null; vBuffer = BitConverter.GetBytes(vStyleNo); aStream.Read(vBuffer, 0, vBuffer.Length); vStyleNo = BitConverter.ToInt32(vBuffer, 0); if ((aFileVersion < 28) && (vStyleNo == (byte)HCShapeStyle.hssLine)) { vFloatItem = new HCFloatLineItem(this); } else { vFloatItem = CreateItemByStyle(vStyleNo) as HCCustomFloatItem; } vFloatItem.LoadFromStream(aStream, aStyle, aFileVersion); FFloatItems.Add(vFloatItem); vFloatCount--; } } }
protected override void DoLoadFromStream(Stream aStream, HCStyle aStyle, ushort aFileVersion) { base.DoLoadFromStream(aStream, aStyle, aFileVersion); if (aFileVersion > 12) { int vFloatCount = 0; byte[] vBuffer = BitConverter.GetBytes(vFloatCount); aStream.Read(vBuffer, 0, vBuffer.Length); vFloatCount = BitConverter.ToInt32(vBuffer, 0); HCCustomFloatItem vFloatItem = null; while (vFloatCount > 0) { int vStyleNo = HCStyle.Null; vBuffer = BitConverter.GetBytes(vStyleNo); aStream.Read(vBuffer, 0, vBuffer.Length); vStyleNo = BitConverter.ToInt32(vBuffer, 0); vFloatItem = CreateFloatItemByStyle(vStyleNo); vFloatItem.LoadFromStream(aStream, aStyle, aFileVersion); FFloatItems.Add(vFloatItem); vFloatCount--; } } }
public bool MouseMoveFloatItem(MouseEventArgs e) { bool Result = true; if ((e.Button == MouseButtons.Left) && (FMouseDownIndex >= 0)) { HCCustomFloatItem vFloatItem = FFloatItems[FMouseDownIndex]; MouseEventArgs vMouseArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - vFloatItem.Left, e.Y - vFloatItem.Top, e.Delta); vFloatItem.MouseMove(vMouseArgs); if (!vFloatItem.Resizing) { vFloatItem.Left = vFloatItem.Left + e.X - FMouseX; vFloatItem.Top = vFloatItem.Top + e.Y - FMouseY; FMouseX = e.X; FMouseY = e.Y; } Style.UpdateInfoRePaint(); } else // 普通鼠标移动 { int vItemIndex = GetFloatItemAt(e.X, e.Y); if (FMouseMoveIndex != vItemIndex) { if (FMouseMoveIndex >= 0) { FFloatItems[FMouseMoveIndex].MouseLeave(); } FMouseMoveIndex = vItemIndex; if (FMouseMoveIndex >= 0) { FFloatItems[FMouseMoveIndex].MouseEnter(); } } if (vItemIndex >= 0) { HCCustomFloatItem vFloatItem = FFloatItems[vItemIndex]; MouseEventArgs vMouseArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - vFloatItem.Left, e.Y - vFloatItem.Top, e.Delta); vFloatItem.MouseMove(vMouseArgs); } else { Result = false; } } return(Result); }
public bool MouseMoveFloatItem(MouseEventArgs e) { bool vResult = false; if (e.Button == MouseButtons.Left) { if (this.ReadOnly) { return(vResult); } if (FMouseDownIndex >= 0) { HCCustomFloatItem vFloatItem = FFloatItems[FMouseDownIndex]; MouseEventArgs vMouseArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - vFloatItem.Left, e.Y - vFloatItem.Top, e.Delta); vResult = vFloatItem.MouseMove(vMouseArgs); if (vResult) { Style.UpdateInfoRePaint(); } } } else // 普通鼠标移动 { int vItemIndex = GetFloatItemAt(e.X, e.Y); if (FMouseMoveIndex != vItemIndex) { if (FMouseMoveIndex >= 0) { FFloatItems[FMouseMoveIndex].MouseLeave(); } FMouseMoveIndex = vItemIndex; if (FMouseMoveIndex >= 0) { FFloatItems[FMouseMoveIndex].MouseEnter(); } } if (vItemIndex >= 0) { HCCustomFloatItem vFloatItem = FFloatItems[vItemIndex]; MouseEventArgs vMouseArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - vFloatItem.Left, e.Y - vFloatItem.Top, e.Delta); vResult = vFloatItem.MouseMove(vMouseArgs); } } return(vResult); }
public bool MouseUpFloatItem(MouseEventArgs e) { bool vResult = false; if (FMouseDownIndex >= 0) { HCCustomFloatItem vFloatItem = FFloatItems[FMouseDownIndex]; MouseEventArgs vMouseArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - vFloatItem.Left, e.Y - vFloatItem.Top, e.Delta); vResult = vFloatItem.MouseUp(vMouseArgs); } return(vResult); }
private HCCustomFloatItem CreateFloatItemByStyle(int aStyleNo) { HCCustomFloatItem Result = null; if (aStyleNo == (byte)HCShapeStyle.hssLine) { Result = new HCFloatLineItem(this); } else { throw new Exception("未找到类型 " + aStyleNo.ToString() + " 对应的创建FloatItem代码!"); } return(Result); }
public override void ParseXml(XmlElement aNode) { XmlElement vItemsNode = aNode.SelectSingleNode("items") as XmlElement; base.ParseXml(aNode); vItemsNode = aNode.SelectSingleNode("floatitems") as XmlElement; for (int i = 0; i <= vItemsNode.ChildNodes.Count - 1; i++) { XmlElement vNode = vItemsNode.ChildNodes[i] as XmlElement; HCCustomFloatItem vFloatItem = CreateFloatItemByStyle(int.Parse(aNode.Attributes["sno"].Value)); vFloatItem.ParseXml(vNode); FFloatItems.Add(vFloatItem); } }
private int GetFloatItemAt(int x, int y) { int Result = -1; HCCustomFloatItem vFloatItem = null; for (int i = 0; i <= FFloatItems.Count - 1; i++) { vFloatItem = FFloatItems[i]; if (vFloatItem.PointInClient(x - vFloatItem.Left, y - vFloatItem.Top)) { Result = i; break; } } return(Result); }
public override void PaintFloatItems(int aPageIndex, int aDataDrawLeft, int aDataDrawTop, int aVOffset, HCCanvas aCanvas, PaintInfo aPaintInfo) { HCCustomFloatItem vFloatItem = null; for (int i = 0; i <= this.FloatItems.Count - 1; i++) { vFloatItem = this.FloatItems[i]; if (vFloatItem.PageIndex == aPageIndex) { vFloatItem.DrawRect = HC.Bounds(vFloatItem.Left, vFloatItem.Top, vFloatItem.Width, vFloatItem.Height); vFloatItem.DrawRect.Offset(aDataDrawLeft, aDataDrawTop - aVOffset); // 将数据起始位置映射到绘制位置 vFloatItem.PaintTo(this.Style, vFloatItem.DrawRect, aDataDrawTop, 0, 0, 0, aCanvas, aPaintInfo); } } }
public virtual void PaintFloatItems(int aPageIndex, int aDataDrawLeft, int aDataDrawTop, int aVOffset, HCCanvas aCanvas, PaintInfo aPaintInfo) { HCCustomFloatItem vFloatItem = null; for (int i = 0; i <= FFloatItems.Count - 1; i++) { vFloatItem = FFloatItems[i]; // 代替下面不生效的代码 RECT vRect = HC.Bounds(vFloatItem.Left, vFloatItem.Top, vFloatItem.Width, vFloatItem.Height); vRect.Offset(aDataDrawLeft, aDataDrawTop - aVOffset); // 将数据起始位置映射到绘制位置 vFloatItem.DrawRect = vRect; // 下面的操作vFloatItemDraw.DrawRect.Offset并不生效 //vFloatItem.DrawRect = HC.Bounds(vFloatItem.Left, vFloatItem.Top, vFloatItem.Width, vFloatItem.Height); //vFloatItem.DrawRect.Offset(aDataDrawLeft, aDataDrawTop - aVOffset); // 将数据起始位置映射到绘制位置 vFloatItem.PaintTo(this.Style, vFloatItem.DrawRect, aDataDrawTop, 0, 0, 0, aCanvas, aPaintInfo); } }
/// <summary> 插入浮动Item </summary> public bool InsertFloatItem(HCCustomFloatItem aFloatItem) { int vStartNo = this.SelectInfo.StartItemNo; int vStartOffset = this.SelectInfo.StartItemOffset; // 取选中起始处的DrawItem int vDrawNo = this.GetDrawItemNoByOffset(vStartNo, vStartOffset); aFloatItem.Left = this.DrawItems[vDrawNo].Rect.Left + this.GetDrawItemOffsetWidth(vDrawNo, this.SelectInfo.StartItemOffset - this.DrawItems[vDrawNo].CharOffs + 1); aFloatItem.Top = this.DrawItems[vDrawNo].Rect.Top; this.FloatItems.Add(aFloatItem); FFloatItemIndex = this.FloatItems.Count - 1; aFloatItem.Active = true; if (!this.DisSelect()) { Style.UpdateInfoRePaint(); } return(true); }
private void DoInsertFloatItem(HCCustomFloatItem aItem) { DoInsertItem(aItem); }