in reply to Re^2: Passing variables to subroutines and Win32::GUI
in thread Passing variables to subroutines and Win32::GUI
What am I missing?You are assuming that Button BOK, when calling its own onClick event handler, will pass the text of the Textfield urlfield. This will not work. What *does* get passed is just a copy of the BOK Button object, which you see printing as Win32::GUI::Textfield=HASH(0x1c2c35b). You need to obtain the URL another way.
In the code below, I get the URL by calling the $urlfield->Text() method within the onClick event handler of the BOK Button.
I also made these changes:
use strict; use warnings; use Win32::GUI; use Data::Dumper; $Data::Dumper::Useqq = 1; $| = 1; my $main = Win32::GUI::Window->new( -title => 'application', -name => 'Main', -width => 400, -height => 200, -dialogui => 1, ); my $urlfield = $main->AddTextfield( -name => 'urlfield', -text => '', -left => 10, -top => 10, -width => 200, -height => 25, -prompt => ['URL:', 80], -tabstop => 1, ); $main->AddButton( -name => 'BOK', -text => 'GO!', -pos => [148,125], -tabstop => 1, -ok => 1, -onClick => sub { # Either of these work: my $text = $urlfield->Text(); # my $text = $main->urlfield->Text(); SUBMIT( $text ); return 1; }, ); $urlfield->SetFocus(); $main->Show(); Win32::GUI::Dialog(); sub SUBMIT { my ($submitted_url) = @_; print Dumper $submitted_url; } sub Main_Terminate { # -1 = Stop message loop and finish program return -1; }
|
|---|