Every day that I use Perl, I am insanely greatful it is not vbScript. It
seems anything I do in vbScript, I can do in half the lines of code in perl!
Thanks for the InputBox code. It will come in quite handy.
Andy
On 12/6/05, Robert May <[EMAIL PROTECTED]> wrote:
>
> Andy Pastuszak wrote:
> > I am trying to create a simple input box. I created a window, added a
> text area and an Ok and Cancel button.
>
> So you're most of the way there.
>
> > In my vbScript days I would simply use the InputBox function and it did
> all the work for me.
>
> This isn't VB!
>
> > Is there some way to do this in perl using win32::gui or another module?
>
> In Win32::GUI
>
>
> #!perl -w
> use strict;
> use warnings;
>
> my $userinput = InputBox->GetUserInput();
>
> if(defined $userinput and length $userinput) {
> print "Got text: '$userinput'\n";
> }
> else {
> print "No Text\n";
> }
>
> exit(0);
>
> package InputBox;
> use strict;
> use warnings;
> use Win32::GUI();
>
> # Display a window with an edit control and
> # returns text if OK button pressed, undef on cancel
>
> # Full Keyboard navigation (TAB, SHIFT+TAB, ENTER, ESC)
>
> sub GetUserInput
> {
> my $text = undef;
>
> my $mw = Win32::GUI::DialogBox->new(
> -caption => "Enter text ...",
> -pos => [100,100],
> -size => [300,90],
> -helpbox => 0,
> );
>
> my $tf = $mw->AddTextfield(
> -pos => [10,10],
> -size => [$mw->ScaleWidth() - 20, 20],
> -tabstop => 1,
> );
>
> $mw->AddButton(
> -text => 'Ok',
> -ok => 1,
> -default => 1,
> -tabstop => 1,
> -pos => [$mw->ScaleWidth()-156,$mw->ScaleHeight()-30],
> -size => [70,20],
> -onClick => sub { $text = $tf->Text(); return -1; },
> );
>
> $mw->AddButton(
> -text => 'Cancel',
> -cancel => 1,
> -tabstop => 1,
> -pos => [$mw->ScaleWidth()-80,$mw->ScaleHeight()-30],
> -size => [70,20],
> -onClick => sub { return -1; },
> );
>
> $mw->Show();
> $tf->SetFocus();
> Win32::GUI::Dialog();
> return $text;
> }
>
>
> Regards,
> Rob.
> --
> Robert May
> Win32::GUI, a perl extension for native Win32 applications
> http://perl-win32-gui.sourceforge.net/
>