コード例 #1
0
        //public int HeaderSize {
        //    get { return m_iHeaderSize; }
        //    set {
        //        if (m_iHeaderSize != value) {
        //            m_iHeaderSize = value;
        //            m_iHeaderSizeSmall = (int)(value / RATIO);
        //        }
        //    }
        //}

        public override bool Equals(object obj)
        {
            MonthObject o   = (MonthObject)obj;
            DateTime    dt1 = new DateTime(m_date.Year, m_date.Month, 1);
            DateTime    dt2 = new DateTime(o.m_date.Year, o.m_date.Month, 1);

            return(dt1 == dt2);
        }
コード例 #2
0
        private void DrawMonthHeader(Rectangle rcClip)
        {
            Rectangle rcHeader = new Rectangle();

            rcHeader.X      = m_rcClient.X;
            rcHeader.Y      = m_rcClient.Y;
            rcHeader.Width  = m_rcClient.Width;
            rcHeader.Height = base.Style.CalendarHeader.Height;// this.HeaderSizeToDraw;

            // Calendar Header
            m_g.FillRectangle(base.Style.CalendarHeader.BackBrush, rcHeader);
            m_g.DrawLines(base.Style.GridPen, MonthObject.PointAroundFromRect(rcHeader));
            CalculateTextRect(rcHeader);
            m_g.DrawString(m_txtMonth.Text, base.Style.CalendarHeader.Font, base.Style.CalendarHeader.ForeBrush, m_txtMonth.ClientRectangle, m_sf);
            m_g.DrawString(m_txtYear.Text, base.Style.CalendarHeader.Font, base.Style.CalendarHeader.ForeBrush, m_txtYear.ClientRectangle, m_sf);

            // Draw Week Header
            rcHeader.Y     += rcHeader.Height;
            rcHeader.Height = base.Style.WeekHeader.Height;// this.HeaderSizeWeek;
            m_g.FillRectangle(base.Style.WeekHeader.BackBrush, rcHeader);

            DateTime dt = DateTime.Today;

            while (dt.DayOfWeek != DayOfWeek.Sunday)
            {
                dt = dt.AddDays(1);
            }

            int iWidth = rcHeader.Width / DAY_PER_WEEK;

            for (int i = 0; i < DAY_PER_WEEK; ++i)
            {
                Rectangle rc = new Rectangle();
                rc.X = rcHeader.X + i * iWidth;
                rc.Y = rcHeader.Y;
                if (i < DAY_PER_WEEK - 1)
                {
                    rc.Width = iWidth;
                }
                else     // last column
                {
                    rc.Width = rcHeader.Width - iWidth * 6;
                }
                rc.Height = rcHeader.Height;
                m_g.DrawLines(base.Style.GridPen, MonthObject.PointAroundFromRect(rc));

                string s = base.Style.WeekText.GetWeekText(dt.DayOfWeek, FormatDate("{0:ddd}", dt));
                m_g.DrawString(s, base.Style.WeekHeader.Font, base.Style.WeekHeader.ForeBrush, rc, m_sf);
                dt = dt.AddDays(1);
            }

            DrawDay(rcClip);
        }
コード例 #3
0
        public override void PaintDay(Calendar calendar, Graphics g, MonthObject monthObj, DayObject dayObj)
        {
            base.PaintDay(calendar, g, monthObj, dayObj);
            StringFormat sf = new StringFormat();

            sf.LineAlignment = StringAlignment.Center;
            sf.Alignment     = StringAlignment.Center;
            string v = this.Value.ToString();

            if (v == string.Empty)
            {
                v = "NONE";
            }
            g.DrawString(v, calendar.Font, Brushes.Blue, dayObj.ClientRectangle, sf);
        }
コード例 #4
0
 public TextObject(Calendar owner, MonthObject month, HitTestCalendarObject objType) : base(owner)
 {
     m_hitTestObj = objType;
     m_month      = month;
 }
コード例 #5
0
 public void Dispose()
 {
     m_monthObject   = null;
     m_editorControl = null;
 }
コード例 #6
0
 public virtual void PaintDay(Calendar calendar, Graphics g, MonthObject monthObj, DayObject dayObj)
 {
     calendar.PaintDay(g, monthObj, dayObj);
 }
