Componentes.Terceros.DevExp.../official/x.26/ExpressScheduler 2/Demos/Delphi/DemoBasicMain.pas
2007-09-09 11:27:27 +00:00

841 lines
27 KiB
ObjectPascal

unit DemoBasicMain;
//if you want accept printing you need define PRINTING directive
//{$DEFINE PRINTING}
interface
{$I ..\cxVer.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, cxControls, cxLookAndFeels, ActnList, ImgList, Menus, ComCtrls,
StdCtrls, cxStyles, cxGraphics, cxEdit, cxScheduler,
cxSchedulerCustomControls, cxSchedulerCustomResourceView, cxSchedulerStorage,
cxSchedulerDayView, cxSchedulerDateNavigator, ExtCtrls, cxExportSchedulerLink,
cxSchedulerWeekView {$IFDEF PRINTING} , dxPSCore, dxPScxScheduler2Lnk{$ENDIF},
cxSchedulerTimeGridView, cxSchedulerUtils, cxSchedulerYearView;
type
TDemoBasicMainForm = class(TForm)
mmMain: TMainMenu;
miAbout: TMenuItem;
miFile: TMenuItem;
miExit: TMenuItem;
lbDescrip: TLabel;
miLookFeel: TMenuItem;
Kind1: TMenuItem;
miFlat: TMenuItem;
miStandard: TMenuItem;
miUltraFlat: TMenuItem;
miNativeStyle: TMenuItem;
miView: TMenuItem;
Office111: TMenuItem;
miViewDateNavigator: TMenuItem;
miControlBox: TMenuItem;
miViewposition: TMenuItem;
miAtLeft: TMenuItem;
miAtRight: TMenuItem;
Scheduler: TcxScheduler;
miDay1: TMenuItem;
miWeek1: TMenuItem;
miMonth1: TMenuItem;
miWorkweek: TMenuItem;
miGotoDate: TMenuItem;
pnlControls: TPanel;
Memo1: TMemo;
StatusBar: TStatusBar;
Timer1: TTimer;
Resources1: TMenuItem;
GroupBy1: TMenuItem;
miGroupByNone: TMenuItem;
miGroupByResources: TMenuItem;
miGroupByDate: TMenuItem;
Resourcelayout1: TMenuItem;
Exportto1: TMenuItem;
Outlook1: TMenuItem;
Outlook2: TMenuItem;
Excel1: TMenuItem;
Html1: TMenuItem;
Xml1: TMenuItem;
Separator2: TMenuItem;
ext1: TMenuItem;
SaveDialog: TSaveDialog;
Separator1: TMenuItem;
miTimeGrid1: TMenuItem;
miYear1: TMenuItem;
N4: TMenuItem;
miResPerPage: TMenuItem;
miWorktimeonly: TMenuItem;
miAllDayContainer: TMenuItem;
Alwaysshoweventtime1: TMenuItem;
Displayminutesontimeruler1: TMenuItem;
miSingleColumn: TMenuItem;
miOneResPerPage: TMenuItem;
miTwoResPerPage: TMenuItem;
miThreeResPerPage: TMenuItem;
miAllResPerPage: TMenuItem;
miSeparator: TMenuItem;
miTimeWorktimeonly: TMenuItem;
Alldayeventsonly1: TMenuItem;
miCompressweekends: TMenuItem;
miWeekCompressWeekends: TMenuItem;
Options1: TMenuItem;
miDay: TMenuItem;
miWeek: TMenuItem;
miMonth: TMenuItem;
miTimeGrid: TMenuItem;
miYear: TMenuItem;
Outlooksynchronization1: TMenuItem;
miEventsOpt: TMenuItem;
miIntersection: TMenuItem;
miSharing: TMenuItem;
procedure FileExitExecute(Sender: TObject);
procedure LookAndFeelChange(Sender: TObject);
procedure miViewDateNavigatorClick(Sender: TObject);
procedure ViewClick(Sender: TObject);
procedure ViewModeClick(Sender: TObject);
procedure ViewPositionClick(Sender: TObject);
procedure miAboutClick(Sender: TObject);
procedure miGotoDateClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Resourcelayout1Click(Sender: TObject);
procedure miGroupByClick(Sender: TObject);
procedure ExportToClick(Sender: TObject);
procedure SyncClick(Sender: TObject);
procedure miResCountClick(Sender: TObject);
procedure miTimeWorktimeonlyClick(Sender: TObject);
procedure miDaySettingsClick(Sender: TObject);
procedure miWeekViewClick(Sender: TObject);
procedure miCompressweekendsClick(Sender: TObject);
procedure AlldayeventsonlyClick(Sender: TObject);
procedure miSharingClick(Sender: TObject);
procedure miIntersectionClick(Sender: TObject);
procedure miWeekCompressWeekendsClick(Sender: TObject);
protected
AnchorDate: TDateTime;
{$IFDEF PRINTING}
ComponentPrinter: TdxComponentPrinter;
ReportLink: TcxSchedulerReportLink;
procedure OnPrintClick(Sender: TObject);
{$ENDIF}
procedure CreateEventObject(AAllDayEvent, ARandomResource: Boolean);
procedure GenerateRandomEvents(ACount: Integer; ARandomResource: Boolean = False);
function GetRandomCaption: string;
function GetRandomDate: TDateTime;
function GetRandomLabelColor: TColor;
function GetRandomResourceID: Variant;
function GetRandomState: Integer;
function GetSyncIDField: TcxCustomSchedulerStorageField; virtual;
procedure OnNewEvent(AEvent: TcxSchedulerEvent; AIndex: Integer); virtual;
public
{$IFDEF PRINTING}
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{$ENDIF}
end;
var
DemoBasicMainForm: TDemoBasicMainForm;
StartIndexes: array[0..21] of Integer =
(0, 12, 30, 44, 58, 80, 90, 106, 126, 157, 174, 196,
208, 220, 226, 234, 238, 242, 249, 260, 267, 272);
EventsCount: array[0..21] of integer =
(12, 18, 14, 14, 22, 10, 16, 20, 31, 17,
22, 12, 12, 6, 8, 4, 4, 7, 11, 7, 5, 8);
SportEvents: array[0..279] of string =
('Basketball Qualifying - Men',
'Basketball Qualifying - Women',
'Basketball First Group Phase - Men',
'Basketball First Group Phase - Women',
'Basketball Quarterfinals - Men',
'Basketball Quarterfinals - Women',
'Basketball Semifinals - Men',
'Basketball Semifinals - Women',
'Basketball Places 3/4 - Men',
'Basketball Places 3/4 - Women',
'Basketball Finals - Men',
'Basketball Finals - Women',
'Lamon Brewster (32-2) vs. Luan Krasniqi (28-1-1) (WBO heavyweight belt)',
'(PPV) Antonio Tarver (23-3) vs. Roy Jones (49-3) (IBO light heavyweight belt)',
'(Showtime) James Toney (68-4-2) vs. Dominick Guinn (25-2-1)',
'Nicolay Valuev (41-0) vs. TBA',
'Danilo Haussler (25-3) vs. TBA',
'Cengiz Koc (22-1) vs. TBA',
'(PPV) Diego Corrales (40-2) vs. Jose Luis Castillo (52-7-1)',
'(WBC and WBO lightweight belts) (PPV) Carlos Hernandez vs. Bobby Pacquiao',
'(PPV) Jorge Arce vs. Hussein Hussein',
'Vince Philips (47-9-1) vs. Reynaldo Pelonia (35-21-3)',
'Kili Madrid (6-0-1) vs. Donny Fosmire (10-7)',
'Nelson Zepeda (1-0-1) vs. Kaleo Padilla (0-0)',
'Justin Mercado (1-1) vs. Waldo Rojas (0-0)',
'Illima Vicente (0-0) vs. Jenny Houts (0-0)',
'Tomasz Adamek (29-0) vs. Thomas Ulrich (28-1) (WBC light heavyweight belt)',
'(Showtime) Jeff Lacy (20-0) vs. Joe Calzaghe (39-0) (IBF, IBO and WBO super middleweight belts)',
'Jermain Taylor vs. Bernard Hopkins',
'Ronald "Winky" Wright vs. TBA',
'Australian Open',
'Pacific Life Open',
'NASDAQ-100 Open',
'Tennis Masters Monte Carlo',
'Telecom Italia Masters Roma',
'Tennis Masters Hamburg',
'Roland Garros',
'Wimbledon',
'Tennis Masters Montreal',
'Western and Southern Financial Group Masters',
'US Open',
'Tennis Masters Madrid',
'BNP Paribas Masters',
'Tennis Masters Cup',
'Weightlifting 48 Kg - Women - Final',
'Weightlifting 56 Kg - Men - Final',
'Weightlifting 53 Kg - Women - Final',
'Weightlifting 62 Kg - Men - Final',
'Weightlifting 63 Kg - Women - Final',
'Weightlifting 69 Kg - Men - Final',
'Weightlifting 69 Kg - Women - Final',
'Weightlifting 77 Kg - Men - Final',
'Weightlifting 75 Kg - Women - Final',
'Weightlifting 75kg - Women - Final',
'Weightlifting 85 Kg - Men - Final',
'Weightlifting 94 Kg - Men - Final',
'Weightlifting 105 Kg - Men - Final',
'Weightlifting 105kg - Men - Final',
'Sabre - Men - 1st Round',
'Sabre - Men - Round 2',
'Sabre - Men - 3rd Round',
'Sabre - Men - Quarter final',
'Sabre - Men - Semi-finals',
'Sabre - Men - Final',
'Epee - Women - 1st Round',
'Epee - Women - Round 2',
'Epee - Women - 3rd Round',
'Epee - Women - Quarter final',
'Epee - Women - Semi-finals',
'Epee - Women - Final',
'Epee - Women/Team - 1st Round',
'Epee - Women/Team - Quarter final',
'Epee - Women/Team - Semi-finals',
'Epee - Women/Team - Final',
'Foil - Men - 1st Round',
'Foil - Men - Round 2',
'Foil - Men - 3rd Round',
'Foil - Men - Quarter final',
'Foil - Men - Semi-finals',
'Foil - Men - Final',
'Soccer 1st Round - *Men''s Preliminaries - Men',
'Soccer 1st Round - *Women''s Preliminaries - Women',
'Soccer Quarter final - *Men''s Quarterfinal - Men',
'Soccer Quarter final - *Women''s Quarterfinal - Women',
'Soccer Semi-finals - *Women''s Semifinal - Men',
'Soccer Semi-finals - *Women''s Semifinal - Women',
'Soccer places 3/4 - *Men''s Bronze Medal Match - Men',
'Soccer places 3/4 - *Women''s Bronze Medal Match - Women',
'Soccer Final - *Men''s Gold Medal Match - Men',
'Soccer Final - *Women''s Gold Medal Match - Women',
'Men - Qualifying',
'Women - Qualifying',
'Men/Team - Final',
'Women/Team - Final',
'Individual All-Around - Men - Final',
'Individual All-Around - Women - Final',
'Floor Exercise - Men - Final',
'Vault - Women - Final',
'Uneven Bars - Women - Final',
'Pommel Horse - Men - Final',
'Rings - Men - Final',
'Vault - Men - Final',
'Beam - Women - Final',
'Parallel Bars - Men - Final',
'Floor Exercise - Women - Final',
'Horizontal Bar - Men - Final',
'Slalom C1 - Men - Heats',
'Slalom C1 - Men - Heats',
'Slalom C1 - Men - Semi-finals',
'Slalom C1 - Men - Final',
'Slalom C2 - Men - Heats',
'Slalom C2 - Men - Heats',
'Slalom C2 - Men - Semi-finals',
'Slalom C2 - Men - Final',
'Flatwater C1 - 1000m - Men - Heats',
'Flatwater C2 - 1000m - Men - Heats',
'Flatwater C1 - 500m - Men - Heats',
'Flatwater C2 - 500m - Men - Heats',
'Flatwater C1 - 1000m - Men - Semi-finals',
'Flatwater C2 - 1000m - Men - Semi-finals',
'Flatwater C1 - 500m - Men - Semi-finals',
'Flatwater C2 - 500m - Men - Semi-finals',
'Flatwater C1 - 1000m - Men - Final',
'Flatwater C2 - 1000m - Men - Final',
'Flatwater C1 - 500m - Men - Final',
'Flatwater C2 - 500m - Men - Final',
'Slalom K1 - Women - Heats',
'Slalom K1 - Women - Heats',
'Slalom K1 - Women - Semi-finals',
'Slalom K1 - Women - Final',
'Slalom K2 - Men - Heats',
'Slalom K2 - Men - Heats',
'Slalom K2 - Men - Semi-finals',
'Slalom K1 - Men - Final',
'Flatwater K1 - 1000m - Men - Heats',
'Flatwater K4 - 500m - Women - Heats',
'Flatwater K2 - 1000m - Men - Heats',
'Flatwater K4 - 1000m - Men - Heats',
'Flatwater K1 - 500m - Men - Heats',
'Flatwater K2 - 500m - Men - Heats',
'Flatwater K2 - 500m - Women - Heats',
'Flatwater K1 - 1000m - Men - Semi-finals',
'Flatwater K4 - 500m - Women - Semi-finals',
'Flatwater K2 - 1000m - Men - Semi-finals',
'Flatwater K4 - 1000m - Men - Semi-finals',
'Flatwater K1 - 500m - Men - Semi-finals',
'Flatwater K1 - 500m - Women - Semi-finals',
'Flatwater K2 - 500m - Men - Semi-finals',
'Flatwater K2 - 500m - Women - Semi-finals',
'Flatwater K1 - 1000m - Men - Final',
'Flatwater K4 - 500m - Women - Final',
'Flatwater K2 - 1000m - Men - Final',
'Flatwater K4 - 1000m - Men - Final',
'Flatwater K1 - 500m - Men - Final',
'Flatwater K1 - 500m - Women - Final',
'Flatwater K2 - 500m - Men - Final',
'Flatwater K2 - 500m - Women - Final',
'Greco-Roman 55kg - Men - Qualifying',
'Greco-Roman 66kg - Men - Qualifying',
'Greco-Roman 84kg - Men - Qualifying',
'Greco-Roman 120kg - Men - Qualifying',
'Greco-Roman 55kg - Men - Semi-finals',
'Greco-Roman 66kg - Men - Semi-finals',
'Greco-Roman 84kg - Men - Semi-finals',
'Greco-Roman 120kg - Men - Semi-finals',
'Greco-Roman 96kg - Men - Qualifying',
'Greco-Roman 55kg - Men - Final',
'Greco-Roman 66kg - Men - Final',
'Greco-Roman 84kg - Men - Final',
'Greco-Roman 120kg - Men - Final',
'Greco-Roman 55kg - Men - Play Off',
'Greco-Roman 66kg - Men - Play Off',
'Greco-Roman 84kg - Men - Play Off',
'Greco-Roman 120kg - Men - Play Off',
'Individual Eventing Dressage - 1st Day',
'Team Eventing Dressage - 1st Day',
'Individual Eventing Dressage - 2nd Day',
'Team Eventing Dressage - 2nd Day',
'Individual Eventing Cross Country - Final',
'Team Eventing Cross Country - Final',
'Team Eventing Jumping - Final',
'Individual Eventing Jumping - Qualifying',
'Individual Eventing Jumping - Final',
'Individual Dressage Grand Prix - 1st Day',
'Team Dressage Grand Prix - 1st Day',
'Individual Dressage Grand Prix - 2nd Day',
'Team Dressage Grand Prix - 2nd Day',
'Individual Jumping - Qualifying',
'Individual Dressage Grand Prix Special - Final',
'Team Jumping - Final',
'Individual Jumping - Qualifying',
'Individual Jumping - Qualifying',
'Team Jumping - Final',
'Individual Dressage Grand Prix Freestyle - Final',
'Individual Jumping - Final',
'Individual Jumping - Final',
'Men''s 470 - Race 01',
'Women''s 470 - Race 01',
'Men''s 470 - Race 02',
'Women''s 470 - Race 02',
'Finn - Race 1',
'Yngling - Race 1',
'Finn - Race 2',
'Yngling - Race 2',
'Laser - Race 1',
'Women''s Mistral - Race 01',
'Men''s Mistral - Race 02',
'49er - Race 1',
'Men''s 400m Individual Medley - Heat 1',
'Men''s 400m Individual Medley - Heat 2',
'Women''s 100m Butterfly - Heat 1',
'Men''s 400m Freestyle - Heat 1',
'Women''s 400m Individual Medley - Heat 1',
'Women''s 400m Individual Medley - Heat 2',
'Men''s 100m Breaststroke - Heat 1',
'Men''s 100m Breaststroke - Heat 2',
'Women''s 4 x 100m Freestyle Relay - Heat 1',
'Women''s 4 x 100m Freestyle Relay - Heat 2',
'Women''s 100m Butterfly Semifinal 1',
'Women''s 4 x 100m Freestyle Relay Final',
'Women''s Synchronised 3m Springboard Final',
'Men''s Synchronised 3m Springboard Final',
'Women''s Synchronised 10m Platform Final',
'Men''s Synchronised 10m Platform Final',
'Women''s 10m Platform Preliminary',
'Men''s 10m Platform Semifinal',
'Men''s Preliminaries - Pool A Match 1 - Spain - Korea',
'Women''s Preliminaries - Pool A Match 1 - China - Hungary',
'Men''s Classification 11-12 Match 31 - Slovenia - Egypt',
'Women''s Classification 9-10 Match 21 - Greece - Angola',
'Men''s Classification 9-10 Match 32 - Brazil - Iceland',
'Women''s Quarterfinal Match 22 - Ukraine - Spain',
'Men''s Semifinal Match 40 - Germany - Russia',
'Women''s Semifinal Match 27 - France - Korea',
'Men - Qualifying',
'Women - Qualifying',
'Men/Team - Final',
'Women/Team - Final',
'Women''s 100m Round 1 - Heat 1',
'Men''s 100m Round 1 - Heat 1',
'Men''s 100m Semifinal 1',
'Women''s 100m Final',
'Men''s 10m Air Pistol Qualification',
'Men''s 10m Air Pistol Final',
'Women''s 10m Air Pistol Pre-event Training',
'Men''s 10m Air Pistol Medal Ceremony',
'Women''s 10m Air Pistol Qualification',
'Men''s 50m Pistol Qualification',
'Women''s 25m Pistol Final',
'Women''s Individual 1/32 Eliminations',
'Men''s Individual 1/32 Eliminations',
'Women''s Individual 1/16 Eliminations',
'Men''s Individual 1/16 Eliminations',
'Women''s Individual 1/8 Eliminations',
'Men''s Individual 1/8 Eliminations',
'Women''s Individual Quarterfinal 1',
'Men''s Individual Quarterfinal 1',
'Men''s Individual Semifinal 1',
'Men''s Individual Bronze Medal Match',
'Women''s Team Gold Medal Match',
'Men''s Road Race',
'Women''s Road Race',
'Women''s Individual Time Trial',
'Men''s Individual Time Trial',
'Women''s Sprint 1/8 Finals',
'Women''s Individual Pursuit Final',
'Men''s Sprint 1/8 Finals',
'Men''s Preliminaries - Group B - EGY - AUS',
'Women''s Classification 7th-8th - KAZ - CAN',
'Women''s Quarterfinal 02 - ITA - HUN',
'Women Bronze Medal Game',
'Men''s Semifinal 02',
'Women''s Preliminaries - Pool B Match 1 - CUB - GER',
'Men''s Preliminaries - Pool A Match 1 - SCG - POL',
'Women''s Quarterfinal 04 - JPN - CHN',
'Men''s Quarterfinal 03 - GRE - USA',
'Women''s Semifinal 02 - CUB - CHN',
'Men''s Semifinal 02 - USA - BRA',
'Women''s Gold Medal Match - RUS - CHN',
'Men''s Bronze Medal Match - RUS - USA');
MaxRandomPeriod: Integer = 60;
implementation
uses
cxClasses,
{$IFDEF DELPHI6}
Variants, DateUtils,
{$ENDIF}
cxSchedulerDialogs, AboutDemoForm, cxSchedulerOutlookExchange;
{$R *.dfm}
{$IFDEF PRINTING}
constructor TDemoBasicMainForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ComponentPrinter := TdxComponentPrinter.Create(Self);
ReportLink := ComponentPrinter.AddLink(Scheduler) as TcxSchedulerReportLink;
miFile.Insert(2, NewLine);
miFile.Insert(3, NewItem('Print...', ShortCut(Byte('P'), [ssCtrl]), False,
True, OnPrintClick, 0, 'miPrint'));
end;
destructor TDemoBasicMainForm.Destroy;
begin
ComponentPrinter.Free;
inherited Destroy;
end;
procedure TDemoBasicMainForm.OnPrintClick(Sender: TObject);
const
Note = 'Note: Printing functionality for the ExpressScheduler is only available if you own a copy of' + #13#10 +
'the ExpressPrinting System, which is sold separately.';
begin
ShowMessage(Note);
ReportLink.Preview();
end;
{$ENDIF}
procedure TDemoBasicMainForm.CreateEventObject(
AAllDayEvent, ARandomResource: Boolean);
var
AIndex: Integer;
ADate: TDateTime;
AEvent: TcxSchedulerEvent;
begin
AEvent := Scheduler.Storage.CreateEvent;
ADate := GetRandomDate;
AEvent.Start := ADate;
if not AAllDayEvent then
AEvent.Finish := ADate + (Random(180) + 30) * MinuteToTime
else
begin
AEvent.Finish := ADate + 1;
AEvent.AllDayEvent := True;
end;
AEvent.State := GetRandomState;
AEvent.LabelColor := EventLabelColors[Random(11)];
AIndex := Random(22);
AEvent.Caption := SportEvents[StartIndexes[AIndex] + Random(EventsCount[AIndex])];
if ARandomResource then
AEvent.ResourceID := GetRandomResourceID;
OnNewEvent(AEvent, AIndex);
end;
procedure TDemoBasicMainForm.GenerateRandomEvents(ACount: Integer;
ARandomResource: Boolean = False);
var
I: Integer;
begin
if Scheduler.Storage = nil then Exit;
Scheduler.Storage.BeginUpdate;
try
Randomize;
for I := 0 to ACount div 5 * 4 - 1 do
CreateEventObject(False, ARandomResource);
for I := 0 to ACount div 5 - 1 do
CreateEventObject(True, ARandomResource);
finally
Scheduler.Storage.EndUpdate;
end;
end;
function TDemoBasicMainForm.GetRandomCaption: string;
var
AIndex: Integer;
begin
AIndex := Random(22);
Result := SportEvents[StartIndexes[AIndex] + Random(EventsCount[AIndex])]
end;
function TDemoBasicMainForm.GetRandomDate: TDateTime;
begin
Result := Date + Random(MaxRandomPeriod)*(Random(2) * 2 - 1) + Scheduler.OptionsView.WorkStart;
if Trunc(Result) = Date then
Result := Result + Random(10) * HourToTime
else
Result := Result + Random(24) * HourToTime;
end;
function TDemoBasicMainForm.GetRandomLabelColor: TColor;
begin
Result := EventLabelColors[Random(11)];
end;
function TDemoBasicMainForm.GetRandomResourceID: Variant;
begin
Result := Null;
if (Scheduler.Storage = nil) or (Scheduler.Storage.ResourceCount = 0) then
Exit
else
if Scheduler.Storage.ResourceCount = 1 then
Result := Scheduler.Storage.ResourceIDs[0]
else
Result := Scheduler.Storage.ResourceIDs[Random(Scheduler.Storage.ResourceCount)];
end;
function TDemoBasicMainForm.GetRandomState: Integer;
begin
Result := Random(4);
end;
function TDemoBasicMainForm.GetSyncIDField: TcxCustomSchedulerStorageField;
begin
Result := Scheduler.Storage.GetFieldByName('SyncIDField');
end;
procedure TDemoBasicMainForm.OnNewEvent(
AEvent: TcxSchedulerEvent; AIndex: Integer);
begin
end;
procedure TDemoBasicMainForm.FileExitExecute(Sender: TObject);
begin
Close;
end;
procedure TDemoBasicMainForm.LookAndFeelChange(Sender: TObject);
begin
if TMenuItem(Sender).Tag > 3 then
begin
Scheduler.LookAndFeel.NativeStyle :=
not Scheduler.LookAndFeel.NativeStyle;
TMenuItem(Sender).Checked := Scheduler.LookAndFeel.NativeStyle;
end
else
begin
TMenuItem(Sender).Checked := True;
Scheduler.LookAndFeel.Kind := TcxLookAndFeelKind(TMenuItem(Sender).Tag);
Scheduler.LookAndFeel.NativeStyle := False;
miNativeStyle.Checked := False;
end;
end;
procedure TDemoBasicMainForm.miViewDateNavigatorClick(Sender: TObject);
begin
Scheduler.DateNavigator.Visible := miViewDateNavigator.Checked;
end;
procedure TDemoBasicMainForm.ViewClick(Sender: TObject);
begin
with TMenuItem(Sender) do
begin
Checked := not Checked;
case Tag of
0: Scheduler.DateNavigator.Visible := Checked;
1: Scheduler.ControlBox.Visible := Checked;
end;
end;
end;
procedure TDemoBasicMainForm.ViewModeClick(Sender: TObject);
begin
if not Scheduler.ViewWeek.Active then
AnchorDate := Scheduler.SelectedDays[0];
Scheduler.SelectDays([AnchorDate], TMenuItem(Sender).Tag in [0, 1]);
case TMenuItem(Sender).Tag of
0:
Scheduler.ViewDay.Active := True;
1:
Scheduler.SelectWorkDays(Date);
2:
Scheduler.ViewWeek.Active := True;
3:
Scheduler.GoToDate(Scheduler.SelectedDays[0], vmMonth);
4:
Scheduler.ViewTimeGrid.Active := True;
5:
Scheduler.ViewYear.Active := True;
end;
end;
procedure TDemoBasicMainForm.ViewPositionClick(Sender: TObject);
begin
with TMenuItem(Sender) do
begin
case Tag of
0: Scheduler.OptionsView.ViewPosition := vpLeft;
1: Scheduler.OptionsView.ViewPosition := vpRight;
end;
Checked := True;
end;
end;
procedure TDemoBasicMainForm.miAboutClick(Sender: TObject);
begin
ShowAboutDemoForm;
end;
procedure TDemoBasicMainForm.miGotoDateClick(Sender: TObject);
var
ADate: TDateTime;
AMode: TcxSchedulerViewMode;
begin
ADate := Scheduler.SelectedDays[0];
if cxShowGoToDateDialog(Scheduler, Scheduler.LookAndFeel, ADate, AMode) then
Scheduler.GoToDate(ADate, AMode);
end;
procedure TDemoBasicMainForm.FormCreate(Sender: TObject);
begin
AnchorDate := Date;
Resources1.Visible := Scheduler.Storage.ResourceCount > 0;
miSharing.Visible := Resources1.Visible;
Scheduler.SelectDays([Date - 1, Date, Date + 1], True);
Height := 550;
Width := 700;
end;
const
LastCount: Integer = -1;
procedure TDemoBasicMainForm.Timer1Timer(Sender: TObject);
var
ACount: Integer;
const
BarCaption = 'Data Storage contains %d events';
begin
if csDestroying in ComponentState then Exit;
if Scheduler.Storage <> nil then
ACount := Scheduler.Storage.EventCount
else
ACount := 0;
if LastCount <> ACount then
begin
LastCount := ACount;
StatusBar.SimpleText := Format(BarCaption, [ACount]);
end;
end;
procedure TDemoBasicMainForm.Resourcelayout1Click(Sender: TObject);
begin
if Scheduler.Storage <> nil then
cxShowResourcesLayoutEditor(Scheduler.Storage, Scheduler.LookAndFeel);
end;
procedure TDemoBasicMainForm.miGroupByClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
case TMenuItem(Sender).Tag of
0:
Scheduler.OptionsView.GroupingKind := gkNone;
1:
Scheduler.OptionsView.GroupingKind := gkByResource;
2:
Scheduler.OptionsView.GroupingKind := gkByDate;
end;
end;
procedure TDemoBasicMainForm.ExportToClick(Sender: TObject);
procedure ExportToFile(AType: Integer);
begin
if SaveDialog.Execute then
begin
case AType of
1:
cxExportSchedulerToExcel(SaveDialog.FileName, Scheduler);
2:
cxExportSchedulerToText(SaveDialog.FileName, Scheduler);
3:
cxExportSchedulerToHTML(SaveDialog.FileName, Scheduler);
4:
cxExportSchedulerToXML(SaveDialog.FileName, Scheduler);
end;
end;
end;
begin
case (Sender as TMenuItem).Tag of
0: cxSchedulerExportToOutlook(Scheduler.Storage);
1..4:
ExportToFile((Sender as TMenuItem).Tag);
end;
end;
procedure TDemoBasicMainForm.SyncClick(Sender: TObject);
begin
if (Sender as TMenuItem).Tag = 0 then
cxSchedulerSynchronizeStorageWithOutlook(Scheduler.Storage, GetSyncIDField)
else
cxSchedulerSynchronizeOutlookWithStorage(Scheduler.Storage, GetSyncIDField);
end;
procedure TDemoBasicMainForm.miResCountClick(Sender: TObject);
begin
Scheduler.OptionsView.ResourcesPerPage := TMenuItem(Sender).Tag;
if TMenuItem(Sender).Tag = 0 then
Scheduler.ResourceNavigator.Visibility := snvNever
else
Scheduler.ResourceNavigator.Visibility := snvAlways
end;
procedure TDemoBasicMainForm.miTimeWorktimeonlyClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
Scheduler.ViewTimeGrid.WorkTimeOnly := TMenuItem(Sender).Checked;
Scheduler.ViewTimeGrid.WorkDaysOnly := TMenuItem(Sender).Checked;
end;
procedure TDemoBasicMainForm.miDaySettingsClick(Sender: TObject);
var
AChecked: Boolean;
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
AChecked := TMenuItem(Sender).Checked;
case TMenuItem(Sender).Tag of
0:
Scheduler.ViewDay.HeaderContainer := AChecked;
1:
Scheduler.ViewDay.AlwaysShowEventTime := AChecked;
2:
Scheduler.ViewDay.WorkTimeOnly := AChecked;
3:
Scheduler.ViewDay.TimeRulerMinutes := AChecked;
end;
end;
procedure TDemoBasicMainForm.miWeekViewClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
if TMenuItem(Sender).Tag = 0 then
Scheduler.ViewWeek.CompressWeekEnd := TMenuItem(Sender).Checked
else
begin
if TMenuItem(Sender).Checked then
Scheduler.ViewWeek.DaysLayout := wdlOneColumn
else
Scheduler.ViewWeek.DaysLayout := wdlTwoColumns;
end;
end;
procedure TDemoBasicMainForm.miCompressweekendsClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
Scheduler.ViewWeeks.CompressWeekEnd := TMenuItem(Sender).Checked;
end;
procedure TDemoBasicMainForm.AlldayeventsonlyClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
Scheduler.ViewYear.AllDayEventsOnly := TMenuItem(Sender).Checked;
end;
procedure TDemoBasicMainForm.miSharingClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
Scheduler.EventOperations.SharingBetweenResources := TMenuItem(Sender).Checked;
end;
procedure TDemoBasicMainForm.miIntersectionClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
Scheduler.EventOperations.Intersection := TMenuItem(Sender).Checked;
end;
procedure TDemoBasicMainForm.miWeekCompressWeekendsClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
Scheduler.ViewWeek.CompressWeekEnd := TMenuItem(Sender).Checked;
end;
end.