Componentes.Terceros.DevExp.../internal/x.36/1/ExpressPrinting System/Demos/Delphi/SchedulerRL/SchedulerRLMain.pas
2008-09-04 11:31:51 +00:00

209 lines
6.0 KiB
ObjectPascal

unit SchedulerRLMain;
interface
uses
Windows, Messages, SysUtils, Classes, Forms, Menus, Graphics, StdCtrls, dxPSCore,
dxPSGlbl, dxPSUtl, cxSchedulerStorage, cxControls, cxSchedulerCustomControls, cxScheduler,
dxPScxCommon, {dxPScxSchedulerLnk,} ComCtrls, ShellApi,
{dxPSPrVwAdv,} // enable for use of ExpressBars in PrintPreview
cxSchedulerUtils, ToolWin, Controls, ImgList, dxPScxScheduler3Lnk,
cxStyles, cxGraphics, cxEdit, cxSchedulerCustomResourceView,
cxSchedulerDayView, cxSchedulerDateNavigator, cxSchedulerHolidays,
cxSchedulerTimeGridView, cxSchedulerWeekView, cxSchedulerYearView,
cxSchedulerGanttView, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev,
dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns;
type
TSchedulerRLMainForm = class(TForm)
MainMenu: TMainMenu;
miFile: TMenuItem;
miDesigner: TMenuItem;
miHelp: TMenuItem;
miPageSetup: TMenuItem;
miPrintPreview: TMenuItem;
miPrint: TMenuItem;
N1: TMenuItem;
miExit: TMenuItem;
miDX: TMenuItem;
dxComponentPrinter1: TdxComponentPrinter;
ToolBar1: TToolBar;
tbSetup: TToolButton;
tbPreview: TToolButton;
tbPrint: TToolButton;
tbDevider: TToolButton;
tbDesigner: TToolButton;
tbDX: TToolButton;
tbSeparator: TToolButton;
tbExit: TToolButton;
Scheduler: TcxScheduler;
Storage: TcxSchedulerStorage;
tbnGenerate: TToolButton;
dxComponentPrinter1Link1: TcxSchedulerReportLink;
ilButtons: TImageList;
procedure miDXClick(Sender: TObject);
procedure miPageSetupClick(Sender: TObject);
procedure miPrintPreviewClick(Sender: TObject);
procedure miPrintClick(Sender: TObject);
procedure miDesignerClick(Sender: TObject);
procedure miExitClick(Sender: TObject);
procedure tbnGenerateClick(Sender: TObject);
private
procedure GenerateRandomEvents(ACount: Integer; ARandomResource: Boolean = False);
function GetRandomCaption: string;
function GetRandomDate: TDateTime;
function GetRandomState: Integer;
function GetRandomResourceID: Variant;
function GetRandomLabelColor: TColor;
public
{ Public declarations }
end;
var
SchedulerRLMainForm: TSchedulerRLMainForm;
implementation
{$R *.DFM}
const
Captions: array[0..22] of string =
('Men''s Track and Field',
'500 meter Men''s Speed Skating',
'100 Meter Individual Medley',
'Women''s Basketball Finals',
'Women''s Cycling 20mi',
'Men''s Gymnastics Finals',
'Women''s Hockey Finals',
'Women''s High Dive Finals',
'Karate Finals',
'Kayak Level IV Finals',
'Lacrosse Semi-finals',
'Polo Finals',
'Women''s Soccer Finals',
'Surfing: Freestyle Finals',
'Swimming: 100 m Finals',
'Track & Field: Women''s Finals',
'Archery Finals',
'Men''s Hockey Finals',
'Men''s Downhill Giant Solom',
'Men''s Ski Jump Finals',
'Women''s Downhill Ski Finals',
'Men''s Relay',
'Baseball Quarter-finals');
procedure TSchedulerRLMainForm.miDXClick(Sender: TObject);
begin
ShellExecute(Handle, PChar('OPEN'), PChar('http://www.devexpress.com'), Nil, Nil, SW_SHOWMAXIMIZED);
end;
procedure TSchedulerRLMainForm.miPageSetupClick(Sender: TObject);
begin
dxComponentPrinter1.PageSetup(nil);
end;
procedure TSchedulerRLMainForm.miPrintPreviewClick(Sender: TObject);
begin
dxComponentPrinter1.Preview(True, nil);
end;
procedure TSchedulerRLMainForm.miPrintClick(Sender: TObject);
begin
dxComponentPrinter1.Print(True, nil, nil);
end;
procedure TSchedulerRLMainForm.miDesignerClick(Sender: TObject);
begin
dxComponentPrinter1.DesignReport(nil);
end;
procedure TSchedulerRLMainForm.miExitClick(Sender: TObject);
begin
Close;
end;
procedure TSchedulerRLMainForm.GenerateRandomEvents(ACount: Integer;
ARandomResource: Boolean = False);
var
I: Integer;
ADate: TDateTime;
AStorage: TcxCustomSchedulerStorage;
begin
AStorage := Scheduler.Storage;
if AStorage = nil then Exit;
AStorage.BeginUpdate;
try
Randomize;
for I := 0 to ACount div 5 * 4 - 1 do
with AStorage.CreateEvent do
begin
ADate := GetRandomDate;
Start := ADate;
Finish := ADate + Random(180) * MinuteToTime;
State := GetRandomState;
LabelColor := EventLabelColors[Random(11)];
Caption := GetRandomCaption;
if ARandomResource then
ResourceID := GetRandomResourceID;
end;
for I := 0 to ACount div 5 - 1 do
with AStorage.CreateEvent do
begin
ADate := GetRandomDate;
Start := ADate;
Finish := ADate + 1;
AllDayEvent := True;
LabelColor := EventLabelColors[Random(11)];
Caption := GetRandomCaption;
if ARandomResource then
ResourceID := GetRandomResourceID;
end;
finally
AStorage.EndUpdate;
end;
end;
function TSchedulerRLMainForm.GetRandomCaption: string;
begin
Result := Captions[Random(Length(Captions))];
end;
function TSchedulerRLMainForm.GetRandomDate: TDateTime;
begin
Result := Date + Random(60) - 30 + Scheduler.OptionsView.WorkStart;
if Trunc(Result) = Date then
Result := Result + Random(10) * HourToTime
else
Result := Result + Random(24) * HourToTime;
end;
function TSchedulerRLMainForm.GetRandomLabelColor: TColor;
begin
Result := EventLabelColors[Random(11)];
end;
function TSchedulerRLMainForm.GetRandomResourceID: Variant;
begin
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 TSchedulerRLMainForm.GetRandomState: Integer;
begin
Result := Random(4);
end;
procedure TSchedulerRLMainForm.tbnGenerateClick(Sender: TObject);
begin
GenerateRandomEvents(100);
end;
end.