Thanks Glenn,
There doesn't seem to be any gui documentaion or examples on the exact right
and wrong way this should be handled.
I guess it's a bit understandable why newbies like me find it confusing. :)
I did play with the userdata method also and that is a pretty cool tool.
I appreciate the help.
----- Original Message -----
From: Glenn W Munroe
To: 'Doug Hoffman' ; perl-win32-gui-users@lists.sourceforge.net
Sent: March 21, 2008 1:41 PM
Subject: RE: [perl-win32-gui-users] Button onClick event
Doug,
That will work, but it breaks one of the golden rules of OO programming:
don't access internal object data directly. Of course, it doesn't help that
there isn't a 'Name' method! The same applies to the window handle {-handle},
incidentally.
A more purist approach would be to use the UserData method, something like
this:
##################################################################
use strict;
use Win32::GUI();
my $obMW = new Win32::GUI::Window(
-name => 'Main',
-size => [200,200],
-text => 'Main',
);
$obMW->AddButton(
-name => 'Button1',
-pos => [10,10],
-size => [75,23],
-text => 'Button1',
-onClick => sub { Win32::MsgBox("You just
clicked ".$_[0]->UserData) },
);
$obMW->Button1->UserData('Button1');
$obMW->AddButton(
-name => 'Button2',
-pos => [10,50],
-size => [75,23],
-text => 'Button2',
-onClick => sub { Win32::MsgBox("You just
clicked ".$_[0]->UserData()) },
);
$obMW->Button2->UserData('Button2');
$obMW->Show();
Win32::GUI::Dialog();
#######################################################################
That won't work for the handle, though, as we don't have it at control
creation time. Perhaps we should add 'Name' and 'Handle' methods to the module?
Glenn
------------------------------------------------------------------------------
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Doug Hoffman
Sent: 21 March 2008 14:23
To: perl-win32-gui-users@lists.sourceforge.net
Subject: Re: [perl-win32-gui-users] Button onClick event
Thanks to all who replied.
Here is the code that I received.
my ($ButtonClicked, @other_params) = @_;
my $ButtonName = $ButtonClicked->{-name};
Thanks to Sean for the email
He was nice enough to explain the mechanics of the code above and how it
fetches the button -name
Here's the button add and button_click sub for all who may want it.
### add button #########################
my $Button = new Win32::GUI::Button($Main,
-name => "Test",
-tip => "Test",
-width => 15,
-height => 15,
-left => 600,
-onClick => 'Button_Clicked',
);
$Main->AddButton($Button);
####################################
####################################
sub Button_Clicked
{
my ($ButtonClicked, @other_params) = @_;
my $ButtonName = $ButtonClicked->{-name};
### $ButtonName is now ready for use :) ###
}
#####################################
Thanks,
Doug
The first item passed into the onClick subroutine is the
Win32::GUI::Button object. (Note: NOT the {-name} of the object, but the
blessed Perl object itself.)
> ### create buttons ###########################################
> $ButtonNumber = new Win32::GUI::Button($Main,
> -name => "$ButtonName",
> -tip => "$ButtonName",
> -pos => [$posX, $posY],
> -size => [15, 15],
> -onClick => 'Button_Clicked',
> );
>
>
> ### sub that all buttons go to ###
> sub Button_Clicked{
>
> ?????????????????????????? get button -name here. :P
my ($button, @other_params) = @_;
my $ButtonName = $button->{-name};
> $Main->Status3->Text("$ButtonName");## display button name in status bar
> }
> #########################################################
I can't recall off the top of my head what the other params are, but the
docs should say. (And if all you want is the name, they are not important.)
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
http://perl-win32-gui.sourceforge.net/