public bool MouseMoveFloatItem(MouseEventArgs e) { bool Result = true; if (((Control.ModifierKeys & Keys.Shift) == Keys.Shift) && (FMouseDownIndex >= 0)) { HCFloatItem 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) { HCFloatItem 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 virtual void PaintFloatItems(int APageIndex, int ADataDrawLeft, int ADataDrawTop, int AVOffset, HCCanvas ACanvas, PaintInfo APaintInfo) { HCFloatItem vFloatItem = null; for (int i = 0; i <= FFloatItems.Count - 1; i++) { vFloatItem = FFloatItems[i]; 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); } }
private HCFloatItem CreateFloatItemByStyle(int AStyleNo) { HCFloatItem Result = null; if (AStyleNo == HCFloatStyle.Line) { Result = new HCFloatLineItem(this); } else { throw new Exception("未找到类型 " + AStyleNo.ToString() + " 对应的创建FloatItem代码!"); } return(Result); }
private int GetFloatItemAt(int X, int Y) { int Result = -1; HCFloatItem vFloatItem = null; for (int i = 0; i <= FFloatItems.Count - 1; i++) { vFloatItem = FFloatItems[i]; if (vFloatItem.PtInClient(X - vFloatItem.Left, Y - vFloatItem.Top)) { Result = i; break; } } return(Result); }
public bool MouseUpFloatItem(MouseEventArgs e) { bool Result = true; if (FMouseDownIndex >= 0) { HCFloatItem vFloatItem = FFloatItems[FMouseDownIndex]; MouseEventArgs vMouseArgs = new MouseEventArgs(e.Button, e.Clicks, e.X - vFloatItem.Left, e.Y - vFloatItem.Top, e.Delta); vFloatItem.MouseUp(vMouseArgs); } else { Result = false; } return(Result); }
/// <summary> 插入浮动Item </summary> public bool InsertFloatItem(HCFloatItem 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); }
public override void LoadFromStream(Stream AStream, HCStyle AStyle, ushort AFileVersion) { base.LoadFromStream(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); HCFloatItem vFloatItem = null; while (vFloatCount > 0) { int vStyleNo = HCStyle.Null; vBuffer = BitConverter.GetBytes(vStyleNo); AStream.Read(vBuffer, 0, vBuffer.Length); vFloatItem = CreateFloatItemByStyle(vStyleNo); vFloatItem.LoadFromStream(AStream, AStyle, AFileVersion); FFloatItems.Add(vFloatItem); vFloatCount--; } } }