#!/usr/bin/perl use Tk; use Tk::Entry; use Tk::Table; use Tk::LabFrame; use warnings; use strict; use DBI; my $v="0.00"; my $mw = MainWindow->new; $mw->geometry("250x400"); $mw->resizable(0,0); $mw->title("Table Example"); my $db=DBI->connect('dbi:mysql:Payroll','root','senthil') or die(); my $sh2=$db->prepare("select code,name from level "); $sh2->execute() or die(); my @name; while (my $row = $sh2->fetchrow_arrayref) { push @name, $row; } my @top2=qw/No Name Amount/; my $table_frame = $mw->LabFrame()->pack(-expand=>1, -fill=>'both'); my $table = $table_frame->Table(-columns => 10, -rows => 6,-fixedrows => 1, -scrollbars => 'oe',-relief => 'raised',-background=>'white'); my $j=0; my $i=0; my @ents; foreach my $j(0..10) { my $tmp_label=$table->Label(-text => $name[$i]->[0],-width => 8, -relief =>'raised'); my $tmp_label1 = $table->Label(-text => $name[$i]->[1],-width => 8, -relief =>'raised'); my $tmp_label2= $table->Entry( -width => 8, -relief =>'raised',-bg => 'white',-validate=>'key'); $table->put($j,1,$tmp_label); $table->put($j,2,$tmp_label1); $table->put($j,3,$tmp_label2); push @ents, $tmp_label2; $i++; } $table->pack( -expand=>1 , -fill=>'both'); my $button_frame = $mw->Frame( -borderwidth => 4 )->pack(); $button_frame->Button(-text => "Exit", -command => sub {exit})->pack(); &defineOrder( @ents ); MainLoop; sub defineOrder { my $widget; for (my $i=0; defined( $_[$i+1] ); $i++) { $_[$i]->bind( '', [\&focus, $_[$i+1]]); $_[$i]->bind( '', [\&focus, $_[$i+1]]); } # Uncomment this line if you want to wrap around $_[ $#_ ]->bind('', [\&focus, $_[0]]); $_[ $#_ ]->bind('', [\&focus, $_[0]]); $_[0]->focus; } sub focus { my ($tk, $self) = @_; $self->focus; }