|
<< Click to Display Table of Contents >> Navigation: Demos > XI > Features > CalendarForm.pas |
unit CalendarForm;
interface
uses
Classes, SysUtils, IWAppForm, IWApplication, IWTypes, Controls,
IWBaseControl, IWControl, IWCompCalendar, IWCompLabel, IWExtCtrls,
IWCompCheckbox, IWGrids, DB, DBTables, IWDBGrids,
IWCompListbox, IWCompButton, IWCompEdit, IWCompText, Forms, MenuFrame,
IWVCLBaseControl, IWBaseHTMLControl;
type
TformCalendar = class(TIWAppForm)
lbActivities: TIWListbox;
edActivity: TIWEdit;
IWButton1: TIWButton;
IWButton2: TIWButton;
IWButton3: TIWButton;
DateText: TIWLabel;
IWLabel1: TIWLabel;
IWLabel2: TIWLabel;
DemoDiary: TIWCalendar;
framMenu1: TframMenu;
procedure DemoDiaryGetDateInformation(ADate: TDateTime;
VInformation: TStrings);
procedure IWAppFormCreate(Sender: TObject);
procedure IWAppFormDestroy(Sender: TObject);
procedure DemoDiaryDateChange(ADate: TDateTime);
procedure lbActivitiesChange(Sender: TObject);
procedure IWButton1Click(Sender: TObject);
procedure IWButton3Click(Sender: TObject);
procedure IWButton2Click(Sender: TObject);
protected
FOriginalText: string;
FDateList: TStringList;
end;
implementation
{$R *.dfm}
uses
ServerController, IWBaseForm, IWSystem;
procedure TformCalendar.DemoDiaryGetDateInformation(ADate: TDateTime;
VInformation: TStrings);
begin
if FDateList.IndexOf(FormatDateTime('ddmmyyyy', ADate)) <> -1 then begin
VInformation.Assign(TStringList(FDateList.Objects[FDateList.IndexOf(FormatDateTime('ddmmyyyy', ADate))]));
end;
end;
procedure TformCalendar.IWAppFormCreate(Sender: TObject);
var
f, g: integer;
ADate: TDateTime;
AList: TStringList;
AStrDate: string;
begin
FDateList := TStringList.Create;
AList := TStringList.Create;
AList.Add('Cat to vet');
AList.Add('Dog to dogpund');
AList.Add('Get haircut');
AList.Add('See IRS inspector');
AList.Add('Wash car');
AList.Add('See "The two towers"');
AList.Add('Jim''s party');
AList.Add('Phone mother');
AList.Add('Jury duty');
AList.Add('Aerobic');
AList.Add('Wash cat');
AList.Add('Wash dog');
AList.Add('Get new dog');
AList.Add('Paint cat red');
AList.Add('Trip to Mexic');
AList.Add('Shot noisy neighbour');
AList.Add('TIWCalendar deadline');
AList.Add('Get cat food');
AList.Add('Get dog food');
AList.Add('Car to garage');
AList.Add('Bank - house loan');
AList.Add('Court - divorce');
AList.Add('Plumber day');
AList.Add('Kid''s birthday');
AList.Add('Mom''s birthday');
AList.Add('Wife''s birthday');
AList.Add('Pay day');
Randomize;
for f := 0 to AList.Count - 1 do begin
g := Random(60) - Random(60);
ADate := Now - g;
AStrDate := FormatDateTime('ddmmyyyy', ADate);
if FDateList.IndexOf(AStrDate) = -1 then begin
FDateList.AddObject(AStrDate, TStringList.Create);
end;
TStringList(FDateList.Objects[FDateList.IndexOf(AStrDate)]).Add(AList.Strings[f]);
end;
AList.Free;
//Never rely on the StartDate which is set automatically during creation, esp. if you have
//events assigned (such as OnDateChange) which rely on additional resources. An
// StringList holds the events in this demo, which is not initialized when the
//Calendar is created.
DemoDiary.StartDate := now;
end;
procedure TformCalendar.IWAppFormDestroy(Sender: TObject);
var
i: Integer;
begin
for i := 0 to FDateList.Count - 1 do begin
FDateList.Objects[i].Free;
end;
FDateList.Free;
end;
procedure TformCalendar.DemoDiaryDateChange(ADate: TDateTime);
begin
if FDateList.IndexOf(FormatDateTime('ddmmyyyy', ADate)) <> -1 then begin
lbActivities.Items.Assign(TStringList(FDateList.Objects[FDateList.IndexOf(FormatDateTime('ddmmyyyy', ADate))]));
//Important: after changing the items of IWListbox, you need to mark the control to be refreshed in umPartial
lbActivities.DoRefreshControl := true;
end
else begin
lbActivities.Items.Clear;
end;
DateText.Caption := Format('Activities for %s', [FormatDateTime('mmm dd, yyyy', ADate)]);
edActivity.Text := '';
lbActivities.ItemIndex := -1;
end;
procedure TformCalendar.lbActivitiesChange(Sender: TObject);
begin
edActivity.Text := lbActivities.Text;
FOriginalText := edActivity.Text;
end;
procedure TformCalendar.IWButton1Click(Sender: TObject);
var
AStrDate: string;
begin
if edActivity.Text <> '' then begin
// Add
AStrDate := FormatDateTime('ddmmyyyy', DemoDiary.SelectedDate);
if FDateList.IndexOf(AStrDate) = -1 then begin
FDateList.AddObject(AStrDate, TStringList.Create);
end;
TStringList(FDateList.Objects[FDateList.IndexOf(AStrDate)]).Add(edActivity.Text);
DemoDiaryDateChange(DemoDiary.SelectedDate);
end;
end;
procedure TformCalendar.IWButton3Click(Sender: TObject);
var
i: integer;
begin
// Delete
i := FDateList.IndexOf(FormatDateTime('ddmmyyyy', DemoDiary.SelectedDate));
if i >= 0 then begin
if TStringList(FDateList.Objects[i]).IndexOf(FOriginalText) > -1 then
TStringList(FDateList.Objects[i]).Delete(TStringList(FDateList.Objects[i]).IndexOf(FOriginalText));
DemoDiaryDateChange(DemoDiary.SelectedDate);
end;
end;
procedure TformCalendar.IWButton2Click(Sender: TObject);
var
i: integer;
begin
if edActivity.Text <> '' then begin
// Modify
i := FDateList.IndexOf(FormatDateTime('ddmmyyyy', DemoDiary.SelectedDate));
if TStringList(FDateList.Objects[i]).IndexOf(FOriginalText) > -1 then
TStringList(FDateList.Objects[i]).Strings[TStringList(FDateList.Objects[i]).IndexOf(FOriginalText)] := edActivity.Text;
DemoDiaryDateChange(DemoDiary.SelectedDate);
end;
end;
end.