#! perl -w
#
# Test Grid method
# - create option
# - Color method
# - ImageList support
# - Event
# - POINT, RECT method.
use strict;
use warnings;
use FindBin();
use Win32::GUI qw(WS_CLIPCHILDREN);
use Win32::GUI::Grid;
# main Window
my $Window = new Win32::GUI::Window (
-title => "Win32::GUI::Grid test 2",
-pos => [100, 100],
-size => [400, 400],
-name => "Window",
-addstyle => WS_CLIPCHILDREN,
) or die "new Window";
# Grid Window
my $Grid = $Window->AddGrid (
-name => "Grid",
-pos => [0, 0],
-rows => 50,
-columns => 10,
-fixedrows => 1,
-fixedcolumns => 1,
-editable => 1,
) 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);
# Change some color (different color format)
$Grid->SetGridBkColor([66,66,66]);
$Grid->SetGridLineColor('#0000ff');
$Grid->SetTitleTipBackClr('#00ff00');
$Grid->SetDefCellTextColor(0,0, 0x9F9F9F);
$Grid->SetDefCellBackColor(0,0, 0x003300);
# Some test
my ($x, $y) = $Grid->GetCellOrigin(1, 1);
print "CellOrigin(1,1) = ($x, $y)\n";
my ($left, $top, $right, $bottom) = $Grid->GetCellRect(1,1);
print "GetCellRect(1,1) ($left, $top, $right, $bottom)\n";
($left, $top, $right, $bottom) = $Grid->GetTextRect(1,1);
print "GetTextRect(1,1) ($left, $top, $right, $bottom)\n";
($x, $y) = $Grid->GetCellFromPt(85, 50);
print "GetCellFromPt(85,50) = ($x, $y)\n";
# Fill Grid
for my $row (0..$Grid->GetRows()) {
for my $col (0..$Grid->GetColumns()) {
if ($row == 0) {
$Grid->SetCellFormat($row, $col, DT_LEFT|DT_WORDBREAK);
$Grid->SetCellText($row, $col,"Column : $col");
$Grid->SetCellImage($row, $col, 0); # Add bitmap
}
elsif ($col == 0) {
$Grid->SetCellFormat($row, $col, DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX);
$Grid->SetCellText($row, $col, "Row : $row");
$Grid->SetCellImage($row, $col, 1); # Add bitmap
}
else {
$Grid->SetCellFormat($row, $col, DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX);
$Grid->SetCellText($row, $col, "Cell : ($row,$col)");
$Grid->SetCellImage($row, $col, 2); # Add bitmap
}
}
}
# Resize Grid Cell
$Grid->AutoSize();
# Some test
($x, $y) = $Grid->GetCellOrigin(1, 1);
print "CellOrigin(1,1) = ($x, $y)\n";
($left, $top, $right, $bottom) = $Grid->GetCellRect(1,1);
print "GetCellRect(1,1) ($left, $top, $right, $bottom)\n";
($left, $top, $right, $bottom) = $Grid->GetTextRect(1,1);
print "GetTextRect(1,1) ($left, $top, $right, $bottom)\n";
($x, $y) = $Grid->GetCellFromPt(85, 50);
print "GetCellFromPt(85,50) = ($x, $y)\n";
# 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 ($col, $row) = @_;
print "Click ($col, $row)\n";
}
sub Grid_RClick {
my ($col, $row) = @_;
print "Right Click ($col, $row)\n";
}
sub Grid_DblClick {
my ($col, $row) = @_;
print "Double Click ($col, $row)\n";
}
sub Grid_Changing {
my ($col, $row) = @_;
print "Selection Changing ($col, $row)\n";
}
sub Grid_Changed {
my ($col, $row) = @_;
print "Selection Changed ($col, $row)\n";
}
sub Grid_BeginEdit {
my ($col, $row) = @_;
print "Begin Edit ($col, $row)\n";
}
sub Grid_EndEdit {
my ($col, $row) = @_;
print "End Edit ($col, $row)\n";
}
sub Grid_BeginDrag {
my ($col, $row) = @_;
print "Begin Drag ($col, $row)\n";
}