Componentes.Terceros.DevExp.../official/x.48/ExpressScheduler/Sources/cxDateNavigator.pas
2010-01-18 18:33:24 +00:00

945 lines
30 KiB
ObjectPascal

{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressScheduler }
{ }
{ Copyright (c) 2003-2009 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSSCHEDULER AND ALL ACCOMPANYING }
{ VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
unit cxDateNavigator;
{$I cxVer.inc}
interface
uses
Windows, Messages, Classes, Controls, Graphics, cxContainer, cxGeometry,
cxControls, cxSchedulerUtils, cxSchedulerStorage, cxSchedulerCustomControls,
Math, cxSchedulerDateNavigator, cxSchedulerDayView, cxDateUtils;
type
TcxCustomDateNavigator = class;
{ TcxInnerDateNavigator }
TcxInnerDateNavigator = class(TcxCustomScheduler, IUnknown, IcxContainerInnerControl)
private
// IcxContainerInnerControl
function GetControl: TWinControl;
function GetControlContainer: TcxContainer;
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
protected
FSelAnchor, FSelStart: Integer;
FContainer: TcxCustomDateNavigator;
procedure Click; override;
function CreateDefaultView: TcxSchedulerCustomView; override;
function CreateDateNavigator: TcxSchedulerCustomDateNavigator; override;
procedure DateNavigatorSelectionChanged; override;
procedure DblClick; override;
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean; override;
procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState;
var Accept: Boolean); override;
function GetDesignHitTest(X, Y: Integer; Shift: TShiftState): Boolean; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure WndProc(var Message: TMessage); override;
procedure SetSelection(ADelta: Integer);
procedure SetSelectionDays(ADate: Integer; ACheckEnd: Boolean);
property Container: TcxCustomDateNavigator read FContainer;
public
constructor Create(AOwner: TComponent); override;
procedure DragDrop(Source: TObject; X, Y: Integer); override;
function ExecuteAction(Action: TBasicAction): Boolean; override;
function UpdateAction(Action: TBasicAction): Boolean; override;
function CanFocus: Boolean; override;
property Align;
property Anchors;
property BorderStyle;
property Color;
property Ctl3D;
property Cursor;
property Enabled;
property Font;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property TabOrder;
property TabStop default True;
property Visible;
property OnClick;
property OnEnter;
property OnExit;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnDblClick;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
end;
{ TcxCustomDateNavigator }
TcxCustomDateNavigator = class(TcxContainer)
private
FInnerDateNavigator: TcxInnerDateNavigator;
FIsExitProcessing: Boolean;
function GetBorderStyle: TcxControlBorderStyle;
function GetColCount: Integer;
function GetCustomDrawBackground: TcxSchedulerDateNavigatorCustomDrawBackgroundEvent;
function GetCustomDrawDayCaption: TcxSchedulerDateNavigatorCustomDrawDayCaptionEvent;
function GetCustomDrawDayNumber: TcxSchedulerDateNavigatorCustomDrawDayNumberEvent;
function GetCustomDrawContent: TcxSchedulerDateNavigatorCustomDrawContentEvent;
function GetCustomDrawHeader: TcxSchedulerDateNavigatorCustomDrawHeaderEvent;
function GetDate: TDateTime;
function GetDateNavigator: TcxSchedulerDateNavigator;
function GetEventDays: TcxSchedulerDateList;
function GetFirstDate: TDateTime;
function GetFirstWeekOfYear: TcxFirstWeekOfYear;
function GetFont: TFont;
function GetHitTest: TcxSchedulerDateNavigatorHitTest;
function GetLastDate: TDateTime;
function GetPeriodChanged: TcxSchedulerPeriodChangedEvent;
function GetRealFirstDate: TDateTime;
function GetRealLastDate: TDateTime;
function GetRowCount: Integer;
function GetSelectedDays: TcxSchedulerDateList;
function GetSelectionChanged: TcxSchedulerPeriodChangedEvent;
function GetSelectionIsWeeks: Boolean;
function GetSelectPeriod: Boolean;
function GetShowDatesContainingEventsInBold: Boolean;
function GetShowWeekNumbers: Boolean;
function GetStartOfWeek: TcxStartOfWeek;
function GetStorage: TcxCustomSchedulerStorage;
function GetStyles: TcxSchedulerDateNavigatorStyles;
procedure SetBorderStyle(AValue: TcxControlBorderStyle);
procedure SetColCount(AValue: Integer);
procedure SetCustomDrawBackground(AValue: TcxSchedulerDateNavigatorCustomDrawBackgroundEvent);
procedure SetCustomDrawDayCaption(AValue: TcxSchedulerDateNavigatorCustomDrawDayCaptionEvent);
procedure SetCustomDrawDayNumber(AValue: TcxSchedulerDateNavigatorCustomDrawDayNumberEvent);
procedure SetCustomDrawContent(AValue: TcxSchedulerDateNavigatorCustomDrawContentEvent);
procedure SetCustomDrawHeader(AValue: TcxSchedulerDateNavigatorCustomDrawHeaderEvent);
procedure SetDate(AValue: TDateTime);
procedure SetFirstDate(AValue: TDateTime);
procedure SetFirstWeekOfYear(AValue: TcxFirstWeekOfYear);
procedure SetFont(AValue: TFont);
procedure SetPeriodChanged(AValue: TcxSchedulerPeriodChangedEvent);
procedure SetRowCount(AValue: Integer);
procedure SetSelectionChanged(AValue: TcxSchedulerPeriodChangedEvent);
procedure SetSelectionIsWeeks(AValue: Boolean);
procedure SetSelectPeriod(AValue: Boolean);
procedure SetShowDatesContainingEventsInBold(AValue: Boolean);
procedure SetShowWeekNumbers(AValue: Boolean);
procedure SetStartOfWeek(AValue: TcxStartOfWeek);
procedure SetStorage(AValue: TcxCustomSchedulerStorage);
procedure SetStyles(AValue: TcxSchedulerDateNavigatorStyles);
protected
procedure DoExit; override;
procedure DefineProperties(Filer: TFiler); override;
procedure Loaded; override;
function NeedsScrollBars: Boolean; override;
property BorderStyle: TcxControlBorderStyle read GetBorderStyle write SetBorderStyle default cxcbsDefault;
property ColCount: Integer read GetColCount write SetColCount default 1;
property DateNavigator: TcxSchedulerDateNavigator read GetDateNavigator;
property EventDays: TcxSchedulerDateList read GetEventDays;
property FirstWeekOfYear: TcxFirstWeekOfYear
read GetFirstWeekOfYear write SetFirstWeekOfYear default fwySystem;
property Font: TFont read GetFont write SetFont;
property HitTest: TcxSchedulerDateNavigatorHitTest read GetHitTest;
property ParentFont default False;
property RowCount: Integer read GetRowCount write SetRowCount default 1;
property SelectedDays: TcxSchedulerDateList read GetSelectedDays;
property ShowDatesContainingEventsInBold: Boolean
read GetShowDatesContainingEventsInBold write SetShowDatesContainingEventsInBold default True;
property ShowWeekNumbers: Boolean read GetShowWeekNumbers write SetShowWeekNumbers default True;
property StartOfWeek: TcxStartOfWeek read GetStartOfWeek write SetStartOfWeek default swSystem;
property Storage: TcxCustomSchedulerStorage read GetStorage write SetStorage;
property Styles: TcxSchedulerDateNavigatorStyles read GetStyles write SetStyles;
property OnPeriodChanged: TcxSchedulerPeriodChangedEvent read GetPeriodChanged write SetPeriodChanged;
property OnSelectionChanged: TcxSchedulerPeriodChangedEvent read GetSelectionChanged write SetSelectionChanged;
property OnCustomDrawBackground: TcxSchedulerDateNavigatorCustomDrawBackgroundEvent
read GetCustomDrawBackground write SetCustomDrawBackground;
property OnCustomDrawContent: TcxSchedulerDateNavigatorCustomDrawContentEvent
read GetCustomDrawContent write SetCustomDrawContent;
property OnCustomDrawDayNumber: TcxSchedulerDateNavigatorCustomDrawDayNumberEvent
read GetCustomDrawDayNumber write SetCustomDrawDayNumber;
property OnCustomDrawDayCaption: TcxSchedulerDateNavigatorCustomDrawDayCaptionEvent
read GetCustomDrawDayCaption write SetCustomDrawDayCaption;
property OnCustomDrawHeader: TcxSchedulerDateNavigatorCustomDrawHeaderEvent
read GetCustomDrawHeader write SetCustomDrawHeader;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function ExecuteAction(Action: TBasicAction): Boolean; override;
function UpdateAction(Action: TBasicAction): Boolean; override;
function CalcSize(AColCount, ARowCount: Integer): TRect;
procedure LayoutChanged;
procedure SetFocus; override;
property Date: TDateTime read GetDate write SetDate;
property FirstDate: TDateTime read GetFirstDate write SetFirstDate;
property InnerDateNavigator: TcxInnerDateNavigator read FInnerDateNavigator;
property LastDate: TDateTime read GetLastDate;
property RealFirstDate: TDateTime read GetRealFirstDate;
property RealLastDate: TDateTime read GetRealLastDate;
property SelectionIsWeeks: Boolean read GetSelectionIsWeeks write SetSelectionIsWeeks;
property SelectPeriod: Boolean read GetSelectPeriod write SetSelectPeriod default True;
end;
{ TcxDateNavigator }
TcxDateNavigator = class(TcxCustomDateNavigator)
public
property ColCount;
property EventDays;
property HitTest;
property RowCount;
property SelectedDays;
published
property Align;
property Anchors;
property BorderStyle;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property FirstWeekOfYear;
property Font;
property LookAndFeel;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property SelectPeriod;
property ShowDatesContainingEventsInBold;
property ShowWeekNumbers;
property StartOfWeek;
property Storage;
property Styles;
property TabOrder;
property TabStop;
property Visible;
property OnClick;
{$IFDEF DELPHI5}
property OnContextPopup;
{$ENDIF}
property OnCustomDrawBackground;
property OnCustomDrawContent;
property OnCustomDrawDayCaption;
property OnCustomDrawDayNumber;
property OnCustomDrawHeader;
property OnPeriodChanged;
property OnSelectionChanged;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnResize;
property OnStartDock;
property OnStartDrag;
end;
implementation
uses
SysUtils, cxClasses, cxEdit, cxScrollBar {$IFDEF DELPHI6} ,DateUtils {$ENDIF};
type
TcxDateNavigatorAccess = class(TcxSchedulerDateNavigator);
function DateCompare(AItem1, AItem2: Pointer): Integer;
begin
Result := Integer(AItem2) - Integer(AItem1);
end;
{ TcxInnerDateNavigator }
constructor TcxInnerDateNavigator.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FSelAnchor := NullDate;
CurrentView.CanShow := False;
ControlBox.Visible := False;
BorderStyle := cxcbsDefault;
ControlStyle := ControlStyle + [csDoubleClicks];
ParentColor := False;
OptionsView.ShowEventsWithoutResource := True;
OptionsView.GroupingKind := gkNone;
end;
procedure TcxInnerDateNavigator.DragDrop(Source: TObject; X, Y: Integer);
begin
if Container <> nil then
Container.DragDrop(Source, Left + X, Top + Y);
end;
function TcxInnerDateNavigator.ExecuteAction(Action: TBasicAction): Boolean;
begin
Result := inherited ExecuteAction(Action);
end;
function TcxInnerDateNavigator.UpdateAction(Action: TBasicAction): Boolean;
begin
Result := inherited UpdateAction(Action);
end;
function TcxInnerDateNavigator.CanFocus: Boolean;
begin
Result := Container.CanFocus;
end;
procedure TcxInnerDateNavigator.Click;
begin
inherited Click;
if Container <> nil then
Container.Click;
end;
function TcxInnerDateNavigator.CreateDefaultView: TcxSchedulerCustomView;
begin
Result := TcxSchedulerDayView.Create(Self);
end;
function TcxInnerDateNavigator.CreateDateNavigator: TcxSchedulerCustomDateNavigator;
begin
Result := TcxSchedulerDateNavigator.Create(Self);
end;
procedure TcxInnerDateNavigator.DateNavigatorSelectionChanged;
begin
end;
procedure TcxInnerDateNavigator.DblClick;
begin
inherited DblClick;
if Container <> nil then
Container.DblClick;
end;
function TcxInnerDateNavigator.DoMouseWheel(Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint): Boolean;
begin
Result := (Container <> nil) and Container.DoMouseWheel(Shift,
WheelDelta, MousePos);
if not Result then
inherited DoMouseWheel(Shift, WheelDelta, MousePos);
end;
procedure TcxInnerDateNavigator.DragOver(Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Container <> nil then
Container.DragOver(Source, Left + X, Top + Y, State, Accept);
end;
function TcxInnerDateNavigator.GetDesignHitTest(X, Y: Integer;
Shift: TShiftState): Boolean;
begin
Result := False;
end;
procedure TcxInnerDateNavigator.KeyDown(var Key: Word; Shift: TShiftState);
const
AShift: array[Boolean] of Integer = (1, -1);
begin
if Container <> nil then
Container.KeyDown(Key, Shift);
if Key <> 0 then
inherited KeyDown(Key, Shift);
if (ssShift in Shift) and (Key in [VK_LEFT..VK_DOWN]) and (FSelAnchor = NullDate) then
begin
FSelStart := Trunc(SelectedDays[0]);
FSelAnchor := FSelStart;
end;
case Key of
VK_LEFT, VK_RIGHT:
begin
if (ssShift in Shift) and TcxDateNavigatorAccess(DateNavigator).SelectPeriod then
SetSelectionDays(FSelAnchor - AShift[Key = VK_RIGHT], Key = VK_RIGHT)
else
SetSelection(AShift[Key = VK_RIGHT]);
Invalidate;
end;
VK_UP, VK_DOWN:
begin
if (ssShift in Shift) and TcxDateNavigatorAccess(DateNavigator).SelectPeriod then
SetSelectionDays(FSelAnchor - AShift[Key = VK_DOWN] * 7, Key = VK_DOWN)
else
SetSelection(AShift[Key = VK_DOWN] * 7);
Invalidate;
end;
end;
Container.LayoutChanged;
end;
procedure TcxInnerDateNavigator.KeyPress(var Key: Char);
begin
if Key = Char(VK_TAB) then
Key := #0;
if Container <> nil then
Container.KeyPress(Key);
if Word(Key) = VK_RETURN then
Key := #0;
if Key <> #0 then
inherited KeyPress(Key);
end;
procedure TcxInnerDateNavigator.KeyUp(var Key: Word; Shift: TShiftState);
begin
if Key = VK_TAB then
Key := 0;
if Container <> nil then
Container.KeyUp(Key, Shift);
if Key <> 0 then
inherited KeyUp(Key, Shift);
end;
procedure TcxInnerDateNavigator.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FSelAnchor := NullDate;
inherited MouseDown(Button, Shift, X, Y);
if Container <> nil then
with Container do
begin
InnerControlMouseDown := True;
try
MouseDown(Button, Shift, X + Self.Left, Y + Self.Top);
finally
InnerControlMouseDown := False;
end;
end;
end;
procedure TcxInnerDateNavigator.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
inherited MouseMove(Shift, X, Y);
if Container <> nil then
Container.MouseMove(Shift, X + Left, Y + Top);
end;
procedure TcxInnerDateNavigator.MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
begin
inherited MouseUp(Button, Shift, X, Y);
if Container <> nil then
Container.MouseUp(Button, Shift, X + Left, Y + Top);
end;
procedure TcxInnerDateNavigator.SetSelection(ADelta: Integer);
begin
if FSelAnchor <> NullDate then
begin
SelectedDays.Clear;
SelectedDays.Add(FSelAnchor - ADelta);
FSelAnchor := NullDate;
TcxDateNavigatorAccess(DateNavigator).UpdateSelection;
end
else
TcxDateNavigatorAccess(DateNavigator).ScrollSelection(ADelta)
end;
procedure TcxInnerDateNavigator.SetSelectionDays(
ADate: Integer; ACheckEnd: Boolean);
function WeekOf(ADate: TDateTime): Word;
var
AYear, ADay: Word;
begin
DecodeDateWeek(ADate, AYear, Result, ADay);
end;
var
I: Integer;
begin
if (TcxDateNavigatorAccess(DateNavigator).SelectionIsWeeks and
(WeekOf(Max(FSelStart, ADate)) - WeekOf(Min(FSelStart, ADate)) > 6)) or
(not TcxDateNavigatorAccess(DateNavigator).SelectionIsWeeks and
(Max(FSelStart, ADate) - Min(FSelStart, ADate) > 14)) then Exit;
FSelAnchor := ADate;
SelectedDays.Clear;
for I := Min(FSelStart, FSelAnchor) to Max(FSelStart, FSelAnchor) do
SelectedDays.Add(I);
TcxDateNavigatorAccess(DateNavigator).UpdateSelection;
if (SelectedDays[SelectedDays.Count - 1] = ADate) then
while (ADate > TcxDateNavigatorAccess(DateNavigator).LastDate) do
TcxDateNavigatorAccess(DateNavigator).FirstDate := TcxDateNavigatorAccess(DateNavigator).FirstDate + 31;
TcxDateNavigatorAccess(DateNavigator).DoSelectionChangedEvent;
end;
procedure TcxInnerDateNavigator.WndProc(var Message: TMessage);
begin
if (Container <> nil) and Container.InnerControlMenuHandler(Message) then
Exit;
{$IFNDEF DELPHI5}
if Message.Msg = WM_RBUTTONDOWN then
begin
Container.LockPopupMenu(True);
try
inherited WndProc(Message);
finally
Container.LockPopupMenu(False);
end;
Exit;
end;
{$ENDIF}
if Container <> nil then
if ((Message.Msg = WM_LBUTTONDOWN) or (Message.Msg = WM_LBUTTONDBLCLK)) and
(Container.DragMode = dmAutomatic) and not Container.IsDesigning then
begin
Container.BeginAutoDrag;
Exit;
end;
inherited WndProc(Message);
end;
function TcxInnerDateNavigator.GetControl: TWinControl;
begin
Result := Self;
end;
function TcxInnerDateNavigator.GetControlContainer: TcxContainer;
begin
Result := FContainer;
end;
procedure TcxInnerDateNavigator.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
inherited;
if Container <> nil then
with Message do
begin
Result := Result or DLGC_WANTCHARS;
if GetKeyState(VK_CONTROL) >= 0 then
Result := Result or DLGC_WANTTAB;
end;
end;
procedure TcxInnerDateNavigator.WMKillFocus(var Message: TWMKillFocus);
begin
inherited;
if (Container <> nil) and not Container.IsDestroying then
Container.FocusChanged;
end;
procedure TcxInnerDateNavigator.WMSetFocus(var Message: TWMSetFocus);
begin
inherited;
if (Container <> nil) and not Container.IsDestroying and not(csDestroying in ComponentState)
and (Message.FocusedWnd <> Container.Handle) then
Container.FocusChanged;
end;
{ TcxCustomDateNavigator }
constructor TcxCustomDateNavigator.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ParentFont := False;
LookAndFeel.MasterLookAndFeel := nil;
FInnerDateNavigator := TcxInnerDateNavigator.Create(Self);
with FInnerDateNavigator do
begin
FContainer := Self;
LookAndFeel.MasterLookAndFeel := Self.LookAndFeel;
Parent := Self;
end;
InnerControl := FInnerDateNavigator;
with CalcSize(1, 1) do
begin
Width := Right;
Height := Bottom;
end;
Style.Font := FInnerDateNavigator.Font;
Style.BorderStyle := cbsNone;
Style.HotTrack := False;
Style.TransparentBorder := False;
end;
destructor TcxCustomDateNavigator.Destroy;
begin
FreeAndNil(FInnerDateNavigator);
inherited Destroy;
end;
function TcxCustomDateNavigator.ExecuteAction(Action: TBasicAction): Boolean;
begin
Result := inherited ExecuteAction(Action);
end;
function TcxCustomDateNavigator.UpdateAction(Action: TBasicAction): Boolean;
begin
Result := inherited UpdateAction(Action);
end;
function TcxCustomDateNavigator.CalcSize(AColCount, ARowCount: Integer): TRect;
begin
with TcxDateNavigatorAccess(DateNavigator) do
begin
DoLayoutChanged;
Result := Rect(0, 0, GetMonthSize.CX * AColCount, GetMonthSize.CY * ARowCount);
end;
with GetBorderExtent do
begin
Inc(Result.Right, Left + Right);
Inc(Result.Bottom, Bottom + Top);
end;
end;
procedure TcxCustomDateNavigator.LayoutChanged;
begin
FInnerDateNavigator.LayoutChanged;
end;
procedure TcxCustomDateNavigator.SetFocus;
begin
if not IsDesigning then
inherited SetFocus;
end;
procedure TcxCustomDateNavigator.DoExit;
begin
if IsDestroying or FIsExitProcessing then
Exit;
FIsExitProcessing := True;
try
inherited DoExit;
finally
FIsExitProcessing := False;
end;
end;
procedure TcxCustomDateNavigator.DefineProperties(Filer: TFiler);
begin
inherited DefineProperties(Filer);
with FInnerDateNavigator do DefineProperties(Filer);
end;
procedure TcxCustomDateNavigator.Loaded;
begin
inherited Loaded;
FInnerDateNavigator.Loaded;
end;
function TcxCustomDateNavigator.NeedsScrollBars: Boolean;
begin
Result := False;
end;
function TcxCustomDateNavigator.GetBorderStyle: TcxControlBorderStyle;
begin
Result := FInnerDateNavigator.BorderStyle;
end;
function TcxCustomDateNavigator.GetColCount: Integer;
begin
Result := DateNavigator.ColCount;
end;
function TcxCustomDateNavigator.GetCustomDrawBackground: TcxSchedulerDateNavigatorCustomDrawBackgroundEvent;
begin
Result := DateNavigator.OnCustomDrawBackground;
end;
function TcxCustomDateNavigator.GetCustomDrawDayCaption: TcxSchedulerDateNavigatorCustomDrawDayCaptionEvent;
begin
Result := DateNavigator.OnCustomDrawDayCaption;
end;
function TcxCustomDateNavigator.GetCustomDrawDayNumber: TcxSchedulerDateNavigatorCustomDrawDayNumberEvent;
begin
Result := DateNavigator.OnCustomDrawDayNumber;
end;
function TcxCustomDateNavigator.GetCustomDrawContent: TcxSchedulerDateNavigatorCustomDrawContentEvent;
begin
Result := DateNavigator.OnCustomDrawContent;
end;
function TcxCustomDateNavigator.GetCustomDrawHeader: TcxSchedulerDateNavigatorCustomDrawHeaderEvent;
begin
Result := DateNavigator.OnCustomDrawHeader;
end;
function TcxCustomDateNavigator.GetDate: TDateTime;
begin
Result := DateNavigator.Date;
end;
function TcxCustomDateNavigator.GetDateNavigator: TcxSchedulerDateNavigator;
begin
Result := TcxSchedulerDateNavigator(FInnerDateNavigator.DateNavigator);
end;
function TcxCustomDateNavigator.GetEventDays: TcxSchedulerDateList;
begin
Result := FInnerDateNavigator.EventDays;
end;
function TcxCustomDateNavigator.GetFirstDate: TDateTime;
begin
Result := DateNavigator.FirstDate;
end;
function TcxCustomDateNavigator.GetFirstWeekOfYear: TcxFirstWeekOfYear;
begin
Result := DateNavigator.FirstWeekOfYear;
end;
function TcxCustomDateNavigator.GetFont: TFont;
begin
Result := Style.Font;
end;
function TcxCustomDateNavigator.GetHitTest: TcxSchedulerDateNavigatorHitTest;
begin
Result := DateNavigator.HitTest;
end;
function TcxCustomDateNavigator.GetLastDate: TDateTime;
begin
Result := DateNavigator.LastDate;
end;
function TcxCustomDateNavigator.GetPeriodChanged: TcxSchedulerPeriodChangedEvent;
begin
Result := DateNavigator.OnPeriodChanged;
end;
function TcxCustomDateNavigator.GetRealFirstDate: TDateTime;
begin
Result := DateNavigator.RealFirstDate;
end;
function TcxCustomDateNavigator.GetRealLastDate: TDateTime;
begin
Result := DateNavigator.RealLastDate;
end;
function TcxCustomDateNavigator.GetRowCount: Integer;
begin
Result := DateNavigator.RowCount;
end;
function TcxCustomDateNavigator.GetSelectionChanged: TcxSchedulerPeriodChangedEvent;
begin
Result := DateNavigator.OnSelectionChanged;
end;
function TcxCustomDateNavigator.GetSelectionIsWeeks: Boolean;
begin
Result := DateNavigator.SelectionIsWeeks;
end;
function TcxCustomDateNavigator.GetSelectPeriod: Boolean;
begin
Result := DateNavigator.SelectPeriod;
end;
function TcxCustomDateNavigator.GetShowDatesContainingEventsInBold: Boolean;
begin
Result := DateNavigator.ShowDatesContainingEventsInBold;
end;
function TcxCustomDateNavigator.GetSelectedDays: TcxSchedulerDateList;
begin
Result := FInnerDateNavigator.SelectedDays;
end;
function TcxCustomDateNavigator.GetShowWeekNumbers: Boolean;
begin
Result := DateNavigator.ShowWeekNumbers;
end;
function TcxCustomDateNavigator.GetStartOfWeek: TcxStartOfWeek;
begin
Result := FInnerDateNavigator.OptionsView.StartOfWeek;
end;
function TcxCustomDateNavigator.GetStorage: TcxCustomSchedulerStorage;
begin
Result := FInnerDateNavigator.Storage;
end;
function TcxCustomDateNavigator.GetStyles: TcxSchedulerDateNavigatorStyles;
begin
Result := DateNavigator.Styles;
end;
procedure TcxCustomDateNavigator.SetBorderStyle(AValue: TcxControlBorderStyle);
begin
FInnerDateNavigator.BorderStyle := AValue;
end;
procedure TcxCustomDateNavigator.SetColCount(AValue: Integer);
begin
DateNavigator.ColCount := AValue;
end;
procedure TcxCustomDateNavigator.SetCustomDrawBackground(
AValue: TcxSchedulerDateNavigatorCustomDrawBackgroundEvent);
begin
DateNavigator.OnCustomDrawBackground := AValue;
end;
procedure TcxCustomDateNavigator.SetCustomDrawDayCaption(
AValue: TcxSchedulerDateNavigatorCustomDrawDayCaptionEvent);
begin
DateNavigator.OnCustomDrawDayCaption := AValue;
end;
procedure TcxCustomDateNavigator.SetCustomDrawDayNumber(
AValue: TcxSchedulerDateNavigatorCustomDrawDayNumberEvent);
begin
DateNavigator.OnCustomDrawDayNumber := AValue;
end;
procedure TcxCustomDateNavigator.SetCustomDrawContent(
AValue: TcxSchedulerDateNavigatorCustomDrawContentEvent);
begin
DateNavigator.OnCustomDrawContent := AValue;
end;
procedure TcxCustomDateNavigator.SetCustomDrawHeader(
AValue: TcxSchedulerDateNavigatorCustomDrawHeaderEvent);
begin
DateNavigator.OnCustomDrawHeader := AValue;
end;
procedure TcxCustomDateNavigator.SetDate(AValue: TDateTime);
begin
DateNavigator.Date := AValue;
end;
procedure TcxCustomDateNavigator.SetFirstDate(AValue: TDateTime);
begin
DateNavigator.FirstDate := AValue;
end;
procedure TcxCustomDateNavigator.SetFirstWeekOfYear(AValue: TcxFirstWeekOfYear);
begin
DateNavigator.FirstWeekOfYear := AValue;
end;
procedure TcxCustomDateNavigator.SetFont(AValue: TFont);
begin
Style.Font.Assign(AValue);
end;
procedure TcxCustomDateNavigator.SetPeriodChanged(
AValue: TcxSchedulerPeriodChangedEvent);
begin
DateNavigator.OnPeriodChanged := AValue;
end;
procedure TcxCustomDateNavigator.SetRowCount(AValue: Integer);
begin
DateNavigator.RowCount := AValue;
end;
procedure TcxCustomDateNavigator.SetSelectionChanged(
AValue: TcxSchedulerPeriodChangedEvent);
begin
DateNavigator.OnSelectionChanged := AValue;
end;
procedure TcxCustomDateNavigator.SetSelectionIsWeeks(AValue: Boolean);
begin
DateNavigator.SelectionIsWeeks := AValue;
end;
procedure TcxCustomDateNavigator.SetSelectPeriod(AValue: Boolean);
begin
DateNavigator.SelectPeriod := AValue;
end;
procedure TcxCustomDateNavigator.SetShowDatesContainingEventsInBold(
AValue: Boolean);
begin
DateNavigator.ShowDatesContainingEventsInBold := AValue;
end;
procedure TcxCustomDateNavigator.SetShowWeekNumbers(AValue: Boolean);
begin
DateNavigator.ShowWeekNumbers := AValue;
end;
procedure TcxCustomDateNavigator.SetStartOfWeek(
AValue: TcxStartOfWeek);
begin
FInnerDateNavigator.OptionsView.StartOfWeek := AValue;
end;
procedure TcxCustomDateNavigator.SetStorage(
AValue: TcxCustomSchedulerStorage);
begin
FInnerDateNavigator.Storage := AValue;
end;
procedure TcxCustomDateNavigator.SetStyles(
AValue: TcxSchedulerDateNavigatorStyles);
begin
DateNavigator.Styles := AValue;
end;
end.