コード例 #1
0
        public virtual ControlUI findControl(FINDCONTROLPROC proc, ref object data, UInt32 flags)
        {
            if ((flags & ControlFlag.UIFIND_VISIBLE) != 0 && isVisible() == false)
            {
                return(null);
            }
            if ((flags & ControlFlag.UIFIND_ENABLED) != 0 && isEnabled() == false)
            {
                return(null);
            }
            if ((flags & ControlFlag.UIFIND_HITTEST) != 0 && mMouseEnabled == false)
            {
                return(null);
            }
            if (data is Point)
            {
                Point rc = (Point)data;
                if ((flags & ControlFlag.UIFIND_HITTEST) != 0 && mRectItem.Contains(rc) == false)
                {
                    return(null);
                }
            }

            ControlUI ctlUI = (ControlUI)this;

            return(proc(ref ctlUI, ref data));
        }
コード例 #2
0
        public override ControlUI findControl(FINDCONTROLPROC Proc, ref object pData, uint uFlags)
        {
            ControlUI pResult = null;

            if (mExpanded && mSubControl != null)
            {
                pResult = mSubControl.findControl(Proc, ref pData, uFlags);
            }
            if (pResult == null)
            {
                pResult = base.findControl(Proc, ref pData, uFlags);
            }
            return(pResult);
        }
コード例 #3
0
        public override ControlUI findControl(FINDCONTROLPROC proc, ref object data, uint flags)
        {
            ControlUI pResult = null;

            if ((flags & ControlFlag.UIFIND_VISIBLE) != 0 &&
                isVisible() == false)
            {
                return(null);
            }
            if ((flags & ControlFlag.UIFIND_ENABLED) != 0 &&
                isVisible() == false)
            {
                return(null);
            }
            if ((flags & ControlFlag.UIFIND_HITTEST) != 0)
            {
                // 检测水平滚动条控件
                Point pos = (Point)data;
                if (mRectItem.Contains(pos) == false)
                {
                    return(null);
                }

                if (!mMouseChildEnabled)
                {
                    if (mVerticalScrollbar != null)
                    {
                        pResult = mVerticalScrollbar.findControl(proc, ref data, flags);
                    }
                    if (pResult == null && mHorizontalScrollbar != null)
                    {
                        pResult = mHorizontalScrollbar.findControl(proc, ref data, flags);
                    }
                    if (pResult == null)
                    {
                        pResult = base.findControl(proc, ref data, flags);
                    }

                    return(pResult);
                }
            }

            // 检测垂直滚动条控件
            if (mVerticalScrollbar != null)
            {
                pResult = mVerticalScrollbar.findControl(proc, ref data, flags);
            }
            if (pResult == null && mHorizontalScrollbar != null)
            {
                pResult = mHorizontalScrollbar.findControl(proc, ref data, flags);
            }
            if (pResult != null)
            {
                return(pResult);
            }

            if ((flags & ControlFlag.UIFIND_ME_FIRST) != 0)
            {
                pResult = base.findControl(proc, ref data, flags);
                if (pResult != null)
                {
                    return(pResult);
                }
            }
            if ((flags & ControlFlag.UIFIND_TOP_FIRST) != 0)
            {
                for (int i = mItems.Count - 1; i >= 0; i--)
                {
                    pResult = mItems[i].findControl(proc, ref data, flags);
                    if (pResult != null)
                    {
                        return(pResult);
                    }
                }
            }
            else
            {
                foreach (var item in mItems)
                {
                    pResult = item.findControl(proc, ref data, flags);
                    if (pResult != null)
                    {
                        return(pResult);
                    }
                }
            }


            if (pResult == null)
            {
                pResult = base.findControl(proc, ref data, flags);
            }

            return(pResult);
        }