السلام عليكم، مرحبا بالجميع.
هل هذه الطريقة سليمة من الناحية المنطقية و البرمجية
وبماذا تنصحون
وفي الاخير تقبلوا شكري الجزيل
هل هذه الطريقة سليمة من الناحية المنطقية و البرمجية
وبماذا تنصحون
وفي الاخير تقبلوا شكري الجزيل
كود :
[align=left]nit Unit1;[/align]
[align=left]interface[/align]
[align=left]uses[/align]
[align=left] Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,[/align]
[align=left] Dialogs, StdCtrls, ComCtrls, Unit2,DateUtils;[/align]
[align=left]type[/align]
[align=left] TForm1 = class(TForm)[/align]
[align=left] Button1: TButton;[/align]
[align=left] Edit1: TEdit;[/align]
[align=left] DateTimePicker1: TDateTimePicker;[/align]
[align=left] Label1: TLabel;[/align]
[align=left] Label2: TLabel;[/align]
[align=left] Edit2: TEdit;[/align]
[align=left] Label3: TLabel;[/align]
[align=left] Button2: TButton;[/align]
[align=left] procedure Button1Click(Sender: TObject);[/align]
[align=left] procedure Button2Click(Sender: TObject);[/align]
[align=left] end;[/align]
[align=left] TEnterEmployee = class(Tds)[/align]
[align=left] private[/align]
[align=left] fDateE: TDate;[/align]
[align=left] procedure SetLDate(ALDate: TDate); override;[/align]
[align=left] function GetLDate: TDate; override;[/align]
[align=left] end;[/align]
[align=left] TSortieEmployee = class(Tds)[/align]
[align=left] private[/align]
[align=left] fDateS: TDate;[/align]
[align=left] procedure SetLDate(ALDate: TDate); override;[/align]
[align=left] function GetLDate: TDate; override;[/align]
[align=left] end;[/align]
[align=left]var[/align]
[align=left] Form1: TForm1;[/align]
[align=left]implementation[/align]
[align=left]{$R *.dfm}[/align]
[align=left]procedure TForm1.Button1Click(Sender: TObject);[/align]
[align=left]var[/align]
[align=left] d1: Tds;[/align]
[align=left]begin[/align]
[align=left] d1:= TEnterEmployee.Create;[/align]
[align=left] try[/align]
[align=left] d1.NameFirst := Edit1.Text;[/align]
[align=left] d1.NameLast := Edit2.Text;[/align]
[align=left] d1.LDate := DateTimePicker1.Date;[/align]
[align=left] //[/align]
[align=left] Label1.Caption := d1.NameFirst;[/align]
[align=left] Label2.Caption := d1.NameLast;[/align]
[align=left] Label3.Caption := DateToStr(d1.LDate);[/align]
[align=left] finally[/align]
[align=left] d1.Free[/align]
[align=left] end;[/align]
[align=left]end;[/align]
[align=left]procedure TForm1.Button2Click(Sender: TObject);[/align]
[align=left]var[/align]
[align=left] d1: Tds;[/align]
[align=left]begin[/align]
[align=left] d1:= TSortieEmployee.Create;[/align]
[align=left] try[/align]
[align=left] d1.NameFirst := Label1.Caption;[/align]
[align=left] d1.NameLast := Label2.Caption;[/align]
[align=left] d1.LDate := StrToDate(Label3.Caption);[/align]
[align=left] //[/align]
[align=left] Edit1.Text := d1.NameFirst;[/align]
[align=left] Edit2.Text := d1.NameLast;[/align]
[align=left] DateTimePicker1.Date := d1.LDate;[/align]
[align=left] finally[/align]
[align=left] d1.Free[/align]
[align=left] end;[/align]
[align=left]end;[/align]
[align=left]function TEnterEmployee.GetLDate: TDate;[/align]
[align=left]begin[/align]
[align=left] Result := fDateE[/align]
[align=left]end;[/align]
[align=left]procedure TEnterEmployee.SetLDate(ALDate: TDate);[/align]
[align=left]begin[/align]
[align=left] if YearOf(Now)-YearOf(ALDate)>17 then[/align]
[align=left] fDateE := ALDate;[/align]
[align=left]end;[/align]
[align=left]function TSortieEmployee.GetLDate: TDate;[/align]
[align=left]begin[/align]
[align=left] Result := fDateS[/align]
[align=left]end;[/align]
[align=left]procedure TSortieEmployee.SetLDate(ALDate: TDate);[/align]
[align=left]begin[/align]
[align=left] fDateS := ALDate[/align]
[align=left]end;[/align]
[align=left]end.[/align]
[align=left]-----------[/align]
[align=left]unit Unit2;[/align]
[align=left]interface[/align]
[align=left]uses Controls;[/align]
[align=left]type[/align]
[align=left] Tds = class[/align]
[align=left] protected[/align]
[align=left] fNameFirst,fNameLast: string;[/align]
[align=left] procedure SetLDate(ALDate: TDate); virtual; abstract;[/align]
[align=left] function GetLDate: TDate; virtual; abstract;[/align]
[align=left] public[/align]
[align=left] property NameFirst: string read fNameFirst write fNameFirst;[/align]
[align=left] property NameLast: string read fNameLast write fNameLast;[/align]
[align=left] property LDate: TDate read GetLDate write SetLDate;[/align]
[align=left] end;[/align]
[align=left]implementation[/align]
[align=left]end.[/align]
كود :
nit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Unit2,DateUtils;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
DateTimePicker1: TDateTimePicker;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
TEnterEmployee = class(Tds)
private
fDateE: TDate;
procedure SetLDate(ALDate: TDate); override;
function GetLDate: TDate; override;
end;
TSortieEmployee = class(Tds)
private
fDateS: TDate;
procedure SetLDate(ALDate: TDate); override;
function GetLDate: TDate; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
d1: Tds;
begin
d1:= TEnterEmployee.Create;
try
d1.NameFirst := Edit1.Text;
d1.NameLast := Edit2.Text;
d1.LDate := DateTimePicker1.Date;
//
Label1.Caption := d1.NameFirst;
Label2.Caption := d1.NameLast;
Label3.Caption := DateToStr(d1.LDate);
finally
d1.Free
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
d1: Tds;
begin
d1:= TSortieEmployee.Create;
try
d1.NameFirst := Label1.Caption;
d1.NameLast := Label2.Caption;
d1.LDate := StrToDate(Label3.Caption);
//
Edit1.Text := d1.NameFirst;
Edit2.Text := d1.NameLast;
DateTimePicker1.Date := d1.LDate;
finally
d1.Free
end;
end;
function TEnterEmployee.GetLDate: TDate;
begin
Result := fDateE
end;
procedure TEnterEmployee.SetLDate(ALDate: TDate);
begin
if YearOf(Now)-YearOf(ALDate)>17 then
fDateE := ALDate;
end;
function TSortieEmployee.GetLDate: TDate;
begin
Result := fDateS
end;
procedure TSortieEmployee.SetLDate(ALDate: TDate);
begin
fDateS := ALDate
end;
end.
كود :
unit Unit2;
interface
uses Controls;
type
Tds = class
protected
fNameFirst,fNameLast: string;
procedure SetLDate(ALDate: TDate); virtual; abstract;
function GetLDate: TDate; virtual; abstract;
public
property NameFirst: string read fNameFirst write fNameFirst;
property NameLast: string read fNameLast write fNameLast;
property LDate: TDate read GetLDate write SetLDate;
end;
implementation
end.