Tk::HdrResizeButton - schicke Spaltenüberschriften für die HList

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);
Top