Foo JH: > Care to share the solution with us? Of course. Here is the table with textctrls. Navigation: Up,Down,Tab and ShiftTab, and don't forget my remark about SimpleApp.
#!/usr/bin/perl
use strict;
use warnings;
use Wx qw ( wxDEFAULT_FRAME_STYLE wxEVT_CHAR
WXK_UP
WXK_DOWN
WXK_TAB
);
use Wx::Event qw ( EVT_CHAR );
use vars qw(@ISA);
@ISA = qw(Wx::Frame);
#---------------------------------------------------------------------------------------------------
my ( $max_i,$max_j,$now_i,$now_j ) = (5,5,0,0);
my @text;
#---------------------------------------------------------------------------------------------------
my $app = Wx::SimpleApp->new;
my $frame = Wx::Frame->new( undef, -1, "$max_i x $max_j", [ 100, 100 ], [
$max_i*101+20, $max_j*21+20 ], wxDEFAULT_FRAME_STYLE );
my $fga = new Wx::Colour( 0, 100, 0 );
$frame->SetBackgroundColour( $fga );
for( my $i=0; $i<$max_i;$i++) {
for( my $j=0; $j<$max_j;$j++) {
$text[$i][$j] = Wx::TextCtrl->new( $frame, -1, "$i-$j", [ 10 +
101*$i , 10+21*$j ], [ 100, 20], 1 );
EVT_CHAR( $text[$i][$j], \&Onkeydown );
}
}
Wx::Window::SetFocus( $text[$now_i][$now_j] );
$frame->Show( 1 );
$app->MainLoop;
#-----------------------------------------------------------
sub Onkeydown {
my ( $this, $event ) = @_;
my $key = $event->GetKeyCode();
my $shift = $event->ShiftDown;
if ( $key== WXK_TAB ){
if ( $shift ) {
$now_i--; $now_i = $max_i-1 if $now_i < 0;
} else {
$now_i++; $now_i = 0 if $now_i >= $max_i;
}
}
if ( $key== WXK_UP ){ $now_j--; $now_j = $max_j-1 if $now_j < 0; }
if ( $key== WXK_DOWN ){ $now_j++; $now_j = 0 if $now_j >= $max_j; }
Wx::Window::SetFocus( $text[$now_i][$now_j] );
return 0;
}
test3.pl
Description: Perl program
