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(); } } } }
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); }
public override void InitializeField() { base.InitializeField(); if (FActiveDomain != null) { FActiveDomain.Clear(); } if (FHotDomain != null) { FHotDomain.Clear(); } }
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]); } } }
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(); } }
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); }