Советы по Delphi


Даты и недели


У меня есть программа, которая делает примерно то, что вы хотите. Она сообщает для даты текущую неделю и день недели. Вам необходимо лишь реализовать вычисление предела для дат недели. Кроме того, формат в этом коде для дат задан в виде "06/25/1996".

Вы должны создать форму с именем "Forma", компонентом TEdit с именем "Edit1", четырьмя метками и кнопкой с именем "GetWeekBtn". Убедитесь в том, что обработчиком события формы OnCreate является метод FormCreate.

Надеюсь, что помог вам.

    unit Forma;

interface

uses



SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForma1 = class(TForm) Edit1: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; GetWeekBtn: TButton; Label4: TLabel; procedure GetWeekBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } Function HowManyDays(pYear,pMonth,pDay:word):integer; public { Public declarations } end; var
Forma1: TForma1;
implementation

{$R *.DFM}
Uses Inifiles;

procedure TForma1.FormCreate(Sender: TObject);
var       WinIni:TInifile;
begin
WinIni:=TIniFile.Create('WIN.INI'); WinIni.WriteString('intl','sShortDate','MM/dd/yyyy'); WinIni.Free; end;

Function TForma1.HowManyDays(pYear,pMonth,pDay:word):integer;
var      Sum:integer;
pYearAux:word; begin
Sum:=0; if pMonth>1  then Sum:=Sum+31; if pMonth>2  then Sum:=Sum+28; if pMonth>3  then Sum:=Sum+31; if pMonth>4  then Sum:=Sum+30; if pMonth>5  then Sum:=Sum+31; if pMonth>6  then Sum:=Sum+30; if pMonth>7  then Sum:=Sum+31; if pMonth>8  then Sum:=Sum+31; if pMonth>9  then Sum:=Sum+30; if pMonth>10 then Sum:=Sum+31; if pMonth>11 then Sum:=Sum+30;
Sum:=Sum + pDay; if ((pYear - (pYear div 4)*4)=3D0) and (pMonth>2)then inc(Sum);
HowManyDays:=Sum; end;   { HowManyDays }
procedure TForma1.GetWeekBtnClick(Sender: TObject);
var
ADate: TDateTime; EditAux:String; Week,year,month,day:Word; begin
EditAux:=Edit1.Text; ADate := StrToDate(EditAux); Label1.Caption := DateToStr(ADate); DecodeDate(Adate,Year,Month,Day);
Case DayOfWeek(ADate) of 1: Label4.Caption:='Воскресенье'; 2: Label4.Caption:='Понедельник'; 3: Label4.Caption:='Вторник'; 4: Label4.Caption:='Среда'; 5: Label4.Caption:='Четверг'; 6: Label4.Caption:='Пятница'; 7: Label4.Caption:='Суббота'; end Week:=(HowManyDays(year,month,day) div 7) +1;
Label3.Caption:='Неделя No. '+IntToStr(Week); end;

end.

[001401]



Содержание раздела