//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); }
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); }
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); }
public TextObject(Calendar owner, MonthObject month, HitTestCalendarObject objType) : base(owner) { m_hitTestObj = objType; m_month = month; }
public void Dispose() { m_monthObject = null; m_editorControl = null; }
public virtual void PaintDay(Calendar calendar, Graphics g, MonthObject monthObj, DayObject dayObj) { calendar.PaintDay(g, monthObj, dayObj); }
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]); } }