SchedulerControl.CustomDrawDayViewAllDayArea Event
Enables the All-Day Area to be painted manually.
Namespace: DevExpress.XtraScheduler
Assembly: DevExpress.XtraScheduler.v24.2.dll
NuGet Package: DevExpress.Win.Scheduler
#Declaration
public event CustomDrawObjectEventHandler CustomDrawDayViewAllDayArea
#Event Data
The CustomDrawDayViewAllDayArea event's data class is CustomDrawObjectEventArgs. The following properties provide information specific to this event:
Property | Description |
---|---|
Bounds | Returns the bounding rectangle of the drawing area. |
Cache | Gets an object which specifies the storage for the pens, fonts and brushes. Use it for custom painting in Scheduler Reports. |
Graphics | Gets an object used for painting. |
Handled | Gets or sets whether an event was handled. If it was handled, the default actions are not required. |
Object |
Gets information on the painted element. |
The event data class exposes the following methods:
Method | Description |
---|---|
Draw |
Renders the element using the default drawing mechanism. |
Draw |
Paints the required HTML template inside an element that raised this event. The context parameter allows you to assign an object that transfers mouse events to template elements. |
Draw |
Paints the required HTML template inside an element that raised this event. |
Get |
|
Get |
#Remarks
The CustomDrawDayViewAllDayArea
event fires before an All-Day Area is painted. The event parameter’s CustomDrawObjectEventArgs.ObjectInfo property provides the information required to paint an area. The value of this property should be typecast to the DevExpress.XtraScheduler.Drawing.SelectableIntervalViewInfo type.
Note
The Custom
event fires only for the Day View and Work Week View views.
Set the CustomDrawObjectEventArgs.Handled property to true
to prohibit default area painting.
#Example
This example demonstrates how to display scheduled time statistics in the All-Day Area. The IntervalLoadRatioCalculator object calculates work time loads.
private void schedulerControl1_CustomDrawDayViewAllDayArea(object sender, DevExpress.XtraScheduler.CustomDrawObjectEventArgs e)
{
if (schedulerStorage1.Appointments != null)
{
AllDayAreaCell cell = (AllDayAreaCell)e.ObjectInfo;
Resource resource = cell.Resource;
TimeInterval interval = cell.Interval;
AppointmentBaseCollection apts = ((SchedulerControl)sender).Storage.GetAppointments(interval);
float percent = CalcCurrentWorkTimeLoad(apts, interval, resource);
Brush brush;
if (percent == 0.0)
brush = Brushes.LightYellow;
else if (percent < 0.5)
brush = Brushes.LightBlue;
else brush = Brushes.LightCoral;
e.Cache.FillRectangle(brush, e.Bounds);
e.Cache.DrawString(string.Format("{0:P}", percent), cell.Appearance.Font, Brushes.Black, e.Bounds, cell.Appearance.TextOptions.GetStringFormat());
e.Handled = true;
}
}
private float CalcCurrentWorkTimeLoad(AppointmentBaseCollection apts, TimeInterval interval, Resource resource)
{
AppointmentBaseCollection aptsByResource = new AppointmentBaseCollection();
var aptQuery = apts.Where(a => a.ResourceId.Equals(resource.Id));
aptsByResource.AddRange(aptQuery.ToList());
IntervalLoadRatioCalculator calc = new IntervalLoadRatioCalculator(interval, aptsByResource);
return calc.Calculate();
}