unit UGrid;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids,DateUtils, StdCtrls;//DateUtils
type
TFGrid = class(TForm)
StringGrid1: TStringGrid;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
Procedure ShowGrid();
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FGrid: TFGrid;
TheMonth,TheYear:integer;
implementation
{$R *.dfm}
procedure TFGrid.FormCreate(Sender: TObject);
begin
//设置串网格的列数和行数
StringGrid1.ColCount :=8;
StringGrid1.RowCount := 7;
//设置串网格的第一行中的各单元中显示的字符串
StringGrid1.Cells[1,0] :='星期一';
StringGrid1.Cells[2,0] :='星期二';
StringGrid1.Cells[3,0] :='星期三';
StringGrid1.Cells[4,0] :='星期四';
StringGrid1.Cells[5,0] :='星期五';
StringGrid1.Cells[6,0] :='星期六';
StringGrid1.Cells[7,0] :='星期日';
//使程序启动时显示当月的月历
TheYear := Yearof(date());
TheMonth := MonthOf(date());
Combobox1.ItemIndex := TheYear mod 2000;
Combobox2.ItemIndex :=TheMonth-1 ;
ShowGrid(); //刷新串网格
end;
Procedure TFGrid.ShowGrid();
var
i,j,k,thisday:integer; //分别表示月日的循环变量
FirstDay:TDateTime;
DaySum:Integer; //月内总天数
begin
//获取当月第一天的星期
FirstDay :=EncodeDate(TheYear,TheMonth,1);
j :=DayOfTheWeek(FirstDay);
//获取当月总天数
DaySum:=DayOfTheMonth(EndOfTheMonth(FirstDay));
//表示要写入 StringGrid组件中的日期的当前值
thisday :=1;
//将各日期写入StringGrid组件中
for i:=1 to 6 do
for k:=1 to 7 do
begin
if (((i-1)*7+k)<j) or (((i-1)*7+k)>= DaySum+j) then
StringGrid1.Cells[k,i] :=''
else
begin
if Date()= EncodeDate(TheYear,TheMonth,thisday) then
StringGrid1.Cells[k,i] :=inttostr(thisday)+' *Now*'
else
StringGrid1.Cells[k,i] :=inttostr(thisday);
thisday :=thisday +1;
end;
end;
end;
procedure TFGrid.ComboBox1Change(Sender: TObject);
begin
TheYear :=Combobox1.ItemIndex +2000;
ShowGrid();
end;
procedure TFGrid.ComboBox2Change(Sender: TObject);
begin
TheMonth :=Combobox2.ItemIndex+1;
ShowGrid();
end;
end.
月历
最新推荐文章于 2025-01-18 20:54:34 发布
2117

被折叠的 条评论
为什么被折叠?



