两个问题(每个100分)(200分)

  • 主题发起人 主题发起人 ykx
  • 开始时间 开始时间
Y

ykx

Unregistered / Unconfirmed
GUEST, unregistred user!
如何判断某一个月的天数
如何把stringgrid指定格的颜色改变(是格,不是行,不是列)
 
2:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

var
index: integer;
begin
index := Row * DrawGrid1.ColCount + Col;
with Sender as TDrawGrid do
begin
Canvas.Brush.Color := clBackGround;
Canvas.FillRect(Rect);
ImageList1.Draw(Canvas,Rect.Left,Rect.Top,index);
if gdFocused in State then
Canvas.DrawFocusRect(Rect);
end;
end;
 
1:

procedure TForm1.Button1Click(Sender: TObject);
var
MyDate : TDateTime;
tmpStr : String;
tmpInt : Integer;
begin
MyDate := Date() + 365 - (30*5);
tmpStr := FormatDateTime('mmmm yyyy',MyDate);
tmpInt := DaysInMonth(MyDate);
ShowMessage(tmpStr + '有 ' + IntToStr(tmpInt) + '天');
end;

function TForm1.DaysInMonth(ADate:TDateTime):Integer;
var
MyMonth,
MyYear,
MyDay : Word;
MyDayTable : TDayTable;
tmpBool : Boolean;
begin
DecodeDate(ADate, MyYear, MyMonth, MyDay);
tmpBool := IsLeapYear(MyYear);
MyDayTable := MonthDays[tmpBool];
Result := MyDayTable[MyMonth];
end;
 
ok 被轻松搞定
再问一个额外的问题
在stringgrid的onclick事件中
如何知道是点的哪一个单元格呢?
 
1。

function GetMonthDays(Month:Integer):Integer;
var
SDate,EDate:TDate;
begin
SDate:=StrToDate(FormatDateTime('YYYY',Date)+'-'+IntToStr(Month)+'-01');//取得这个月第一天的日期
EDate:=StrToDate(FormatDateTime('YYYY-MM',SDate+45)+'-01');//取得这下个月第一天的日期
Result:=Round(EDate-SDATE);
end;
2.在ONDRAWCELL中改变画刷的颜色就行啊
 
1: YYYY.M1.1-YYYY.M2.1 日期形相减的天数。
 
StringGrid1.Row
StringGrid1.col
 
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
showmessage(inttostr(stringgrid1.Selection.Left)+','+inttostr(stringgrid1.Selection.top));
end;
 
这位仁兄是在编考勤系统吧?
 
你问的两个问题可能与排班有关吧
 
to redberet
用你的方法怎么把几个格的内容变黑啊
 
多人接受答案了。
 
delphi 中有一个函数 daysinamonth(年,月)可以得到天数,自己查一下帮助吧!祝你成功!
 

Similar threads

回复
0
查看
818
不得闲
回复
0
查看
876
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部