delphi - cxDateNavigator1 将周末文本颜色设置为红色

标签 delphi devexpress tcxgrid

TcxDateNavigator中,是否可以使用不同的文本颜色(红色)来标记周末(星期六、星期日)?

TMS 已实现此功能,但我似乎在这个 DevExpress 组件中找不到该功能。

最佳答案

对于cxDateNavigator,您可以使用其OnCustomDrawDayNumber事件处理程序,例如,如下所示:

uses
  DateUtils, cxDateUtils;

procedure TForm60.cxDateNavigator1CustomDrawDayNumber(Sender: TObject; ACanvas: TcxCanvas; AViewInfo: TcxSchedulerDateNavigatorDayNumberViewInfo; var ADone: Boolean);
begin
  if DayOfTheWeek(AViewInfo.Date) in [DaySaturday, DaySunday] then
  begin
    AViewInfo.Bold := True;
    ACanvas.Font.Color := clGreen;
    ACanvas.Brush.Color := clYellow;
  end;
end;

enter image description here

我不建议您在周末使用红色,因为它通常表示假期。

如果您想知道鼠标指向的日期。您可以实现 OnMouseMove 事件:

procedure TForm60.cxDateNavigator1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
  dt: TDateTime;
begin
  dt := TcxDateNavigator(Sender).HitTest.Time;
  if dt = NullDate then
    Caption := 'You are pointing outside the calendar area'
  else
    Caption := 'You are pointing at ' + FormatDateTime(FormatSettings.LongDateFormat, dt);

end;

关于delphi - cxDateNavigator1 将周末文本颜色设置为红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29482437/

相关文章:

delphi - 自定义 Windows Vista 日历显示

c# - 将 Delphi 变体记录转换为 C# 结构

c# - 使用 WinForms DevExpress XtraGrid c# 显示层次结构树

delphi - 调用 cxGrid Navigator 按钮的 Onclick 事件

multithreading - "EOSError 1400 - Invalid window handle"的可能原因

delphi - 将控制集中在调整大小上的首选方法

devexpress - 如何在 devexpress xtragrid 中禁用行标题

c# - 如何获取 DevExpress xtragrid 的所有可见行

delphi - DevExpress CxGrid 组件打印机 : how to remove the line <Filter is Empty> on printed document?

delphi - CXGrid : ApplyBestFit jerking