//...
TForm1 = class(TForm)
DateTimePicker1: TDateTimePicker;
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FCalendarIsActive: Boolean;
procedure OnAddForm(Sender: TObject; Form: TCustomForm);
procedure OnRemoveForm(Sender: TObject; Form: TCustomForm);
public
end;
//...
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.AddHandlerFormAdded(@OnAddForm);
Screen.AddHandlerRemoveForm(@OnRemoveForm);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Screen.RemoveHandlerFormAdded(@OnAddForm);
Screen.RemoveHandlerRemoveForm(@OnRemoveForm);
end;
procedure TForm1.OnAddForm(Sender: TObject; Form: TCustomForm);
begin
FCalendarIsActive := Form.ClassName = 'TDTCalendarForm';
end;
procedure TForm1.OnRemoveForm(Sender: TObject; Form: TCustomForm);
begin
FCalendarIsActive := False; //called after Form1 FormActivate
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if FCalendarIsActive then //called first
begin
ShowMessage('we closed the calendar');
Exit;
end
else
begin
// do other non calendar related processing
end;
end;