コード例 #1
0
ファイル: HCRichData.cs プロジェクト: 15070217668/HCView-.net
        public override void GetCaretInfo(int AItemNo, int AOffset, ref HCCaretInfo ACaretInfo)
        {
            base.GetCaretInfo(AItemNo, AOffset, ref ACaretInfo);

            // 赋值激活Group信息,清除在 MouseDown
            if (this.SelectInfo.StartItemNo >= 0)
            {
                HCCustomRichData vTopData = GetTopLevelData();
                if (vTopData == this)
                {
                    if (FActiveDomain.BeginNo >= 0)
                    {
                        FActiveDomain.Clear();
                        FDrawActiveDomainRegion = false;
                        Style.UpdateInfoRePaint();
                    }
                    // 获取当前光标处ActiveDeGroup信息
                    this.GetDomainFrom(this.SelectInfo.StartItemNo, this.SelectInfo.StartItemOffset, FActiveDomain);
                    if (FActiveDomain.BeginNo >= 0)
                    {
                        FDrawActiveDomainRegion = true;
                        Style.UpdateInfoRePaint();
                    }
                }
            }
        }
コード例 #2
0
ファイル: HCViewData.cs プロジェクト: HunSoft/HCView-CSharp
        public bool DeleteDomain(HCDomainInfo aDomain)
        {
            if (aDomain.BeginNo < 0)
            {
                return(false);
            }

            Undo_New();

            int vCaretItemNo = aDomain.BeginNo;

            int vFirstDrawItemNo = GetFormatFirstDrawItem(Items[aDomain.BeginNo].FirstDItemNo);
            int vParaLastItemNo  = GetParaLastItemNo(aDomain.EndNo);

            if (Items[aDomain.BeginNo].ParaFirst)
            {
                if (aDomain.EndNo == vParaLastItemNo)
                {
                    if (aDomain.BeginNo > 0)
                    {
                        vFirstDrawItemNo = GetFormatFirstDrawItem(Items[aDomain.BeginNo].FirstDItemNo - 1);
                    }
                }
                else  // 域结束不是段尾,起始是段首
                {
                    UndoAction_ItemParaFirst(aDomain.EndNo + 1, 0, true);
                    Items[aDomain.EndNo + 1].ParaFirst = true;
                }
            }

            FormatPrepare(vFirstDrawItemNo, vParaLastItemNo);

            int vDelCount = 0;

            for (int i = aDomain.EndNo; i >= aDomain.BeginNo; i--)  // 删除域及域范围内的Ite
            {
                UndoAction_DeleteItem(i, 0);
                Items.Delete(i);
                vDelCount++;
            }

            FActiveDomain.Clear();
            ReFormatData(vFirstDrawItemNo, vParaLastItemNo - vDelCount, -vDelCount);

            this.InitializeField();
            if (vCaretItemNo > Items.Count - 1)
            {
                ReSetSelectAndCaret(vCaretItemNo - 1);
            }
            else
            {
                ReSetSelectAndCaret(vCaretItemNo, 0);
            }

            Style.UpdateInfoRePaint();
            Style.UpdateInfoReCaret();

            return(true);
        }
コード例 #3
0
ファイル: HCRichData.cs プロジェクト: 15070217668/HCView-.net
        public override void InitializeField()
        {
            base.InitializeField();
            if (FActiveDomain != null)
            {
                FActiveDomain.Clear();
            }

            if (FHotDomain != null)
            {
                FHotDomain.Clear();
            }
        }
