Daniel,
When I read this, I thought that the problem would be a missing -dialogui
option, but then I saw you had that. After that, I removed the "hack" code
and it still worked--am I missing the point? On my system, you can tab
between textfields using the following code:
use Win32::GUI;
my $window = Win32::GUI::Window
-> new (
-name => 'window',
-text => "Window",
-width => 300,
-height => 200,
-dialogui => 1,
);
$t1 = $window
-> AddTextfield (-name => 't1',
-left => 30,
-top => 50,
-width => 100,
-height => 22,
-tabstop => 1,
-prompt => ["Text 1",50],
);
$t2 = $window
-> AddTextfield (-name => 't2',
-left => 30,
-top => 100,
-width => 100,
-height => 22,
-tabstop => 1,
-prompt => ["Text 2",50],
);
$t1 -> SetFocus();
$window -> Show();
sub window_Terminate { -1 }
Win32::GUI::Dialog();
>>>>>>>>>>>>>>>>>>>>>>>>
Glenn
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Daniel Jordan
Sent: Tuesday, August 10, 2004 04:49
To: [email protected]
Subject: [perl-win32-gui-users] Tab between controls in a Window using an
Accelerator table
I wasn't able to find any solutions to this in the archives, but I was able
to hack my way through it and thought I'd share.
The problem I was having was to use Tab to move between fields in a window
(I usually use a DialogBox, but wanted a scroll bar - thanks to kenneth for
his great example of doing that).
I came up with the following (no scroll bars here), but I feel like it's a
hack and there should be a better way to do it. But nothing else seemed to
work.
So if anyone has a more elegant solution, please let me know.
use Win32::GUI;
$AccTable = new Win32::GUI::AcceleratorTable(
"Ctrl-X" => "Close",
"Tab" => "Tab",
"Shift-Tab" => "Shift_Tab",
);
my $window = Win32::GUI::Window
-> new (
-name => 'window',
-text => "Window",
-width => 300,
-height => 200,
-dialogui => 1,
-accel => $AccTable,
);
$t1 = $window
-> AddTextfield (-name => 't1',
-left => 30,
-top => 50,
-width => 100,
-height => 22,
-tabstop => 1,
-prompt => ["Text 1",50],
);
$t2 = $window
-> AddTextfield (-name => 't2',
-left => 30,
-top => 100,
-width => 100,
-height => 22,
-tabstop => 1,
-prompt => ["Text 2",50],
);
my @focuslist = ("t1","t2");
sub Close_Click {
print "x\n";
$window -> Hide();
return -1;
}
sub Tab_Click {
my $focusat;
for (my $i=0;$i<=$#focuslist;$i++) {
if (Win32::GUI::GetFocus() == $window -> {$focuslist[$i]} ->
{-handle}) {
if ($i < $#focuslist) {
$focusat = $i+1;
} else {
$focusat = 0;
}
}
}
$window -> {$focuslist[$focusat]} -> SetFocus(); }
sub Shift_Tab_Click {
my $focusat;
for (my $i=0;$i<=$#focuslist;$i++) {
if (Win32::GUI::GetFocus() == $window -> {$focuslist[$i]} ->
{-handle}) {
if ($i >0) {
$focusat = $i-1;
} else {
$focusat = $#focuslist;
}
}
}
$window -> {$focuslist[$focusat]} -> SetFocus(); }
$t1 -> SetFocus();
$window -> Show();
sub window_Terminate { -1 }
Win32::GUI::Dialog();
__________________________________
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk
Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off
Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Perl-Win32-GUI-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users