private HCDomain GetActiveDomain() { HCDomain Result = null; if (FActiveDomain.BeginNo >= 0) { Result = FActiveDomain; } return(Result); }
private void GetDomainFrom(int AItemNo, int AOffset, HCDomain ADomain) { ADomain.Clear(); if ((AItemNo < 0) || (AOffset < 0)) { return; } /* 找起始标识 }*/ int vCount = 0; // 确定往前找的起始位置 int vStartNo = AItemNo; int vEndNo = AItemNo; if (Items[AItemNo] is HCDomainItem) { if ((Items[AItemNo] as HCDomainItem).MarkType == MarkType.cmtBeg) { if (AOffset == HC.OffsetAfter) { ADomain.BeginNo = AItemNo; // 当前即为起始标识 vEndNo = AItemNo + 1; } else // 光标在前面 { if (AItemNo > 0) { vStartNo = AItemNo - 1; // 从前一个往前 } else // 是在第一个前面 { return; // 不用找了 } } } else // 查找位置是结束标记 { if (AOffset == HC.OffsetAfter) { if (AItemNo < Items.Count - 1) { vEndNo = AItemNo + 1; } else // 是最后一个后面 { return; // 不用找了 } } else // 光标在前面 { ADomain.EndNo = AItemNo; vStartNo = AItemNo - 1; } } } if (ADomain.BeginNo < 0) { for (int i = vStartNo; i >= 0; i--) // 找 { if (Items[i] is HCDomainItem) { if ((Items[i] as HCDomainItem).MarkType == MarkType.cmtBeg) { if (vCount != 0) { vCount--; } else { ADomain.BeginNo = i; break; } } else // 结束标记 { vCount++; // 有嵌套 } } } } /* 找结束标识 }*/ if ((ADomain.BeginNo >= 0) && (ADomain.EndNo < 0)) { vCount = 0; for (int i = vEndNo; i <= Items.Count - 1; i++) { if (Items[i] is HCDomainItem) { if ((Items[i] as HCDomainItem).MarkType == MarkType.cmtEnd) { if (vCount != 0) { vCount--; } else { ADomain.EndNo = i; break; } } else // 是起始标记 { vCount++; // 有嵌套 } } } if (ADomain.EndNo < 0) { throw new Exception("异常:获取数据组结束出错!"); } } }
public HCRichData(HCStyle AStyle) : base(AStyle) { FDomainStartDeletes = new List <int>(); FHotDomain = new HCDomain(); FActiveDomain = new HCDomain(); }