Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        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--;
                }
            }
        }