private void DrawWeekCell(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e, HolidayWeekInfo weekinfo, DateTime date) { bool bFocused = gvAbsencePlanning.IsCellSelected(e.RowHandle, e.Column); EmployeeLongTimeAbsence absence = weekinfo.GetEmployeeLongTimeAbsence(date); if (absence != null) { if (bFocused) { e.Cache.FillRectangle(Color.LightBlue, Rectangle.Inflate(e.Bounds, 1, 1)); e.Cache.DrawRectangle(e.Cache.GetPen(Color.Black), Rectangle.Inflate(e.Bounds, 1, 1)); } else { Color color = Color.FromArgb(absence.Absence.Color); e.Cache.FillRectangle(e.Cache.GetSolidBrush(color), e.Bounds); } e.Cache.DrawString(absence.Absence.CharID, e.Appearance.Font, e.Cache.GetSolidBrush(e.Appearance.ForeColor), e.Bounds, e.Appearance.TextOptions.GetStringFormat()); } else { if (bFocused) { e.Cache.FillRectangle(Color.LightBlue, Rectangle.Inflate(e.Bounds, 1, 1)); e.Cache.DrawRectangle(e.Cache.GetPen(Color.Black), Rectangle.Inflate(e.Bounds, 1, 1)); } List<AbsenceTimeRange> lst = weekinfo.GetAbsencesByDate(date); if (lst != null && lst.Count > 0) { Font cellfont = e.Appearance.Font; Rectangle cellBound = Rectangle.Inflate(e.Bounds , -1, -1); Brush cellbrush = Brushes.White; Brush absenceBrush = null; StringFormat sformat = new StringFormat(StringFormatFlags.MeasureTrailingSpaces | StringFormatFlags.NoWrap); cellbrush = Brushes.Black; string str = String.Empty; int heightCell = (int)(cellBound.Height);// / 2); foreach (AbsenceTimeRange range in lst) { str = TextParser.AbsenceTimeRangeToString(range.Begin, range.End, range.Absence.CharID); Size sf = e.Cache.CalcTextSize(str, cellfont, sformat, 10000).ToSize(); absenceBrush = e.Cache.GetSolidBrush(Color.FromArgb(range.Absence.Color)); e.Cache.DrawString(str, cellfont, absenceBrush, cellBound, sformat); cellBound.Y += sf.Height + 2; heightCell -= (sf.Height + 2); if ((heightCell - (sf.Height + 2)) < 0) break; } } } e.Handled = true; }
private void DrawWeekCell(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e, HolidayWeekInfo weekinfo) { bool bFocused = gvAbsencePlanning.IsCellSelected(e.RowHandle, e.Column); Color color = weekinfo.WeekColor; string value = weekinfo.Value; if (bFocused) color = Color.LightBlue; e.Appearance.BackColor = e.Appearance.BackColor2 = color; e.Cache.FillRectangle(e.Cache.GetSolidBrush(color), e.Bounds); e.Cache.DrawString(value, e.Appearance.Font, e.Cache.GetSolidBrush(e.Appearance.ForeColor), e.Bounds, e.Appearance.TextOptions.GetStringFormat()); e.Handled = true; }