Chapter 02 - Project DateCopy |
Project Structure
| DateCopy.dpr |
program DateCopy;
uses
Forms,
DateF in 'DateF.pas' ,
Dates in 'Dates.pas';
begin
Application.Initialize;
Application.CreateForm(TDateForm, DateForm);
Application.Run;
end.
| DateF.pas |
unit DateF;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Dates, StdCtrls;
type
TDateForm = class(TForm)
LabelDate: TLabel;
BtnIncrease: TButton;
BtnDecrease: TButton;
BtnAdd10: TButton;
BtnSubtract10: TButton;
BtnLeap: TButton;
BtnToday: TButton;
procedure BtnIncreaseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BtnDecreaseClick(Sender: TObject);
procedure BtnAdd10Click(Sender: TObject);
procedure BtnSubtract10Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BtnLeapClick(Sender: TObject);
procedure BtnTodayClick(Sender: TObject);
private
TheDay: TDate;
public
end;
var
DateForm: TDateForm;
implementation
procedure TDateForm.FormCreate(Sender: TObject);
begin
TheDay := TDate.Create (2001, 12, 25);
LabelDate.Caption := TheDay.GetText;
end;
procedure TDateForm.BtnIncreaseClick(Sender: TObject);
begin
TheDay.Increase;
LabelDate.Caption := TheDay.GetText;
end;
procedure TDateForm.BtnDecreaseClick(Sender: TObject);
begin
TheDay.Decrease;
LabelDate.Caption := TheDay.GetText;
end;
procedure TDateForm.BtnAdd10Click(Sender: TObject);
begin
TheDay.Increase (10);
LabelDate.Caption := TheDay.GetText;
end;
procedure TDateForm.BtnSubtract10Click(Sender: TObject);
begin
TheDay.Decrease (10);
LabelDate.Caption := TheDay.GetText;
end;
procedure TDateForm.FormDestroy(Sender: TObject);
begin
TheDay.Free;
end;
procedure TDateForm.BtnLeapClick(Sender: TObject);
begin
if TheDay.LeapYear then
ShowMessage ('Leap year')
else
ShowMessage ('NON Leap year');
end;
procedure TDateForm.BtnTodayClick(Sender: TObject);
var
NewDay: TDate;
begin
NewDay := TDate.Create;
TheDay.Assign(NewDay);
LabelDate.Caption := TheDay.GetText;
NewDay.Free;
end;
end.
| Dates.pas |
unit Dates;
interface
type
TDate = class
private
fDate: TDateTime;
procedure SetDay(const Value: Integer);
procedure SetMonth(const Value: Integer);
procedure SetYear(const Value: Integer);
function GetDay: Integer;
function GetMonth: Integer;
function GetYear: Integer;
public
constructor Create; overload;
constructor Create (y, m, d: Integer); overload;
procedure SetValue (y, m, d: Integer); overload;
procedure SetValue (NewDate: TDateTime); overload;
procedure Assign(Source: TDate);
function LeapYear: Boolean;
procedure Increase (NumberOfDays: Integer = 1);
procedure Decrease (NumberOfDays: Integer = 1);
function GetText: string;
property Year: Integer read GetYear write SetYear;
property Month: Integer read GetMonth write SetMonth;
property Day: Integer read GetDay write SetDay;
end;
implementation
uses
SysUtils, DateUtils;
procedure TDate.Assign (Source: TDate);
begin
fDate := Source.fDate;
end;
procedure TDate.SetValue (y, m, d: Integer);
begin
fDate := EncodeDate (y, m, d);
end;
function TDate.LeapYear: Boolean;
begin
Result := IsInLeapYear(fDate);
end;
procedure TDate.Increase (NumberOfDays: Integer = 1);
begin
fDate := fDate + NumberOfDays;
end;
function TDate.GetText: string;
begin
GetText := DateToStr (fDate);
end;
procedure TDate.Decrease (NumberOfDays: Integer = 1);
begin
fDate := fDate - NumberOfDays;
end;
constructor TDate.Create (y, m, d: Integer);
begin
fDate := EncodeDate (y, m, d);
end;
constructor TDate.Create;
begin
fDate := Date;
end;
procedure TDate.SetValue(NewDate: TDateTime);
begin
fDate := NewDate;
end;
procedure TDate.SetDay(const Value: Integer);
begin
fDate := RecodeDay (fDate, Value);
end;
procedure TDate.SetMonth(const Value: Integer);
begin
fDate := RecodeMonth (fDate, Value);
end;
procedure TDate.SetYear(const Value: Integer);
begin
fDate := RecodeYear (fDate, Value);
end;
function TDate.GetDay: Integer;
begin
Result := DayOf (fDate);
end;
function TDate.GetMonth: Integer;
begin
Result := MonthOf (fDate);
end;
function TDate.GetYear: Integer;
begin
Result := YearOf (fDate);
end;
end.
| DateF.dfm |
object DateForm: TDateForm
Left = 225
Top = 114
Width = 257
Height = 265
ActiveControl = BtnIncrease
Caption = 'DateCopy'
Color = clBtnFace
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = True
OnCreate = FormCreate
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object LabelDate: TLabel
Left = 16
Top = 16
Width = 217
Height = 32
Alignment = taCenter
AutoSize = False
Caption = 'date'
Font.Charset = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -27
Font.Name = 'Arial'
Font.Style = [fsBold]
ParentFont = False
end
object BtnIncrease: TButton
Left = 32
Top = 64
Width = 81
Height = 41
Caption = '&Increase'
TabOrder = 0
OnClick = BtnIncreaseClick
end
object BtnDecrease: TButton
Left = 128
Top = 64
Width = 89
Height = 41
Caption = '&Decrease'
TabOrder = 1
OnClick = BtnDecreaseClick
end
object BtnAdd10: TButton
Left = 32
Top = 120
Width = 81
Height = 41
Caption = '&Add 10'
TabOrder = 2
OnClick = BtnAdd10Click
end
object BtnSubtract10: TButton
Left = 128
Top = 120
Width = 89
Height = 41
Caption = '&Subtract 10'
TabOrder = 3
OnClick = BtnSubtract10Click
end
object BtnLeap: TButton
Left = 32
Top = 176
Width = 81
Height = 41
Caption = '&Leap Year?'
TabOrder = 4
OnClick = BtnLeapClick
end
object BtnToday: TButton
Left = 128
Top = 176
Width = 89
Height = 41
Caption = '&Today'
TabOrder = 5
OnClick = BtnTodayClick
end
end
|
|