Componentes.Terceros.DevExp.../internal/x.36/1/ExpressScheduler 3/Demos/Delphi/HolidaysDemo/HolidaysDemoMain.pas
2008-09-04 11:31:51 +00:00

240 lines
7.5 KiB
ObjectPascal

unit HolidaysDemoMain;
interface
{$I ..\cxVer.inc}
uses
Windows, Messages, SysUtils, Classes, Variants,
Graphics, Controls, Forms, Dialogs, DemoBasicMain, cxLookAndFeels, ActnList,
ImgList, Menus, StdCtrls, ComCtrls, cxStyles, cxGraphics, cxEdit, cxScheduler,
cxSchedulerCustomControls, cxSchedulerCustomResourceView,
cxSchedulerDayView, cxSchedulerDateNavigator, cxSchedulerStorage,
cxControls, cxContainer, cxTextEdit, cxMemo, cxRichEdit, ExtCtrls, Buttons,
cxSchedulerWeekView, cxSchedulerTimeGridView, cxSchedulerUtils,
cxSchedulerYearView, cxSchedulerHolidays, cxHint, cxSchedulerGanttView,
cxLookAndFeelPainters, cxButtons;
const
ColorsCount = 4;
Colors: array [0..3] of TColor = (clRed, clYellow, clGreen, clBlue);
type
THolidaysDemoMainForm = class(TDemoBasicMainForm)
SchedulerUnboundStorage: TcxSchedulerStorage;
EventImages: TImageList;
Holidays: TcxSchedulerHolidays;
Holidays1: TMenuItem;
miShowHolidaysHints: TMenuItem;
miHighlightHolidays: TMenuItem;
miHolidaySeparator1: TMenuItem;
miHighlight: TMenuItem;
miRed: TMenuItem;
miYellow: TMenuItem;
miGreen: TMenuItem;
miBlue: TMenuItem;
PopupMenu: TPopupMenu;
Forall1: TMenuItem;
OnllyFOXSPORTS11: TMenuItem;
FOXFOOTYandFUEL1: TMenuItem;
btnGenerate: TcxButton;
btnHolidaysEditor: TcxButton;
imgResources: TcxImageList;
procedure btnDeleteClick(Sender: TObject);
procedure btnGenerateClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SchedulerInitEventImages(Sender: TcxCustomScheduler;
AEvent: TcxSchedulerControlEvent; AImages: TcxSchedulerEventImages);
procedure SchedulerUnboundStorageRemindersOpenEvent(
Sender: TcxSchedulerReminders; AEvent: TcxSchedulerControlEvent);
procedure miShowHolidaysHintsClick(Sender: TObject);
procedure miHighlightClick(Sender: TObject);
procedure miColorClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Forall1Click(Sender: TObject);
procedure OnllyFOXSPORTS11Click(Sender: TObject);
procedure FOXFOOTYandFUEL1Click(Sender: TObject);
procedure SchedulerShowDateHint(Sender: TObject;
const ADate: TDateTime; var AHintText: String; var AAllow: Boolean);
procedure btnHolidaysEditorClick(Sender: TObject);
procedure LookAndFeelChange(Sender: TObject);
private
FArrayBitmap: array [0..ColorsCount] of TBitmap;
protected
procedure OnNewEvent(AEvent: TcxSchedulerEvent; AIndex: Integer); override;
public
{ Public declarations }
end;
var
HolidaysDemoMainForm: THolidaysDemoMainForm;
implementation
{$R *.dfm}
uses
cxClasses, cxSchedulerDialogs, Types;
const
GenerateCount = 500;
procedure THolidaysDemoMainForm.btnDeleteClick(Sender: TObject);
var
AHolidays: TcxSchedulerHolidays;
begin
AHolidays := Holidays;
cxShowHolidaysEditor(AHolidays, Scheduler.LookAndFeel);
end;
procedure THolidaysDemoMainForm.btnGenerateClick(Sender: TObject);
var
APos: TPoint;
begin
APos := btnGenerate.ClientToScreen(Point(0, 0));
PopupMenu.Popup(APos.X, APos.Y);
end;
procedure THolidaysDemoMainForm.FormCreate(Sender: TObject);
function CreateBitmap(AColor: TColor): TBitmap;
var
ADefaultSize: TSize;
begin
ADefaultSize.cx := 13;
ADefaultSize.cy := 13;
Result := TBitmap.Create;
with Result do
begin
Width := ADefaultSize.cx;
Height := ADefaultSize.cy;
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := clBlack;
Canvas.FillRect(Rect(0, 0, ADefaultSize.cx, ADefaultSize.cy));
Canvas.Brush.Color := AColor;
Canvas.FillRect(Rect(1, 1, ADefaultSize.cx - 1, ADefaultSize.cy - 1));
end;
end;
var
I: Integer;
begin
inherited;
Scheduler.SelectDays(Date, Date, True);
for I := 0 to ColorsCount - 1 do
FArrayBitmap[I] := CreateBitmap(Colors[I]);
miRed.Bitmap := FArrayBitmap[0];
miYellow.Bitmap := FArrayBitmap[1];
miGreen.Bitmap := FArrayBitmap[2];
miBlue.Bitmap := FArrayBitmap[3];
Holidays.LoadFromFile('..\..\Data\Holidays.hol');
for I := 0 to Holidays.Locations.Count - 1 do
Holidays.Locations[I].Visible := True;
btnGenerate.LookAndFeel := Scheduler.LookAndFeel;
btnHolidaysEditor.LookAndFeel := Scheduler.LookAndFeel;
end;
procedure THolidaysDemoMainForm.SchedulerInitEventImages(
Sender: TcxCustomScheduler; AEvent: TcxSchedulerControlEvent;
AImages: TcxSchedulerEventImages);
var
AValue: Variant;
begin
AValue := AEvent.GetCustomFieldValueByName('IconIndex');
if VarIsNull(AValue) or VarIsEmpty(AValue) or (AValue = -1) then Exit;
AImages.Add(AValue, False);
end;
procedure THolidaysDemoMainForm.OnNewEvent(
AEvent: TcxSchedulerEvent; AIndex: Integer);
begin
AEvent.SetCustomFieldValueByName('IconIndex', AIndex);
AEvent.Reminder := (Trunc(AEvent.Start) >= Trunc(Now)) and Boolean(Random(2));
end;
procedure THolidaysDemoMainForm.SchedulerUnboundStorageRemindersOpenEvent(
Sender: TcxSchedulerReminders; AEvent: TcxSchedulerControlEvent);
begin
Scheduler.EditEventUsingDialog(AEvent);
end;
procedure THolidaysDemoMainForm.miShowHolidaysHintsClick(Sender: TObject);
begin
Scheduler.OptionsView.ShowHints := not Scheduler.OptionsView.ShowHints;
miShowHolidaysHints.Checked := Scheduler.OptionsView.ShowHints;
end;
procedure THolidaysDemoMainForm.miHighlightClick(Sender: TObject);
begin
Scheduler.DateNavigator.ShowDatesContainingHolidaysInColor := not Scheduler.DateNavigator.ShowDatesContainingHolidaysInColor;
miHighlight.Checked := Scheduler.DateNavigator.ShowDatesContainingHolidaysInColor;
miShowHolidaysHints.Enabled := miHighlight.Checked;
end;
procedure THolidaysDemoMainForm.miColorClick(Sender: TObject);
begin
Scheduler.DateNavigator.HolidayColor := Colors[(Sender as TMenuItem).Tag];
end;
procedure THolidaysDemoMainForm.FormDestroy(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ColorsCount - 1 do
FArrayBitmap[I].Free;
inherited;
end;
procedure THolidaysDemoMainForm.Forall1Click(Sender: TObject);
var
I: Integer;
AArrayVariant: array of Variant;
begin
SetLength(AArrayVariant, SchedulerUnboundStorage.ResourceCount);
try
for I := 0 to SchedulerUnboundStorage.ResourceCount - 1 do
AArrayVariant[I] := SchedulerUnboundStorage.ResourceIDs[I];
SchedulerUnboundStorage.GenerateHolidayEvents(VarArrayOf(AArrayVariant));
finally
SetLength(AArrayVariant, 0);
end;
end;
procedure THolidaysDemoMainForm.OnllyFOXSPORTS11Click(Sender: TObject);
begin
SchedulerUnboundStorage.GenerateHolidayEvents('0');
end;
procedure THolidaysDemoMainForm.FOXFOOTYandFUEL1Click(Sender: TObject);
var
AResources: array [0..1] of Variant;
begin
AResources[0] := '3';
AResources[1] := '4';
SchedulerUnboundStorage.GenerateHolidayEvents(VarArrayOf(AResources));
end;
procedure THolidaysDemoMainForm.SchedulerShowDateHint(Sender: TObject;
const ADate: TDateTime; var AHintText: String; var AAllow: Boolean);
begin
if AHintText = '' then
AHintText := DateToStr(ADate);
AAllow := True;
end;
procedure THolidaysDemoMainForm.btnHolidaysEditorClick(Sender: TObject);
var
AHolidays: TcxSchedulerHolidays;
begin
AHolidays := Holidays;
cxShowHolidaysEditor(AHolidays, Scheduler.LookAndFeel);
end;
procedure THolidaysDemoMainForm.LookAndFeelChange(Sender: TObject);
begin
inherited LookAndFeelChange(Sender);
btnGenerate.LookAndFeel := Scheduler.LookAndFeel;
btnHolidaysEditor.LookAndFeel := Scheduler.LookAndFeel;
end;
end.