Soweit war mir das schon klar.
Ich hatte gehofft, dass hier schon mal jemand mit diesem Problem zu tun hatte und vielleicht schon einen Lösungsansatz hat.
Ich habe es schon mal so angefangen
Das Problem ist die Änderungsmeldung. Ich habe im Internet mal nachgeschaut und bin davon ausgegangen, dass die Komponente auf den 'Month Calender' von MS aufsetzt. Dieser hat auch einen NOTIFICATION CODE namens 'MCN_VIEWCHANGE'. Damit habe ich ein wenig rumprobiert, dieser ist aber nie aufgetreten (Mal ganz davon abgesehen, dass MCN_VIEWCHANGE nicht definiert ist).
Hier schon mal mein Versuch :
Delphi-Quellcode:
type
TOnGetMonthInfoExtEvent = procedure(Sender: TObject; Month, Year: LongWord;
var MonthBoldInfo: LongWord) of object;
TOnChangeView = procedure(Sender:TObject) of Object;
TMonthView = class(TMonthCalendar)
private
FOnGetMonthInfo: TOnGetMonthInfoExtEvent;
FOnChangeView:TOnChangeView;
procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
published
property OnGetMonthInfo: TOnGetMonthInfoExtEvent read FOnGetMonthInfo write FOnGetMonthInfo;
property OnChangeView:TOnChangeView read FOnChangeView write FOnChangeView;
end;
Delphi-Quellcode:
procedure TMonthView.CNNotify(var Message: TWMNotify);
var
I, MonthNo: Integer;
CurState: PMonthDayState;
YearAdd: integer;
begin
inherited;
with Message, NMHdr^ do
begin
case code of
MCN_GETDAYSTATE:
begin
with PNmDayState(NMHdr)^ do
begin
FillChar(prgDayState^, cDayState * SizeOf(TMonthDayState), 0);
if Assigned(FOnGetMonthInfo) then
begin
CurState := prgDayState;
for I := 0 to cDayState - 1 do
begin
MonthNo := stStart.wMonth + I;
if MonthNo > 12 then
begin
MonthNo := MonthNo - 12;
YearAdd := 1;
end
else
begin
YearAdd := 0;
end;
FOnGetMonthInfo(Self, MonthNo, stStart.wYear+YearAdd, CurState^);
Inc(CurState);
end;
end;
end;
end;
MCN_VIEWCHANGE: // ist niemals aufgetreten
begin
if Assinged(FOnChangeView) then
begin
FOnChangeView(Self);
end;
end;
end;
end;
end;
Vielleicht kann mir da jemand weiterhelfen. Vielleicht hat sich hier auch ein kleiner Denkfehler meinerseits eingeschlichen.
Danke schon mal
mtm2502