From: Plum, J. <jp...@ba...> - 2005-12-29 15:01:35
|
Would you plz share the resolution with the group? It helps when people search the archive looking for an answer toa problem they are having and actually find it :p Jason P. -----Original Message----- From: per...@li... [mailto:per...@li...] On Behalf Of Octavian Rasnita Sent: Thursday, December 29, 2005 6:36 AM To: Octavian Rasnita; per...@li... Subject: Re: [perl-win32-gui-users] multiline Textfield Ok, I have finally solved the problem. Teddy ----- Original Message -----=20 From: "Octavian Rasnita" <ora...@fc...> To: <per...@li...> Sent: Thursday, December 29, 2005 12:57 PM Subject: [perl-win32-gui-users] multiline Textfield > Hi, > > I am trying to create a multiline textfield on a window that has > the -dialogui option set but the big problem is that I cannot move the focus > out of that window by pressing the tab key. > > I have tried to use the onKeyDown, onKeyUp, onChar events and > GetKeyboardState method to trap the tab and shift+tab key, and when those > key are pressed, the focus is passed to the next or prior control from the > window as it should. > > The problem is that if another key is pressed in the multiline textfield > (the home key, page up, down, end, the arrow keys, the letters...) nothing > happends. > > When an event like onKeyDown traps a keystroke, if that key pressed is a > letter or an arrow key, the function that handles the event doesn't do > anything with the key, but I want that letter to be printed on the > textfield. > > I am able to do a $Win->Textfield->ReplaceSel(chr($key)) but it works only > if the key is a letter, but it doesn't work if it is a arrow, or home, end, > etc. > > Is there a solution for doing what I want? > > Thank you. > > Teddy > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick _______________________________________________ Perl-Win32-GUI-Users mailing list Per...@li... https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users http://perl-win32-gui.sourceforge.net/ |
From: Octavian R. <ora...@fc...> - 2005-12-29 15:49:13
|
Ok, sorry. The solution was simple. I just needed to add: return 1; at the end of the event handler function. I have read that if the event handler returns -1, the program terminates (I knew that), but I also found that if it returns 0 the event will be stopped and if it returns 1, it will be passed further. Teddy ----- Original Message ----- From: "Plum, Jason" <jp...@ba...> To: <per...@li...> Sent: Thursday, December 29, 2005 17:02 PM Subject: RE: [perl-win32-gui-users] multiline Textfield Would you plz share the resolution with the group? It helps when people search the archive looking for an answer toa problem they are having and actually find it :p Jason P. -----Original Message----- From: per...@li... [mailto:per...@li...] On Behalf Of Octavian Rasnita Sent: Thursday, December 29, 2005 6:36 AM To: Octavian Rasnita; per...@li... Subject: Re: [perl-win32-gui-users] multiline Textfield Ok, I have finally solved the problem. Teddy ----- Original Message ----- From: "Octavian Rasnita" <ora...@fc...> To: <per...@li...> Sent: Thursday, December 29, 2005 12:57 PM Subject: [perl-win32-gui-users] multiline Textfield > Hi, > > I am trying to create a multiline textfield on a window that has > the -dialogui option set but the big problem is that I cannot move the focus > out of that window by pressing the tab key. > > I have tried to use the onKeyDown, onKeyUp, onChar events and > GetKeyboardState method to trap the tab and shift+tab key, and when those > key are pressed, the focus is passed to the next or prior control from the > window as it should. > > The problem is that if another key is pressed in the multiline textfield > (the home key, page up, down, end, the arrow keys, the letters...) nothing > happends. > > When an event like onKeyDown traps a keystroke, if that key pressed is a > letter or an arrow key, the function that handles the event doesn't do > anything with the key, but I want that letter to be printed on the > textfield. > > I am able to do a $Win->Textfield->ReplaceSel(chr($key)) but it works only > if the key is a letter, but it doesn't work if it is a arrow, or home, end, > etc. > > Is there a solution for doing what I want? > > Thank you. > > Teddy > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ Perl-Win32-GUI-Users mailing list Per...@li... https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users http://perl-win32-gui.sourceforge.net/ ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_idv37&alloc_id865&op=ick _______________________________________________ Perl-Win32-GUI-Users mailing list Per...@li... https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users http://perl-win32-gui.sourceforge.net/ |
From: Robert M. <rm...@po...> - 2006-01-04 00:37:27
|
Octavian Rasnita wrote: > Ok, sorry. The solution was simple. > > I just needed to add: > > return 1; > > at the end of the event handler function. Which one? Would you be prepared to produce a small working example of what you've had to do (with, say, a multi-line textfield and a button) showing how to allow tab navigation between the 2 controls. I spent the last hour trying to track down what I think is a bug, as by default you should be able to tab out of a multiline edit(textfield) control, and use ctrl-tab to insert a tab into the control; I can find example microsoft dialogs where this is the exact behaviour, but the behaviour I get from Win32::GUI is that tab does nothing and tab-ctrl inserts a tab (as expected). I'm sure we're not passing an event onto it's default handler correctly somewhere, but I can't find it, and I'd like to fix it. Thanks, Rob. > I have read that if the event handler returns -1, the program terminates (I > knew that), but I also found that if it returns 0 the event will be stopped > and if it returns 1, it will be passed further. > > Teddy > > ----- Original Message ----- > From: "Plum, Jason" <jp...@ba...> > To: <per...@li...> > Sent: Thursday, December 29, 2005 17:02 PM > Subject: RE: [perl-win32-gui-users] multiline Textfield > > > Would you plz share the resolution with the group? > > It helps when people search the archive looking for an answer toa > problem they are having and actually find it :p > > Jason P. > > -----Original Message----- > From: per...@li... > [mailto:per...@li...] On Behalf Of > Octavian Rasnita > Sent: Thursday, December 29, 2005 6:36 AM > To: Octavian Rasnita; per...@li... > Subject: Re: [perl-win32-gui-users] multiline Textfield > > Ok, I have finally solved the problem. > > Teddy > > ----- Original Message ----- > From: "Octavian Rasnita" <ora...@fc...> > To: <per...@li...> > Sent: Thursday, December 29, 2005 12:57 PM > Subject: [perl-win32-gui-users] multiline Textfield > > > >>Hi, >> >>I am trying to create a multiline textfield on a window that has >>the -dialogui option set but the big problem is that I cannot move the > > focus > >>out of that window by pressing the tab key. >> >>I have tried to use the onKeyDown, onKeyUp, onChar events and >>GetKeyboardState method to trap the tab and shift+tab key, and when > > those > >>key are pressed, the focus is passed to the next or prior control from > > the > >>window as it should. >> >>The problem is that if another key is pressed in the multiline > > textfield > >>(the home key, page up, down, end, the arrow keys, the letters...) > > nothing > >>happends. >> >>When an event like onKeyDown traps a keystroke, if that key pressed is > > a > >>letter or an arrow key, the function that handles the event doesn't do >>anything with the key, but I want that letter to be printed on the >>textfield. >> >>I am able to do a $Win->Textfield->ReplaceSel(chr($key)) but it works > > only > >>if the key is a letter, but it doesn't work if it is a arrow, or home, > > end, > >>etc. >> >>Is there a solution for doing what I want? >> >>Thank you. >> >>Teddy >> >> >> >>------------------------------------------------------- >>This SF.net email is sponsored by: Splunk Inc. Do you grep through log > > files > >>for problems? Stop! Download the new AJAX search engine that makes >>searching your log files as easy as surfing the web. DOWNLOAD > > SPLUNK! > >>http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click >>_______________________________________________ >>Perl-Win32-GUI-Users mailing list >>Per...@li... >>https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users >>http://perl-win32-gui.sourceforge.net/ > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_idv37&alloc_id865&op=ick > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ > |
From: Robert M. <rm...@po...> - 2006-01-04 21:33:53
|
"Octavian Rasnita" originally wrote >>> I am trying to create a multiline textfield on a window that has >>> the -dialogui option set but the big problem is that I cannot move the >>> focus out of that window by pressing the tab key. I've tracked down the problem and have added a solution for the next release. In the meantime, here's a work around. It doesn't quite work (you can't enter tab's into the Textfield using ctrl-tab), but may still be useful? #!perl -w use strict; use warnings; use Win32::GUI qw(ES_WANTRETURN WS_BORDER WS_EX_NOPARENTNOTIFY WM_KEYDOWN); sub WM_GETDLGCODE() {0x0087}; sub VK_TAB() {0x09} sub VK_CONTROL() {17} my $mw = Win32::GUI::Window->new( -title => "Tab Navigation", -pos => [100,100], -size => [400,300], -dialogui => 1, ); my $tf = $mw->AddTextfield( -size => [200,200], -tabstop => 1, -multiline => 1, -autovscroll => 0, -vscroll => 1, -addstyle => ES_WANTRETURN, # allow <enter> to start new line ); $tf->Hook(WM_GETDLGCODE, \&getcode); $mw->AddButton( -pos => [220,220], -text => "OK", -default => 1, -ok => 1, -tabstop => 1, ); $mw->AddButton( -pos => [260,220], -text => 'Cancel', -cancel => 1, -tabstop => 1, ); $mw->Show(); Win32::GUI::Dialog(); exit(0); sub getcode { my ($object, $wParam, $lParam, $type, $msgcode) = @_; return unless $type == 0; return unless $msgcode == WM_GETDLGCODE; # ignore system queries return 1 if $lParam == 0; # unpack the bits of msg structure pointed to by lparam # that we need my (undef, $message, $vkey) = unpack("LLL", unpack("P12", pack("L", $lParam))); # Not a keydown event, ignore return 1 unless $message == WM_KEYDOWN; # Not TAB key, ignore return 1 unless $vkey == VK_TAB; # Ctrl key down, ignore - not working # return 1 if Win32::GUI::GetAsyncKeyState(VK_CONTROL); # returning 0 (we don't the message) return 0; } __END__ Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ |