Exemplo n.º 1
0
        protected void FormatPrepare(int AFirstDrawItemNo, int ALastItemNo = -1)
        {
            if (FFormatCount != 0)
            {
                return;
            }

            FormatInit();

            if ((AFirstDrawItemNo > 0) && (!DrawItems[AFirstDrawItemNo].LineFirst))
            {
                throw new Exception("行中格式化必需从行首开始,否则会影响分散的计算!");
            }
            //vFirstDrawItemNo := Items[AStartItemNo].FirstDItemNo;

            int vLastItemNo = -1, vFmtTopOffset = -1;

            if (ALastItemNo < 0)
            {
                vLastItemNo = DrawItems[AFirstDrawItemNo].ItemNo;
            }
            else
            {
                vLastItemNo = ALastItemNo;
            }

            int vLastDrawItemNo = GetItemLastDrawItemNo(vLastItemNo);

            DrawItems.MarkFormatDelete(AFirstDrawItemNo, vLastDrawItemNo);
            if (AFirstDrawItemNo > 0)
            {
                FFormatStartTop = DrawItems[AFirstDrawItemNo - 1].Rect.Bottom;
                vFmtTopOffset   = DrawItems[AFirstDrawItemNo].Rect.Top - FFormatStartTop;
            }
            else
            {
                FFormatStartTop = 0;
                vFmtTopOffset   = 0;
            }

            for (int i = AFirstDrawItemNo + 1; i <= vLastDrawItemNo; i++)
            {
                if (DrawItems[i].LineFirst)
                {
                    vFmtTopOffset = vFmtTopOffset + DrawItems[i].Rect.Top - DrawItems[i - 1].Rect.Bottom;
                }
            }

            if (vFmtTopOffset != 0)
            {
                FFormatEndBottom = -1;
            }
            else
            {
                FFormatEndBottom = DrawItems[vLastDrawItemNo].Rect.Bottom - vFmtTopOffset;
            }
        }
Exemplo n.º 2
0
        public virtual void ReFormat()
        {
            if (FFormatCount == 0)
            {
                DrawItems.Clear();
                InitializeField();

                DrawItems.MarkFormatDelete(0, DrawItems.Count - 1);

                FormatInit();
                FormatRange(0, Items.Count - 1);

                FFormatHeightChange = true;
            }

            if ((SelectInfo.StartItemNo >= 0) && (SelectInfo.StartItemNo < Items.Count))
            {
                ReSetSelectAndCaret(SelectInfo.StartItemNo, SelectInfo.StartItemOffset);  // 防止清空后格式化完成后没有选中起始访问出错
            }
            else
            {
                ReSetSelectAndCaret(0, 0);
            }
        }