#! perl -w # # MonthCal sample # use strict; use warnings; use Win32::GUI(); # main Window my $Window = new Win32::GUI::Window ( -name => "Window", -title => "MonthCal Sample", -pos => [100, 100], -size => [440, 400], ) or die "new Window"; # Mono select MonthCal control $Window->AddMonthCal ( -name => "MonthCalMono", -pos => [10, 10], -size => [200, 160], -onSelect => \&OnSelect, -onSelChange => \&OnSelChange, ); # Play with color $Window->MonthCalMono->BackColor(0x7F7F7F); $Window->MonthCalMono->BackMonthColor(0x7FFFFF); $Window->MonthCalMono->BackTitleColor(0xFF7F7F); $Window->MonthCalMono->TextColor(0x7F0000); $Window->MonthCalMono->TitleTextColor(0x7FFF7F); $Window->MonthCalMono->TrailingTextColor(0xA0A0A0); # Multi Select MonthCal control $Window->AddMonthCal ( -name => "MonthCalMulti", -pos => [220, 10], -size => [200, 160], -onSelect => \&OnSelectMulti, -onSelChange => \&OnSelChangeMulti, -onDayState => \&OnDayState, -multiselect => 1, # Allow multi select -weeknumber => 1, # Show Week number -notoday => 1, # Remove Today -daystate => 1, ); # Change default 7 days select to 14 days select $Window->MonthCalMulti->SetMaxSelCount(14); # Init first month daystate (day 15 is bold) $Window->MonthCalMulti->SetDayState( (1<<(15-1)) ); # Event loop $Window->Show(); Win32::GUI::Dialog(); # Main window event handler sub Window_Terminate { return -1; } # Event handler sub OnSelect { my ($self, $y, $m, $d) = @_; my $name = $self->{-name}; print "$name Select = $d/$m/$y\n"; } sub OnSelChange { my ($self, $y, $m, $d) = @_; my $name = $self->{-name}; print "$name SelChange = $d/$m/$y\n"; } sub OnSelectMulti { my ($self, $yf, $mf, $df, $yt, $mt, $dt) = @_; my $name = $self->{-name}; print "$name Select from $df/$mf/$yf to $dt/$mt/$yt\n"; } sub OnSelChangeMulti { my ($self, $yf, $mf, $df, $yt, $mt, $dt) = @_; my $name = $self->{-name}; print "$name SelChange from $df/$mf/$yf to $dt/$mt/$yt\n"; } # Change Day state in calendar sub OnDayState { my ($self, $y, $m, $d, $max, $refarray) = @_; my $name = $self->{-name}; print "$name DayState from $d/$m/$y for $max months\n"; # $refarray is an array reference # Each item is an integer value where each bit represent a day. for my $i (0..$max-1) { $$refarray[$i] |= (1<<(15-1)); # Set day 15 bold for all day } }