#! perl -w
#
# Test Grid method
# - Default cell setting
# - font method
#
use strict;
use warnings;
use FindBin();
use Win32::GUI();
use Win32::GUI::Grid;
# main Window
my $Window = new Win32::GUI::Window (
-title => "Win32::GUI::Grid test 3",
-pos => [100, 100],
-size => [400, 400],
-name => "Window",
) or die "new Window";
# Grid Window
my $Grid = $Window->AddGrid (
-name => "Grid",
-pos => [0, 0],
) or die "new Grid";
# Image list
my $IL = new Win32::GUI::ImageList(16, 16, 24, 3, 10);
$IL->Add("$FindBin::Bin/one.bmp");
$IL->Add("$FindBin::Bin/two.bmp");
$IL->Add("$FindBin::Bin/three.bmp");
# Attach ImageList to grid
$Grid->SetImageList($IL);
# Set default cell style
$Grid->SetDefCellTextColor(0,0, '#FF0000');
$Grid->SetDefCellTextColor(1,0, '#00FF00');
$Grid->SetDefCellTextColor(0,1, '#0000FF');
$Grid->SetDefCellBackColor(0,0, '#0000FF');
$Grid->SetDefCellBackColor(1,0, '#FF0000');
$Grid->SetDefCellBackColor(0,1, '#00FF00');
$Grid->SetDefCellFormat(0, 0, DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX);
$Grid->SetDefCellFormat(0, 1, DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX);
$Grid->SetDefCellFormat(1, 0, DT_LEFT|DT_WORDBREAK);
# Change default font
my %font = $Grid->GetDefCellFont(0,0);
$font {-bold} = 1;
$font {-height} = 10;
$Grid->SetDefCellFont(0,0, %font);
# Create Cells after set default style. (required for format ONLY)
$Grid->SetRows(50);
$Grid->SetColumns(10);
$Grid->SetFixedRows(1);
$Grid->SetFixedColumns(1);
# Fill Grid
for my $row (0..$Grid->GetRows()) {
for my $col (0..$Grid->GetColumns()) {
if ($row == 0) {
$Grid->SetCellText($row, $col,"Column : $col");
$Grid->SetCellImage($row, $col, 0); # Add bitmap
}
elsif ($col == 0) {
$Grid->SetCellText($row, $col, "Row : $row");
$Grid->SetCellImage($row, $col, 1); # Add bitmap
}
else {
$Grid->SetCellText($row, $col, "Cell : ($row,$col)");
$Grid->SetCellImage($row, $col, 2); # Add bitmap
}
}
}
# Set Cell font
$Grid->SetCellFont(0, 0, -name => 'Arial' ,
-size => 12,
-italic => 1,
-bold => 1);
# Set font from a Win32::GUI::Font
my $F = new Win32::GUI::Font(
-name => "MS Sans Serif",
-size => 10,
-bold => 1,
);
$Grid->SetCellFont(0, 1, $F->Info());
# Resize Grid Cell
$Grid->AutoSize();
# Event loop
$Window->Show();
Win32::GUI::Dialog();
exit(0);
# Main window event handler
sub Window_Terminate {
return -1;
}
sub Window_Resize {
my ($width, $height) = ($Window->GetClientRect)[2..3];
$Grid->Resize ($width, $height);
}
sub Grid_Click {
my ($row, $col) = @_;
# Get font information
print "\nFont for cell ($row, $col) :\n";
my %font = $Grid->GetCellFont($row, $col);
for my $key (keys %font) {
print $key, " => ", $font{$key}, "\n";
}
}