From: <fel...@mo...> - 2001-01-15 15:44:14
|
Christian, Increase the height of your combo boxes. Felice Koul Christian <chr...@fu...> on 01/15/2001 09:39:42 AM Please respond to per...@li... To: "per...@ht..." <per...@ht...> cc: (bcc: Felice Vittoria/Aut/Schneider) Subject: [perl-win32-gui-users] Combobox |
From: Jonathan S. <jso...@al...> - 2001-01-23 19:54:13
|
Erick, No, actually I meant what I thyped: $HostName ->Select(0); It works for me. Make sure you place that before your Win32::GUI::Dialog() call or = somewhere where it will get called from a specific sub. Try this short code and see if it works: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D use Win32::GUI; my $screen_width =3D Win32::GUI::GetSystemMetrics(0); my $screen_height =3D Win32::GUI::GetSystemMetrics(1); my $minwidth =3D 620; my $minheight =3D 255; my $MainWindow =3D new Win32::GUI::Window( -name =3D> "MainWindow", -top =3D> ($screen_height - $minheight)/2, -left =3D> ($screen_width - $minwidth)/2, -width =3D> $minwidth, -height =3D> $minheight, -minsize=3D> [$minwidth,$minheight], -title =3D> "Sample Window", ); $HostName =3D $MainWindow->AddCombobox( -name =3D> "HostName", -tabstop =3D> 1, -style =3D> WS_VISIBLE | 2 | WS_NOTIFY, -left =3D> 205, -top =3D> 10, -width =3D> 110, -height =3D> 160, ); $HostName->InsertItem ("ftp.server1.com"); $HostName->InsertItem ("ftp.server2.com"); $MainWindow->Show(); $HostName->Select(0); Win32::GUI::Dialog(); =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Let me know if it still doesn't work for you. Jonathan Southwick Technical & Network Services Allegheny College, Meadsville, PA jso...@al... ----- Original Message -----=20 From: Erick J. Bourgeois=20 To: per...@li...=20 Sent: Tuesday, January 23, 2001 2:22 PM Subject: [perl-win32-gui-users] Combobox Johnathan, Do you mean $HostName ->Select[0]; I tried both ways, both don't work. erick never stop questioning www.jeb.ca |
From: Erick J. B. <er...@e-...> - 2001-01-23 20:14:44
|
It worked Jonathan, thanks. I put the Select method before I inserted = the items :) erick never stop questioning www.jeb.ca |
From: Johan L. <jo...@ba...> - 2001-09-27 20:56:15
|
At 15:52 2001-09-27 -0400, Frazier, Joe Jr wrote: >What are the options for Combobox? I have two applications which use a >combobox. One created manually and one using GuiLoft. The one with >GuiLoft does an an Autofill, however, the one made manually does not. Eh... what is an Autofill? >Example: > >$Window->AddCombobox( -snip- > -addstyle => WS_VISIBLE | 2 | WS_VSCROLL, >); This looks like it is a combo with style CBS_DROPDOWN (the 2). In The GUI Loft, that is analogue to setting the Type property to "drop combo". But from your description of how The Gui Loft version works, the Type property is set to "drop list". The Win32::GUI code would look like this: -addstyle => 0x0003, #CBS_DROPDOWNLIST The third type of Combobox is Type: "simple combo", or -addstyle => 0x0001, #CBS_SIMPLE If anyone is interested, how each type of control in The GUI Loft is created can be viewed in the files in .../PPM/Loft/lib/Win32/GUI/Loft/Control/ in the source distribution: http://www.bahnhof.se/~johanl/perl/Loft/ In some situations it may be helpful just to be able to see the relevant constants and stuff, even if you don't put any effort into understanding the rest of the code. /J ------ ---- --- -- -- -- - - - - - Johan Lindström Boss Casinos Sourcerer jo...@ba... http://www.bahnhof.se/~johanl/ If the only tool you have is a hammer, everything tends to look like a nail |
From: Frazier, J. J. <Joe.Frazier@PeopleClick.com> - 2001-09-28 11:15:58
|
That actually did it! Thanks. I have so much time spent on this application that converting it to use GUILoft would not be an easy option. I am however, using GUILoft for all new projects. By autofill, I mean that if I have five lines in the Combo which start with "i", if I put focus on the combobox and press "i", the combobox populates the first entry which starts with "i". If I press "i" again, it populates the second entry with "i". If, for example I am on the last entry which starts with "i", and press it again, it populates the first entry again. =20 Anyway, Thanks for the help! Joe Frazier, Jr Technical Support Engineer PeopleClick 919-645-2916 joe...@pe... =20 -----Original Message----- From: Johan Lindstrom [mailto:jo...@ba...] Sent: Thursday, September 27, 2001 4:54 PM To: per...@li... Subject: Re: [perl-win32-gui-users] Combobox At 15:52 2001-09-27 -0400, Frazier, Joe Jr wrote: >What are the options for Combobox? I have two applications which use a >combobox. One created manually and one using GuiLoft. The one with >GuiLoft does an an Autofill, however, the one made manually does not. Eh... what is an Autofill? >Example: > >$Window->AddCombobox( -snip- > -addstyle =3D> WS_VISIBLE | 2 | WS_VSCROLL, >); This looks like it is a combo with style CBS_DROPDOWN (the 2). In The GUI=20 Loft, that is analogue to setting the Type property to "drop combo". But from your description of how The Gui Loft version works, the Type=20 property is set to "drop list". The Win32::GUI code would look like this: -addstyle =3D> 0x0003, #CBS_DROPDOWNLIST The third type of Combobox is Type: "simple combo", or -addstyle =3D> 0x0001, #CBS_SIMPLE If anyone is interested, how each type of control in The GUI Loft is=20 created can be viewed in the files in=20 .../PPM/Loft/lib/Win32/GUI/Loft/Control/ in the source distribution: http://www.bahnhof.se/~johanl/perl/Loft/ In some situations it may be helpful just to be able to see the relevant constants and stuff, even if you don't put any effort into understanding the rest of the code. /J ------ ---- --- -- -- -- - - - - - Johan Lindstr=F6m Boss Casinos Sourcerer jo...@ba... http://www.bahnhof.se/~johanl/ If the only tool you have is a hammer, everything tends to look like a nail=20 _______________________________________________ Perl-Win32-GUI-Users mailing list Per...@li... https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users |
From: Johan L. <jo...@ba...> - 2001-09-28 11:38:15
|
At 07:15 2001-09-28 -0400, Frazier, Joe Jr wrote: >That actually did it! Thanks. I have so much time spent on this >application that converting it to use GUILoft would not be an easy >option. Actually, since all The GUI Loft does is _building_ the window for you, replacing existing window-creating code with The GUI Loft Designs is really straightforward: Create a Design with exactly the same controls and control names, comment out the existing code and replace it with the window-building code for the .gld file. Voila, you're done. Everything else that has to do with Win32::GUI remains the same (except that you don't have to do resizing and TabStrips manually unless you want to). I did that with The GUI Loft application itself and it worked out just fine. If it's worth the effort when you already have a working solution is another matter :) I can imagine that TGL Designs are more maintainable and easy to change/redesign than a bunch of $window->AddControl() statements. /J ------ ---- --- -- -- -- - - - - - Johan Lindström Boss Casinos Sourcerer jo...@ba... http://www.bahnhof.se/~johanl/ If the only tool you have is a hammer, everything tends to look like a nail |
From: Kind, U. (AGIS) <uwe...@al...> - 2006-10-28 23:36:17
|
Hi Teddy, try the following: ------------------------------------------------------------------------ ---- #!perl -w use Win32::GUI ( 'WM_COMMAND' ); my $mw =3D new Win32::GUI::Window ( -name =3D> 'mw', -left =3D> 100, -top =3D> 100, -width =3D> 300, -height =3D> 100, -title =3D> 'CBTest', ); =20 my $cb=3D $mw -> AddCombobox ( -name =3D> 'cb', -left =3D> 10, -top =3D> 20, -width =3D> $mw -> ScaleWidth () - 20, -height =3D> 200, -disablenoscroll =3D> 200, -dropdown =3D> 1, -vscroll =3D> 1, ); my $cb_event =3D sub { my $self =3D shift (); if ( $_ [ 0 ] =3D=3D 0x40003E9 ) { my $text =3D $self -> Text (); my $match =3D $self -> FindString ( $text ); =20 if ( $match >=3D 0 ) { $self -> Text ( $self -> GetString ( $match ) ); $self -> SetEditSel ( length ( $text ), -1 ); } } return ( 1 ); }; $cb -> Hook ( WM_COMMAND, $cb_event ); $cb -> SetFocus (); for ( 65 .. 90 ) { $cb -> AddString ( chr ( $_ ) . ' Test' ); } $mw -> Show (); Win32::GUI::Dialog (); ------------------------------------------------------------------------ ---- It won't work from the scratch because of an bug in SetEditSel, so Combobox has to be patched first: ------------------------------------------------------------------------ ---- XS(XS_Win32__GUI__Combobox_SetEditSel) { dXSARGS; if (items !=3D 3) Perl_croak(aTHX_ "Usage: Win32::GUI::Combobox::SetEditSel(handle, start, end)"); { HWND handle; WPARAM start =3D (WPARAM)SvIV(ST(1)); WPARAM end =3D (WPARAM)SvIV(ST(2)); LPARAM sel =3D end * 0x10000 + start; /* added */ LRESULT RETVAL; dXSTARG; if(SvROK(ST(0))) { SV** out=3Dhv_fetch((HV*)SvRV(ST(0)), "-handle", 7, 0); if(out !=3D NULL) handle =3D INT2PTR(HWND,SvIV(*out)); else handle =3D NULL; } else handle =3D INT2PTR(HWND,SvIV(ST(0))); #line 561 "Combobox.xs" / * RETVAL =3D SendMessage(handle, CB_SETEDITSEL, start, (LPARAM) end); */ RETVAL =3D SendMessage(handle, CB_SETEDITSEL, 0, sel); /* changed = */ #line 984 "Combobox.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } ------------------------------------------------------------------------ ---- Furthermore You should handle Del and Backspace or it won't possible to enter a string like 'A Te' because it's always expanded to 'A Test'. Regards, Uwe |
From: Octavian R. <ora...@gm...> - 2006-10-29 07:59:07
|
Thank you very much for this code. I will try to test it, although I am not sure that I know how to apply that patch. Teddy ----- Original Message ----- From: "Kind, Uwe (AGIS)" <uwe...@al...> To: <per...@li...> Sent: Sunday, October 29, 2006 1:35 AM Subject: Re: [perl-win32-gui-users] Combobox > Hi Teddy, > > try the following: > > ------------------------------------------------------------------------ > ---- > #!perl -w > > use Win32::GUI ( 'WM_COMMAND' ); > > my $mw = new Win32::GUI::Window > ( -name => 'mw', > -left => 100, > -top => 100, > -width => 300, > -height => 100, > -title => 'CBTest', > ); > > my $cb= $mw -> AddCombobox > ( -name => 'cb', > -left => 10, > -top => 20, > -width => $mw -> ScaleWidth () - 20, > -height => 200, > > -disablenoscroll => 200, > -dropdown => 1, > -vscroll => 1, > ); > > my $cb_event = sub > { > my $self = shift (); > > if ( $_ [ 0 ] == 0x40003E9 ) > { > my $text = $self -> Text (); > my $match = $self -> FindString ( $text ); > > if ( $match >= 0 ) > { > $self -> Text ( $self -> GetString ( $match ) ); > $self -> SetEditSel ( length ( $text ), -1 ); > } > } > return ( 1 ); > }; > > $cb -> Hook ( WM_COMMAND, $cb_event ); > $cb -> SetFocus (); > > for ( 65 .. 90 ) > { > $cb -> AddString ( chr ( $_ ) . ' Test' ); > } > > $mw -> Show (); > Win32::GUI::Dialog (); > ------------------------------------------------------------------------ > ---- > > It won't work from the scratch because of an bug in SetEditSel, so > Combobox > has to be patched first: > > ------------------------------------------------------------------------ > ---- > > XS(XS_Win32__GUI__Combobox_SetEditSel) > { > dXSARGS; > if (items != 3) > Perl_croak(aTHX_ "Usage: > Win32::GUI::Combobox::SetEditSel(handle, start, end)"); > { > HWND handle; > WPARAM start = (WPARAM)SvIV(ST(1)); > WPARAM end = (WPARAM)SvIV(ST(2)); > LPARAM sel = end * 0x10000 + start; /* added */ > > LRESULT RETVAL; > dXSTARG; > > if(SvROK(ST(0))) { > SV** out=hv_fetch((HV*)SvRV(ST(0)), "-handle", 7, 0); > if(out != NULL) > handle = INT2PTR(HWND,SvIV(*out)); > else > handle = NULL; > } else > handle = INT2PTR(HWND,SvIV(ST(0))); > #line 561 "Combobox.xs" > / * RETVAL = SendMessage(handle, CB_SETEDITSEL, start, (LPARAM) > end); */ > RETVAL = SendMessage(handle, CB_SETEDITSEL, 0, sel); /* changed */ > #line 984 "Combobox.c" > XSprePUSH; PUSHi((IV)RETVAL); > } > XSRETURN(1); > } > > ------------------------------------------------------------------------ > ---- > > Furthermore You should handle Del and Backspace or it won't possible to > enter a string like 'A Te' because it's always expanded to 'A Test'. > > Regards, Uwe > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > 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: Kind, U. (AGIS) <uwe...@al...> - 2006-10-29 12:16:24
|
Hi Teddy, =20 did you build Win32::GUI on your own or did you use the ppm-package? If you don't have the possibility to build the module, you will have to wait until an official patch is available. I've created an entry in the bug tracker for this issue. If you have a C-compiler readily to hand, then download the source- distribution, go to Combobox.xs file and replace the code of SetEditSel with the following lines: ------------------------------------------------------------------------ ################################################################### # (@)METHOD:SetEditSel(START,END) # Select characters in the textfield. LRESULT SetEditSel(handle,start,end) HWND handle WPARAM start WPARAM end PREINIT: LPARAM sel =3D end * 0x10000 + start; CODE: RETVAL =3D SendMessage(handle, CB_SETEDITSEL, 0, sel); OUTPUT: RETVAL ------------------------------------------------------------------------ Patch applied ;-) Now you have to build the package. How to do so is described in the Readme file that you can find in the basedir of the downloaded distribution. Bye, Uwe > > ----- Original Message ----- > > Thank you very much for this code. > I will try to test it, although I am not sure that I know how to apply that > patch. > > Teddy > |
From: Robert M. <rm...@po...> - 2006-10-30 20:25:47
|
Kind, Uwe (AGIS) wrote: > If you don't have the possibility to build the module, you will have to > wait until an official patch is available. I've created an entry in the > bug tracker for this issue. > > If you have a C-compiler readily to hand, then download the source- > distribution, go to Combobox.xs file and replace the code of SetEditSel > with the following lines: > > ------------------------------------------------------------------------ > > ################################################################### > # (@)METHOD:SetEditSel(START,END) > # Select characters in the textfield. > LRESULT > SetEditSel(handle,start,end) > HWND handle > WPARAM start > WPARAM end > PREINIT: > LPARAM sel = end * 0x10000 + start; > CODE: > RETVAL = SendMessage(handle, CB_SETEDITSEL, 0, sel); > OUTPUT: > RETVAL > > ------------------------------------------------------------------------ I propose the following: ############################################################### # (@)METHOD:SetEditSel(START,END) # Select characters in the textfield. START and END are the # (zero-based) index of the characters to be selected. START # is the index of the first character to be selected, and END # is the index of the first character following the selection. # For example to select the first 4 characters: # # $combobox->SetEditSel(0,4); # # If START is -1, the any selection is removed. If END is -1, # then the selection is from START to the last character in the # textfield. # # Returns 1 on success, 0 on failure and -1 if sent to a # Combobox that does not have a textfield (C<-dropdownlist => 1>). LRESULT SetEditSel(handle,start,end) HWND handle UINT start UINT end CODE: RETVAL = SendMessage(handle, CB_SETEDITSEL, 0, MAKELPARAM(start, end)); OUTPUT: RETVAL I think that is equivalent. Regards, Rob. |
From: Reini U. <ru...@x-...> - 2006-11-01 13:16:06
|
Robert May schrieb: > Kind, Uwe (AGIS) wrote: >> If you don't have the possibility to build the module, you will have to >> wait until an official patch is available. I've created an entry in the >> bug tracker for this issue. >> >> If you have a C-compiler readily to hand, then download the source- >> distribution, go to Combobox.xs file and replace the code of SetEditSel >> with the following lines: >> >> ------------------------------------------------------------------------ >> >> ################################################################### >> # (@)METHOD:SetEditSel(START,END) >> # Select characters in the textfield. >> LRESULT >> SetEditSel(handle,start,end) >> HWND handle >> WPARAM start >> WPARAM end >> PREINIT: >> LPARAM sel = end * 0x10000 + start; >> CODE: >> RETVAL = SendMessage(handle, CB_SETEDITSEL, 0, sel); >> OUTPUT: >> RETVAL Oops, I just added this from uwe to the upcoming cygwin release, which is on the way upstream. Your better suggestion below came too late for me, sorry. >> ------------------------------------------------------------------------ > I propose the following: > > ############################################################### > # (@)METHOD:SetEditSel(START,END) > # Select characters in the textfield. START and END are the > # (zero-based) index of the characters to be selected. START > # is the index of the first character to be selected, and END > # is the index of the first character following the selection. > # For example to select the first 4 characters: > # > # $combobox->SetEditSel(0,4); > # > # If START is -1, the any selection is removed. If END is -1, > # then the selection is from START to the last character in the > # textfield. > # > # Returns 1 on success, 0 on failure and -1 if sent to a > # Combobox that does not have a textfield (C<-dropdownlist => 1>). > LRESULT > SetEditSel(handle,start,end) > HWND handle > UINT start > UINT end > CODE: > RETVAL = SendMessage(handle, CB_SETEDITSEL, 0, MAKELPARAM(start, end)); > OUTPUT: > RETVAL > > I think that is equivalent. -- Reini Urban http://phpwiki.org/ http://murbreak.at/ http://helsinki.at/ http://spacemovie.mur.at/ |