public ListUI() { mCallback = null; mCurSel = -1; mExpandedItem = -1; mList = new ListBodyUI(this); mHeader = new ListHeaderUI(); mListInfo = new TListInfoUI(); mListInfo.mListColumn = new Dictionary <int, Rectangle>(); add(mHeader); base.add(mList); mListInfo.mColumns = 0; mListInfo.mFontIdx = -1; mListInfo.mTextStyle = (int)FormatFlags.DT_VCENTER; // m_uTextStyle(DT_VCENTER | DT_END_ELLIPSIS) mListInfo.mTextColor = Color.FromArgb(0xFF, 00, 00, 00).ToArgb(); mListInfo.mBkColor = 0; mListInfo.mSelectedTextColor = Color.FromArgb(0xFF, 00, 00, 00).ToArgb(); mListInfo.mSelectedBkColor = Color.FromArgb(0xFF, 0xC1, 0xE3, 0xFF).ToArgb(); mListInfo.mHotTextColor = Color.FromArgb(0xFF, 0x00, 0x00, 0x00).ToArgb(); mListInfo.mHotBkColor = Color.FromArgb(0xFF, 0xE9, 0xF5, 0xFF).ToArgb(); mListInfo.mDisabledTextColor = Color.FromArgb(0xFF, 0xCC, 0xCC, 0xCC).ToArgb(); mListInfo.mDisabledBkColor = Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF).ToArgb(); mListInfo.mLineColor = 0; mListInfo.mShowHtml = false; mListInfo.mExpandable = false; mListInfo.mMultiExpandable = false; mScrollSelect = false; }
// 渲染前会调用该函数计算列表大小 public override Size estimateSize(Size szAvailable) { if (mOwner == null) { return(new Size(0, 0)); } TListInfoUI pInfo = mOwner.getListInfo(); Size cXY = mXYFixed; if (cXY.Height == 0 && mManager != null) { cXY.Height = mManager.getDefaultFont().Height + 8; cXY.Height += pInfo.mRectTextPadding.Top + pInfo.mRectTextPadding.Bottom; } if (cXY.Width == 0 && mManager != null) { Rectangle rcText = new Rectangle(0, 0, 9999, cXY.Height); if (pInfo.mShowHtml) { int nLinks = 0; Rectangle[] rcs = null; string[] sss = null; Graphics graphics = mManager.getBufferManager().getGraphics(); Bitmap bitmap = mManager.getBufferManager().getBackBuffer(); RenderEngine.drawHtmlText(ref graphics, ref bitmap, ref mManager, ref rcText, mText, 0, ref rcs, ref sss, ref nLinks, (int)FormatFlags.DT_SINGLELINE | (int)FormatFlags.DT_CALCRECT | pInfo.mTextStyle & ~(int)FormatFlags.DT_RIGHT & ~(int)FormatFlags.DT_CENTER); } else { Graphics graphics = mManager.getBufferManager().getGraphics(); Bitmap bitmap = mManager.getBufferManager().getBackBuffer(); RenderEngine.drawText(ref graphics, ref bitmap, ref mManager, ref rcText, mText, 0, pInfo.mFontIdx, (int)FormatFlags.DT_SINGLELINE | (int)FormatFlags.DT_CALCRECT | pInfo.mTextStyle & ~(int)FormatFlags.DT_RIGHT & ~(int)FormatFlags.DT_CENTER); } cXY.Width = rcText.Right - rcText.Left + pInfo.mRectTextPadding.Left + pInfo.mRectTextPadding.Right; } return(cXY); }
public override Size estimateSize(Size szAvailable) { TListInfoUI pInfo = null; if (mOwner != null) { pInfo = mOwner.getListInfo(); } Size cXY = mXYFixed; if (cXY.Height == 0 && mManager != null) { cXY.Height = mManager.getDefaultFont().Height + 8; if (pInfo != null) { cXY.Height += pInfo.mRectTextPadding.Top + pInfo.mRectTextPadding.Bottom; } } return(cXY); }
public ComboUI() { mWindow = null; mCurSel = -1; mTextPadding = new Rectangle(0, 0, 0, 0); mDropBoxAttributes = ""; mDropBox = new Size(0, 150); mButtonState = 0; mNormalImage = ""; mHotImage = ""; mPushedImage = ""; mFocusedImage = ""; mDisabledImage = ""; mListInfo = new TListInfoUI(); mListInfo.mColumns = 0; mListInfo.mFontIdx = -1; mListInfo.mTextStyle = (int)FormatFlags.DT_VCENTER; mListInfo.mTextColor = Color.FromArgb(0xFF, 00, 00, 00).ToArgb(); mListInfo.mBkColor = 0; mListInfo.mSelectedTextColor = Color.FromArgb(0xFF, 00, 00, 00).ToArgb(); mListInfo.mSelectedBkColor = Color.FromArgb(0xFF, 0xC1, 0xE3, 0xFF).ToArgb(); mListInfo.mHotTextColor = Color.FromArgb(0xFF, 00, 00, 00).ToArgb(); mListInfo.mHotBkColor = Color.FromArgb(0xFF, 0xE9, 0xF5, 0xFF).ToArgb(); mListInfo.mDisabledTextColor = Color.FromArgb(0xFF, 0xCC, 0xCC, 0xCC).ToArgb(); mListInfo.mDisabledBkColor = Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF).ToArgb(); mListInfo.mLineColor = 0; mListInfo.mShowHtml = false; mListInfo.mExpandable = false; mListInfo.mMultiExpandable = false; mListInfo.mRectTextPadding = new Rectangle(0, 0, 0, 0); mListInfo.mListColumn = new Dictionary <int, Rectangle>(); }
public void drawItemBk(ref Graphics graphics, ref Bitmap bitmap, ref Rectangle rcItem) { if (mOwner == null) { return; } TListInfoUI pInfo = mOwner.getListInfo(); int iBackColor = pInfo.mBkColor; if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0) { iBackColor = pInfo.mHotBkColor; } if (isSelected()) { iBackColor = pInfo.mSelectedBkColor; } if (!isEnabled()) { iBackColor = pInfo.mDisabledBkColor; } if (iBackColor != 0) { RenderEngine.drawColor(ref graphics, ref bitmap, ref mRectItem, iBackColor); } if (!isEnabled()) { if (pInfo.mDisabledImage != "") { if (!drawImage(ref graphics, ref bitmap, pInfo.mDisabledImage)) { pInfo.mDisabledImage = ""; } else { return; } } } if (isSelected()) { if (pInfo.mSelectedImage != "") { if (!drawImage(ref graphics, ref bitmap, pInfo.mSelectedImage)) { pInfo.mSelectedImage = ""; } else { return; } } } if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0) { if (pInfo.mHotImage != "") { if (!drawImage(ref graphics, ref bitmap, pInfo.mHotImage)) { pInfo.mHotImage = ""; } else { return; } } } if (mBkImage != "") { if (!drawImage(ref graphics, ref bitmap, mBkImage)) { mBkImage = ""; } } if (mBkImage == "") { if (pInfo.mImage != "") { if (!drawImage(ref graphics, ref bitmap, pInfo.mImage)) { pInfo.mImage = ""; } else { return; } } } if (pInfo.mLineColor != 0) { Rectangle rcLine = new Rectangle(mRectItem.Left, mRectItem.Bottom - 1, mRectItem.Right, mRectItem.Bottom - 1); RenderEngine.drawLine(ref graphics, ref bitmap, ref rcLine, 1, pInfo.mLineColor); } }
public override void drawItemText(ref Graphics graphics, ref Bitmap bitmap, ref Rectangle rcItem) { if (mText == "") { return; } if (mOwner == null) { return; } TListInfoUI pInfo = mOwner.getListInfo(); int iTextColor = pInfo.mTextColor; if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0) { iTextColor = pInfo.mHotTextColor; } if (isSelected()) { iTextColor = pInfo.mSelectedTextColor; } if (!isEnabled()) { iTextColor = pInfo.mDisabledTextColor; } int nLinks = 0; Rectangle rcText = rcItem; int newLeft = rcText.Left + pInfo.mRectTextPadding.Left; int newRight = rcText.Right - pInfo.mRectTextPadding.Right; int newTop = rcText.Top + pInfo.mRectTextPadding.Top; int newBottom = rcText.Bottom - pInfo.mRectTextPadding.Bottom; rcText.X = newLeft; rcText.Width = newRight - newLeft; rcText.Y = newTop; rcText.Height = newBottom - newTop; Rectangle rcccc = rcText; if (pInfo.mShowHtml) { Rectangle[] rcs = null; string[] ss = null; RenderEngine.drawHtmlText(ref graphics, ref bitmap, ref mManager, ref rcText, mText, iTextColor, ref rcs, ref ss, ref nLinks, (int)FormatFlags.DT_SINGLELINE | pInfo.mTextStyle); } else { RenderEngine.drawText(ref graphics, ref bitmap, ref mManager, ref rcText, mText, iTextColor, pInfo.mFontIdx, (int)FormatFlags.DT_SINGLELINE | pInfo.mTextStyle); } }
public override void drawItemText(ref Graphics graphics, ref Bitmap bitmap, ref Rectangle rcItem) { if (mOwner == null) { return; } TListInfoUI pInfo = mOwner.getListInfo(); int iTextColor = pInfo.mTextColor; if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0) { iTextColor = pInfo.mHotTextColor; } if (isSelected()) { iTextColor = pInfo.mSelectedTextColor; } if (!isEnabled()) { iTextColor = pInfo.mDisabledTextColor; } IListCallbackUI pCallback = mOwner.getTextCallback(); if (pCallback == null) { return; } mNumLinks = 0; int nLinks = mRectLinks.Length; for (int i = 0; i < pInfo.mColumns; i++) { Rectangle rcItem1 = new Rectangle(pInfo.mListColumn[i].Left, mRectItem.Top, pInfo.mListColumn[i].Width, mRectItem.Height); int newLeft = rcItem1.Left + pInfo.mRectTextPadding.Left; int newRight = rcItem1.Right - pInfo.mRectTextPadding.Right; int newTop = rcItem1.Top + pInfo.mRectTextPadding.Top; int newBottom = rcItem1.Bottom - pInfo.mRectTextPadding.Bottom; rcItem1.X = newLeft; rcItem1.Width = newRight - newLeft; rcItem1.Y = newTop; rcItem1.Height = newBottom - newTop; string pstrText = pCallback.getItemText(this, mIndex, i); if (pInfo.mShowHtml) { RenderEngine.drawHtmlText(ref graphics, ref bitmap, ref mManager, ref rcItem1, pstrText, iTextColor, ref mRectLinks, ref mLinks, ref nLinks, (int)FormatFlags.DT_SINGLELINE | pInfo.mTextStyle); } else { RenderEngine.drawText(ref graphics, ref bitmap, ref mManager, ref rcItem1, pstrText, iTextColor, pInfo.mFontIdx, (int)FormatFlags.DT_SINGLELINE | pInfo.mTextStyle); } if (nLinks > 0) { mNumLinks = nLinks; nLinks = 0; } else { nLinks = mRectLinks.Length; } } }
public override void setScrollPos(Size szPos) { int cx = 0; int cy = 0; if (mVerticalScrollbar != null && mVerticalScrollbar.isVisible()) { int iLastScrollPos = mVerticalScrollbar.getScrollPos(); mVerticalScrollbar.setScrollPos(szPos.Height); cy = mVerticalScrollbar.getScrollPos() - iLastScrollPos; } if (mHorizontalScrollbar != null && mHorizontalScrollbar.isVisible()) { int iLastScrollPos = mHorizontalScrollbar.getScrollPos(); mHorizontalScrollbar.setScrollPos(szPos.Width); cx = mHorizontalScrollbar.getScrollPos() - iLastScrollPos; } if (cx == 0 && cy == 0) { return; } Rectangle rcPos; for (int it2 = 0; it2 < mItems.Count; it2++) { ControlUI pControl = mItems[it2]; if (!pControl.isVisible()) { continue; } if (pControl.isFloat()) { continue; } rcPos = pControl.getPos(); int newLeft = rcPos.Left - cx; int newRight = rcPos.Right - cx; int newTop = rcPos.Top - cy; int newBottom = rcPos.Bottom - cy; rcPos.X = newLeft; rcPos.Width = newRight - newLeft; rcPos.Y = newTop; rcPos.Height = newBottom - newTop; pControl.setPos(rcPos); } invalidate(); if (cx != 0 && mOwner != null) { ListHeaderUI pHeader = mOwner.getHeader(); if (pHeader == null) { return; } TListInfoUI pInfo = mOwner.getListInfo(); pInfo.mColumns = Math.Min(pHeader.getCount(), ListUI.UILIST_MAX_COLUMNS); if (!pHeader.isVisible()) { pHeader.setInternVisible(true); } for (int i = 0; i < pInfo.mColumns; i++) { ControlUI pControl = pHeader.getItemAt(i); if (!pControl.isVisible()) { continue; } if (pControl.isFloat()) { continue; } Rectangle rcPos1 = pControl.getPos(); int newLeft = rcPos1.Left - cx; int newRight = rcPos1.Right - cx; rcPos1.X = newLeft; rcPos1.Width = newRight - newLeft; pControl.setPos(rcPos1); pInfo.mListColumn[i] = pControl.getPos(); } if (!pHeader.isVisible()) { pHeader.setInternVisible(false); } } }
public override void eventProc(ref TEventUI newEvent) { if (!isMouseEnabled() && newEvent.mType > (int)EVENTTYPE_UI.UIEVENT__MOUSEBEGIN && newEvent.mType < (int)EVENTTYPE_UI.UIEVENT__MOUSEEND) { if (mOwner != null) { mOwner.eventProc(ref newEvent); } else { base.eventProc(ref newEvent); } return; } if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_BUTTONDOWN) { if (isEnabled()) { mManager.sendNotify(this, "itemclick"); select(); invalidate(); } return; } if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_MOUSEMOVE) { return; } if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_BUTTONUP) { if (mOwner == null) { return; } TListInfoUI pInfo = mOwner.getListInfo(); Rectangle rcExpander = new Rectangle(mRectItem.Left + mRectExpander.Left, mRectItem.Top + mRectExpander.Top, mRectItem.Left + mRectExpander.Right, mRectItem.Top + mRectExpander.Bottom); if (pInfo.mExpandable && rcExpander.Contains(newEvent.mMousePos)) { expand(!mExpanded); } return; } if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_KEYDOWN) { switch ((Keys)newEvent.mKey) { case Keys.Left: expand(false); return; case Keys.Right: expand(true); return; } } if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_MOUSEENTER) { if ((mButtonState & (int)PaintFlags.UISTATE_HOT) == 0) { mButtonState |= (int)PaintFlags.UISTATE_HOT; invalidate(); } return; } if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_MOUSELEAVE) { if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0) { mButtonState &= ~(int)PaintFlags.UISTATE_HOT; invalidate(); } return; } base.eventProc(ref newEvent); }