分不多,兴趣的朋友可以帮忙看看
控件现在有个BUG ,放一个该控件时,没有问题,当在窗体上放多个时,日历的弹出有问题。
提示无效的窗口句柄。procedure TNDatetime.ButtonClick(Sender: TObject);
begin
// FDCalendar := nil;
if FDCalendar = nil then
begin
FDCalendar := TMonthCalendar.create(nil);
FDate := FDCalendar.Date;
OldWindowProc := FDCalendar.WindowProc;
FDCalendar.WindowProc := myWndProc;
FDCalendar.OnClick := CalenderClick;
FDCalendar.AutoSize := true;
DCalendarhandle := FDCalendar;
FCanvas := TControlCanvas.create;
FCanvas.Control := self.parent;
FCanvas.Pen.Width := FFrameWidth;
FCanvas.Brush.Style := bsClear;
SetNCalColors(FNCalColors); //设置颜色
end; if not FDCalendar.Showing then
begin
FNParent := GetNParent; //得到窗体的名称
FDCalendar.parent := FNParent;
GetLeftandTop;
FDCalendar.Show;
invalidate;
end else
begin
FDCalendar.hide;
end;
end;
控件现在有个BUG ,放一个该控件时,没有问题,当在窗体上放多个时,日历的弹出有问题。
提示无效的窗口句柄。procedure TNDatetime.ButtonClick(Sender: TObject);
begin
// FDCalendar := nil;
if FDCalendar = nil then
begin
FDCalendar := TMonthCalendar.create(nil);
FDate := FDCalendar.Date;
OldWindowProc := FDCalendar.WindowProc;
FDCalendar.WindowProc := myWndProc;
FDCalendar.OnClick := CalenderClick;
FDCalendar.AutoSize := true;
DCalendarhandle := FDCalendar;
FCanvas := TControlCanvas.create;
FCanvas.Control := self.parent;
FCanvas.Pen.Width := FFrameWidth;
FCanvas.Brush.Style := bsClear;
SetNCalColors(FNCalColors); //设置颜色
end; if not FDCalendar.Showing then
begin
FNParent := GetNParent; //得到窗体的名称
FDCalendar.parent := FNParent;
GetLeftandTop;
FDCalendar.Show;
invalidate;
end else
begin
FDCalendar.hide;
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货