Np, I learned from this as well, so its all good.  Now.... from your
example I also played around and was wondering if anyone had played with
dropdown buttons?  Mainly, I have not been able to get the _ButtonClick
event to capture events on the extended dropdown section of a button.  I
was able to get the event in a Toolbar_Click event and comparing the
hotitem to the correct button's index, but this then also sends the
_ButtonClick event as well.
 
Also, is there a way to style popup menus?  I am looking for something
like Excel's Autosum button, which displays a "white" menu with a flat
border ( as opposed to the normal menu's raised 3d effect).
 
 
 
 
Joe Frazier, Jr.
Senior Support Engineer

Peopleclick Service Support
Tel:  +1-800-841-2365
E-Mail: [EMAIL PROTECTED] 
 


________________________________

        From: Chris Wearn [mailto:[EMAIL PROTECTED] 
        Sent: Wednesday, December 01, 2004 8:52 PM
        To: Frazier, Joe Jr
        Cc: perl-win32-gui-users@lists.sourceforge.net
        Subject: RE: [perl-win32-gui-users] Revisited - Rebar and
Toolbars
        
        
        Sensational! Thanks Joe, 
        
        I tried all sorts of things to get rid of it. However, I skipped
that one completely, wrongly assuming it was a vertical divider between
the button objects, similar to TBSTYLE_SEP.
        
        Chris
        
        On Thu, 2004-12-02 at 01:15, Frazier, Joe Jr wrote: 

                After playing with this for a while:
                 
                 
                $TB = new Win32::GUI::Toolbar( 
                    $W->Rebar, 
                    -name   => "Toolbar", 
                    -width  => 100, 
                    -style  => 2048 + 8 + 4, 
                    -width  => 100, 
                    -height => 22, 
                    -nodivider => 1,   # add this to remove the line
above the toolbar.
                 
                ); 
                
                 
                
                Joe Frazier, Jr.
                Senior Support Engineer
                
                Peopleclick Service Support
                Tel:  +1-800-841-2365
                E-Mail: [EMAIL PROTECTED]
                
                  

________________________________

                        From:
[EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Chris Wearn
                        Sent: Wednesday, December 01, 2004 7:51 AM
                        To: perl-win32-gui-users@lists.sourceforge.net
                        Subject: [perl-win32-gui-users] Revisited -
Rebar and Toolbars
                        
                        
                        Hi All,
                        
                        Have spent a few hours revisiting the old
threads regarding the use of the Rebar control.
                        
                        It would appear that you can only have one
control per Band, and this was overcome by inserting a borderless window
into each band.
                        
                        However, reading the documentation from MSDN and
an O'Reilly 'Visual Basic Controls - in a nutshell' on topics for
"coolbar" (rebar), it mentions that each band of the rebar control
serves as a container and that the most common use is to be placed on an
SDI or MDI window, so that multiple TOOLBAR controls can be contained
within it, one in each Band object. This then allows as many controls as
you need to be placed in the Toolbar, which is then made a Child of the
Band.
                        
                        An example that I found, demonstrating this is
at the end of this email.
                        
                        I noticed that I could not "AddToolbar" to a
Band or Rebar and had to use the 'new' method (as per the example).
                        
                        This method all seems to work fine, even the
mouse-over (hot) type image changes work, HOWEVER... If you run the
example, you will notice a thin line above the toolbar. This does not
appear to be part of the Band or Rebar settings and looks like it may be
the BorderStyle of the Toolbar.
                        
                        MS and VB documentation lists a default property
of "ccFixedSingle" but should be changed to "ccNone" when used in a
Rebar.
                        
                        I have searched all the Win32 API constants I
can find, and can't work out how to set or remove this property either
as a -borderstyle => 1, method or -style => TB_FIXEDSINGLE (example)
style.
                        
                        Anyone have any ideas... or is it missing a bit
in the XS ??
                        
                        Rgds
                        
                        Chris Wearn
                        
                        # ====== Rebar.pl example ==============
                        
                        use Win32::GUI; 
                        
                        # just for debugging/testing purposes... 
                        use Win32::API; 
                        $GetDlgCtrlID = new Win32::API("user32",
"GetDlgCtrlID", [N], N); 
                        
                        $W = new Win32::GUI::Window( 
                            -name => "Window", 
                            -text => "Win32::GUI::Rebar test", 
                            -left => 100, 
                            -top => 100, 
                            -width => 200, 
                            -height => 300, 
                        ); 
                        $W->Text("Win32::GUI::Rebar test"); 
                        
                        new Win32::GUI::Rebar( 
                            $W, 
                            -name => "Rebar", 
                            -text => "I'm a placeholder", 
                            -left => 0, 
                            -top => 0, 
                            -width => 200, 
                            -height => 50, 
                            -menu => 33, 
                        ); 
                        if(!$W->Rebar) { 
                            print "Error creating Rebar: ",
Win32::GetLastError(), "\n"; 
                        } 
                        
                        $TB = new Win32::GUI::Toolbar( 
                            $W->Rebar, 
                            -name   => "Toolbar", 
                            -width  => 100, 
                            -style  => 2048 + 8 + 4, 
                            -width  => 100, 
                            -height => 22, 
                        ); 
                        
                        $B = new Win32::GUI::Bitmap("tools.bmp"); 
                        
                        $TB->SetBitmapSize(16, 16); 
                        
                        $TB->AddBitmap($B, 3); 
                        
                        $TB->AddString("One"); 
                        $TB->AddString("Two"); 
                        $TB->AddString("Three"); 
                        
                        $TB->AddButtons( 
                            3, 
                            0, 1, 4, 0, 0, 
                            1, 2, 4, 0, 1, 
                            2, 3, 4, 0, 2, 
                        ); 
                        
                        $BK = new Win32::GUI::Bitmap("zapotec.bmp"); 
                        
                        $W->Rebar->InsertBand( 
                            -child => $TB, 
                            -width => 16*4, 
                            -minwidth => 100, 
                            -minheight => $TB->Height*2, 
                            -bitmap => $BK, 
                        ); 
                        
                        $E = new Win32::GUI::Textfield( 
                        #     $W->Rebar, 
                            $W, 
                            -name       => "Textfield", 
                            -text       => "Hello world!", 
                            -width      => 100, 
                            -height     => 22, 
                            -background => [0, 255, 0], 
                            -foreground => [255, 0, 0], 
                            -menu       => 55, 
                        ); 
                        
                        $W->Rebar->InsertBand( 
                            -text => "Text:", 
                            -child => $E, 
                            -width => 100, 
                            -minwidth => 100, 
                            -minheight => $E->Height, 
                            -background => [0, 255, 0], 
                            -foreground => [255, 128, 128], 
                        ); 
                        
                        $W->AddTextfield( 
                            -name => "Info", 
                            -left => 0, 
                            -top  => $W->Rebar->Height, 
                            -width => $W->ScaleWidth, 
                            -height =>
$W->ScaleHeight-$W->Rebar->Height, 
                            -multiline => 1, 
                        ); 
                        
                        print "R.BANDCOUNT = ",
$W->Rebar->SendMessage(1024+12, 0, 0), "\n"; 
                        print "R.ROWCOUNT = ",
$W->Rebar->SendMessage(1024+13, 0, 0), "\n"; 
                        print "R.ROWHEIGHT = ",
$W->Rebar->SendMessage(1024+14, 0, 0), "\n"; 
                        
                        $W->Show(); 
                        
                        # $W->Rebar->Show(); 
                        
                        Win32::GUI::Dialog(); 
                        
                        sub Window_Terminate { 
                            return -1; 
                        } 
                        
                        sub Window_Resize { 
                            $W->Rebar->Resize($W->ScaleWidth,
$W->ScaleHeight); 
                            $W->Info->Move(0, $W->Rebar->Height); 
                            $W->Info->Resize( 
                                $W->ScaleWidth, 
                                $W->ScaleHeight-$W->Rebar->Height, 
                            ); 
                        } 
                        
                        sub Toolbar_ButtonClick { 
                            my($button) = @_; 
                            $W->Info->Text("You pressed the
button:\r\n".$button); 
                            $i =
$GetDlgCtrlID->Call($W->Rebar->{-handle}); 
                            print "Rebar.ID = $i\n"; 
                            $i =
$GetDlgCtrlID->Call($W->Textfield->{-handle}); 
                            print "Textfield.ID = $i\n"; 
                        } 
                        
                        sub Textfield_Change { 
                            $W->Info->Text("You typed:\r\n".$E->Text); 
                        } 
                        
                        sub Rebar_HeightChange { 
                            if(exists($W->{Info})) { 
                                $W->Info->Move(0, $W->Rebar->Height); 
                                $W->Info->Resize( 
                                    $W->ScaleWidth, 
                                    $W->ScaleHeight-$W->Rebar->Height, 
                                ); 
                            } 
                        } 

Reply via email to