The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! perl -w
#
# Test Grid method
#   - Virtual mode
#   - EndEdit event in virtual mode
#

use strict;
use warnings;

use Win32::GUI qw(WS_CLIPCHILDREN);
use Win32::GUI::Grid;

# main Window
my $Window = new Win32::GUI::Window (
    -title    => "Win32::GUI::Grid test 4",
    -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,      # Use create option
    -columns      => 10,
    -fixedrows    => 1,
    -fixedcolumns => 1,
    -editable     => 1,
    -virtual      => 1,
) or die "new Grid";

# $Grid->SetVirtualMode(1);   # Set virtual before set rows and columns
# $Grid->SetRows(50);
# $Grid->SetColumns(10);
# $Grid->SetFixedRows(1);
# $Grid->SetFixedColumns(1);
# $Grid->SetEditable(1);

$Grid->SetCellBkColor(2, 2, 0xFF0000);

# Event loop
$Window->Show();
Win32::GUI::Dialog();

# Main window event handler
sub Window_Terminate {
    return -1;
}

sub Window_Resize {
    my ($width, $height) = ($Window->GetClientRect)[2..3];
    $Grid->Resize ($width, $height);
}

# Virtual Grid request data
sub Grid_GetData {
    my ($row, $col) = @_;
    return "Cell ($row, $col)";
}

sub Grid_EndEdit {
    my ($col, $row, $str) = @_;
    print "End Edit ($col, $row) = $str\n";
    return 1;
}