Wer für seine Tk::HList schicke Spaltenüberschriften mit Funktionen wie Hover-Effekt und Sortier-Möglichkeit such, der ist mit Tk::HdrResizeButton gut beraten. Das Widget erlaubt es, Buttons in die HList einzufügen. Die Buttons können in ihrer Größe verändert werden. Der Button-Parameter -command
kann zur Umsetzung z.B. von Sortiermöglichkeiten verwendet werden.
#!perl
use strict;
use warnings;
use Tk;
use Tk::HList;
use Tk::HdrResizeButton;
my $mw = MainWindow->new();
# CREATE MY HLIST
my $hlist = $mw->Scrolled('HList',
-columns=>2,
-header => 1
)->pack(-side => 'left', -expand => 'yes', -fill => 'both');
# CREATE COLUMN HEADER 0
my $headerstyle = $hlist->ItemStyle('window', -padx => 0, -pady => 0);
my $header0 = $hlist->HdrResizeButton(
-text => 'Test Name',
-relief => 'flat', -pady => 0,
-command => sub { print "Hello, world!\n";},
-column => 0
);
$hlist->header('create', 0,
-itemtype => 'window',
-widget => $header0,
-style=>$headerstyle
);
# CREATE COLUMN HEADER 1
my $header1 = $hlist->HdrResizeButton(
-text => 'Status',
-command => sub { print "Hello, world!\n";},
-column => 1
);
$hlist->header('create', 1,
-itemtype => 'window',
-widget => $header1,
-style => $headerstyle
);
$mw->MainLoop;
exit(0);
Vom gleichen Autor gibt es noch ein anderes Modul, das jedoch veraltet zu sein scheint: Tk::ResizeButton. Es funktioniert ähnlich.
#!perl
use strict;
use warnings;
use Tk;
use Tk::HList;
use Tk::ResizeButton;
my $mw = MainWindow->new();
# HList erstellen
my $hlist = $mw->Scrolled('HList',
-columns => 2,
-header => 1,
)->pack(
-side => 'left',
-expand => 'yes',
-fill => 'both',
);
# 1. Header-Button erstellen
my $headerstyle = $hlist->ItemStyle(
'window',
-padx => 0,
-pady => 0,
);
my $header0 = $hlist->ResizeButton(
-text => 'Test Name',
-relief => 'flat', -pady => 0,
-command => sub { print "Hello, world!\n";},
-widget => \$hlist,
-column => 0,
);
$hlist->header('create', 0,
-itemtype => 'window',
-widget => $header0,
-style => $headerstyle,
);
# 2. Header-Button erstellen
my $header1 = $hlist->ResizeButton(
-text => 'Status',
-relief => 'flat',
-pady => 0,
-command => sub { print "Hello, world!\n";},
-widget => \$hlist,
-column => 1
);
$hlist->header('create', 1,
-itemtype => 'window',
-widget => $header1,
-style => $headerstyle,
);
$mw->MainLoop;
exit(0);