コード例 #7
0
        public MonthObject[] GetMonthObject(Calendar owner, Rectangle clientRectangle, int yOffset, int iYearStart, int iMonthStart, ArrayList arDisplayedMonth, MonthObject.PaintDayHandler paintDayHandler)
        {
            try {
                if (arDisplayedMonth == null)
                {
                    arDisplayedMonth = new ArrayList();
                }

                Rectangle rcArea = new Rectangle(clientRectangle.X, clientRectangle.Y + yOffset, clientRectangle.Width - 1, clientRectangle.Height - yOffset - 1);

                DateTime      dtStart = new DateTime(iYearStart, iMonthStart, 1);
                MonthObject[] months  = new MonthObject[m_iMonthCount];
                for (int i = 0; i < m_iMonthCount; ++i)
                {
                    MonthObject mNew  = new MonthObject(owner);
                    DateTime    dtTmp = dtStart.AddMonths(i);
                    mNew.SetDay(dtTmp);
                    if (arDisplayedMonth.Contains(mNew))
                    {
                        int index = arDisplayedMonth.IndexOf(mNew);
                        months[i] = (MonthObject)arDisplayedMonth[index];
                        months[i].SetDay(dtTmp);
                    }
                    else
                    {
                        months[i] = mNew;
                        months[i].AttachOnPaintDayEvent(paintDayHandler);
                    }
                    months[i].ShowDayBeforeMonth = false;
                    months[i].ShowDayAfterMonth  = false;
                    //months[i] = new MonthObject(owner);
                    //months[i].SetDay(dtStart.AddMonths(i));
                }
                int x1, y1, x2, y2;

                int iUnitHeight;
                int iUnitWidth;

                if (m_layout == LayoutType.ThreeMerge)
                {
                    Rectangle rc;
                    iUnitHeight = (rcArea.Height - MONTH_SPACE * 2) / 5;
                    iUnitWidth  = (rcArea.Width - MONTH_SPACE) / 2;
                    rc          = new Rectangle(0, 0, rcArea.Width, iUnitHeight * 3);
                    months[0].ClientRectangle = rc;

                    rc = new Rectangle(0, rc.Y + rc.Height + MONTH_SPACE, iUnitWidth, rcArea.Height - rc.Y - rc.Height - MONTH_SPACE);
                    months[1].ClientRectangle = rc;
                    rc = new Rectangle(rc.X + rc.Width + MONTH_SPACE, rc.Y, rcArea.Width - rc.Width - MONTH_SPACE, rc.Height);
                    months[2].ClientRectangle = rc;


                    months[1].IsSmall = true;
                    months[2].IsSmall = true;

                    months[0].ShowDayBeforeMonth = true;
                    months[2].ShowDayAfterMonth  = true;

                    SetMaxWeek(months[1], months[2]);
                }
                else if (m_layout == LayoutType.Five)
                {
                    int iRow = 4;
                    iUnitWidth  = (rcArea.Width - MONTH_SPACE) / 2;
                    iUnitHeight = (rcArea.Height - MONTH_SPACE * (iRow - 1)) / iRow;

                    Rectangle rc = new Rectangle(0, 0, iUnitWidth, iUnitHeight);
                    months[0].ClientRectangle = rc;

                    rc = new Rectangle(rc.Right + MONTH_SPACE, 0, rcArea.Right - rc.Right - MONTH_SPACE, iUnitHeight);
                    months[1].ClientRectangle = rc;

                    rc = new Rectangle(0, rc.Bottom + MONTH_SPACE, rcArea.Width, iUnitHeight * 2);
                    months[2].ClientRectangle = rc;

                    rc = new Rectangle(0, rc.Bottom + MONTH_SPACE, iUnitWidth, rcArea.Bottom - rc.Bottom - MONTH_SPACE);
                    months[3].ClientRectangle = rc;

                    rc = new Rectangle(rc.Right + MONTH_SPACE, rc.Top, rcArea.Right - rc.Right - MONTH_SPACE, rc.Height);
                    months[4].ClientRectangle = rc;

                    months[0].IsSmall = true;
                    months[1].IsSmall = true;
                    months[3].IsSmall = true;
                    months[4].IsSmall = true;
                    SetMaxWeek(months[0], months[1]);
                    SetMaxWeek(months[3], months[4]);

                    months[0].ShowDayBeforeMonth = true;
                    months[4].ShowDayAfterMonth  = true;
                }
                else
                {
                    iUnitWidth  = (rcArea.Width - (MONTH_SPACE * (m_iMonthCol - 1))) / m_iMonthCol;
                    iUnitHeight = (rcArea.Height - (MONTH_SPACE * (m_iMonthRow - 1))) / m_iMonthRow;
                    int iCount = 0;
                    for (int iRow = 0; iRow < m_iMonthRow; ++iRow)
                    {
                        y1 = iRow * (iUnitHeight + MONTH_SPACE);
                        y2 = y1 + iUnitHeight;
                        int iMaxWeek = -1;
                        for (int iCol = 0; iCol < m_iMonthCol; ++iCol)
                        {
                            x1 = iCol * (iUnitWidth + MONTH_SPACE);
                            if (iCol < m_iMonthCol - 1)
                            {
                                x2 = x1 + iUnitWidth;
                            }
                            else
                            {
                                x2 = rcArea.Right;
                            }
                            months[iCount].ClientRectangle = new Rectangle(x1, y1, x2 - x1, y2 - y1);
                            if (months[iCount].WeekCount > iMaxWeek)
                            {
                                iMaxWeek = months[iCount].WeekCount;
                            }
                            iCount++;
                        }
                        for (int iCol = 0; iCol < m_iMonthCol; ++iCol)
                        {
                            months[iCount - iCol - 1].WeekCount = iMaxWeek;
                        }
                    }
                    months[0].ShowDayBeforeMonth = true;
                    months[months.Length - 1].ShowDayAfterMonth = true;
                }

                //// Keep new month object to array list
                //foreach (MonthObject m in months) {
                //    int index = arDisplayedMonth.IndexOf(m);
                //    if (index >= 0) {
                //        arDisplayedMonth[index] = m;
                //    }
                //}

                return(months);
            } catch (Exception ex) {
                if (ex != null)
                {
                    Console.WriteLine(ex);
                    throw (new Exception(ex.Message));
                }
                return(new MonthObject[0]);
            }
        }