コード例 #4
0
ファイル: HCViewData.cs プロジェクト: ganjiayi/HCView-CSharp
        public override void GetCaretInfo(int aItemNo, int aOffset, ref HCCaretInfo aCaretInfo)
        {
            base.GetCaretInfo(aItemNo, aOffset, ref aCaretInfo);

            bool vRePaint = false;

            // 赋值激活Group信息,清除在 MouseDown
            if (this.SelectInfo.StartItemNo >= 0)
            {
                HCCustomData vTopData = GetTopLevelData();
                if (vTopData == this)
                {
                    if (this.Style.DrawActiveDomainRegion && (FActiveDomain.BeginNo >= 0))
                    {
                        vRePaint = true;
                    }

                    // 获取当前光标处ActiveDeGroup信息
                    GetDomainFrom(SelectInfo.StartItemNo, SelectInfo.StartItemOffset, FActiveDomain);

                    if (this.Style.DrawActiveDomainRegion && (FActiveDomain.BeginNo >= 0))
                    {
                        vRePaint = true;
                    }
                }
            }
            else
            if (this.Style.DrawActiveDomainRegion && (FActiveDomain.BeginNo >= 0))
            {
                FActiveDomain.Clear();
                vRePaint = true;
            }

            if (vRePaint)
            {
                Style.UpdateInfoRePaint();
            }

            if (FCaretItemChanged)
            {
                FCaretItemChanged = false;
                if (FOnCaretItemChanged != null)
                {
                    FOnCaretItemChanged(this, Items[SelectInfo.StartItemNo]);
                }
            }
        }
コード例 #5
0
ファイル: HCRichData.cs プロジェクト: 15070217668/HCView-.net
        public override void MouseDown(MouseEventArgs e)
        {
            if (FActiveDomain.BeginNo >= 0)
            {
                Style.UpdateInfoRePaint();
            }

            FActiveDomain.Clear();
            FDrawActiveDomainRegion = false;

            base.MouseDown(e);

            if (e.Button == MouseButtons.Right)
            {
                Style.UpdateInfoReCaret();
            }
        }
コード例 #6
0
ファイル: HCViewData.cs プロジェクト: qq32qq/HCView-CSharp
        public bool DeleteDomainByItemNo(int aStartNo, int aEndNo)
        {
            if (aStartNo < 0)
            {
                return(false);
            }

            Undo_New();

            int vFirstDrawItemNo = GetFormatFirstDrawItem(Items[aStartNo].FirstDItemNo);
            int vParaLastItemNo  = GetParaLastItemNo(aEndNo);

            if (Items[aStartNo].ParaFirst)
            {
                if (aEndNo == vParaLastItemNo)
                {
                    if (aStartNo > 0)
                    {
                        vFirstDrawItemNo = GetFormatFirstDrawItem(Items[aStartNo].FirstDItemNo - 1);
                    }
                }
                else  // 域结束不是段尾,起始是段首
                {
                    UndoAction_ItemParaFirst(aEndNo + 1, 0, true);
                    Items[aEndNo + 1].ParaFirst = true;
                }
            }

            FormatPrepare(vFirstDrawItemNo, vParaLastItemNo);

            int  vDelCount       = 0;
            bool vBeginPageBreak = Items[aStartNo].PageBreak;

            for (int i = aEndNo; i >= aStartNo; i--)  // 删除域及域范围内的Ite
            {
                UndoAction_DeleteItem(i, 0);
                Items.Delete(i);
                vDelCount++;
            }

            FActiveDomain.Clear();

            if (aStartNo == 0)  // 删除完了
            {
                HCCustomItem vItem = CreateDefaultTextItem();
                vItem.ParaFirst = true;
                vItem.PageBreak = vBeginPageBreak;

                Items.Insert(aStartNo, vItem);
                UndoAction_InsertItem(aStartNo, 0);
                vDelCount--;
            }

            ReFormatData(vFirstDrawItemNo, vParaLastItemNo - vDelCount, -vDelCount);

            this.InitializeField();
            if (aStartNo > Items.Count - 1)
            {
                ReSetSelectAndCaret(aStartNo - 1);
            }
            else
            {
                ReSetSelectAndCaret(aStartNo, 0);
            }

            Style.UpdateInfoRePaint();
            Style.UpdateInfoReCaret();

            return(true);
        }