Type QToolBar extends QPanel

'Public 
   ButtonX as integer          'Button Clicked 
   ShowHint as short           
   Hint() as string            'Hint of buttons  
   Enabled() as short          'Button enable or nott 
   Flat as short               'Flat buttons or not 
   imglHandle as integer       'Handle  
   imglDHandle as integer      'Handel 2 

'Private 
   imgl1 as Qimagelist         'Active buttton 
   imgl2 as Qimagelist         'Disabel button 
   img as qcanvas              'on paint Buttons  
   Butbmp as QBitmap           'our False button 
   CButton as qCoolBtn         ' one real button 
   Buttons as integer          'Number of buttons 
   X as Integer                'Height of bmp 
   Y as Integer                'Width of bmp 

   Sub load
      With QtoolBar
         .imgl1.handle = .imglHandle     'QIamgeList 1  Enabled button 
         .imgl2.handle = .imglDHandle    'QImageList 2  Disabled Button 
         .Buttons = .imgl1.Count         'How many buttons? 
         .X = .imgl1.Width+6.: .Y = .imgl1.Width+6     'Dimensions 
         if .Align =1 or .Align =2 or .Align =0 then   '& position 
             if .Height < .X + 12 then .Height = .X + 12
             if .Width < .Y*.Buttons then .Width = .Y*.Buttons + 12
         else
             if .Height < .X*.Buttons then .Height = .X*.Buttons + 12
             if .Width  < .Y + 12 then .Width = .Y +12
         end if
         
         'Drawing one false button 
         .ButBmp.Height = .X: .ButBmp.Width = .Y
         if .Flat Then                          'is a flat toolbar 
            .ButBmp.FillRect (0, 0, .X, .Y, &HC0C0C0)
         Else                                   'isn`t flat tool bar   
            .ButBmp.FillRect (0, 0, .X, .Y, &HC0C0C0)
            .ButBmp.Line (0, 0, .X-2, 0, &HFFFFFF)
            .ButBmp.Line (0, 0, 0, .Y-2, &HFFFFFF)
            .ButBmp.Line (1, 1, .X-3, 1, &HDFDFDF)
            .ButBmp.Line (1, 1, 1, .Y-3, &HDFDFDF)
            .ButBmp.Line (0, .Y-1, .X-1, .Y-1, &H000000)
            .ButBmp.Line (.X-1, .Y-1, .X-1, 0, &H000000)
            .ButBmp.Line (1, .Y-2, .X-2, .Y-2, &H808080)
            .ButBmp.Line (.X-2, .Y-2, .X-2, 1, &H808080)
         end if
         
         'a lot of propieties 
         .img.parent = Qtoolbar
         .img.Top = 6: .img.Left = 6
         if .Align =1 or .Align =2 or .Align =0 then
            .img.Height = .X: .img.Width = .Buttons*.X
         else
            .img.Width = .Y: .img.Height = .Buttons*.Y
         end if
         .Cbutton.Parent = QtoolBar
         .Cbutton.Height = .X:.Cbutton.Width = .Y
         if .Align =1 or .Align =2 or .Align =0 then
            .Cbutton.top = 6 : .CButton.Left = -100
         else
            .Cbutton.Left = 6 : .CButton.Top = -100
         end if
         .Cbutton.Flat = .Flat
         .Cbutton.ShowHint = .ShowHint 
      End With
   End Sub

   Sub Paint 'Draw Buttons  
      Dim a as integer 
      With QtoolBar
         .CButton.Down = 0
         For a = 0 to .Buttons -1
            if a <> .ButtonX then
               If .Enabled(a) then
                  .ButBmp.Draw (3,3,Qtoolbar.imgl1.GetBMP(a))
               else
                  .ButBmp.Draw (3,3,Qtoolbar.imgl2.GetBMP(a))
               end if
               if .Align =1 or .Align =2 or .Align =0 then
                  .img.Draw (a*.X, 0, .ButBmp.Bmp)
               else
                  .img.Draw (0,a*.Y, .ButBmp.Bmp)
               End if
            end if
         Next
      End With
   end sub

   Sub showButton 'Show the correct button 
      With QToolBar
         if .Align =1 or .Align =2 or .Align =0 then
            .ButtonX = mouseX \ .X
         else
            .ButtonX = mouseY \ .Y
         end if
         IF .Enabled(.ButtonX) then
            .CButton.BMP = Qtoolbar.imgl1.GetBMP(.ButtonX)
         else
            Exit sub
         end if
         if .Align =1 or .Align =2 or .Align =0 then
            .CButton.Left = .ButtonX*.X + 6
         else
            .CButton.Top = .ButtonX*.Y + 6
         end if
         .CButton.hint = .hint(.ButtonX)
         .CButton.Visible = 1
       end With
   end Sub

   Sub Reset 'Reset toolbar  
      QToolbar.ButtonX = -1
      QToolbar.CButton.Visible = 0
      QToolbar.Paint
   end Sub

   Event img.onpaint
      QtoolBar.Paint
   end Event

   Event img.OnMouseMove
      QtoolBar.ShowButton
   end Event

   Event OnMouseMove
      QToolbar.Reset
   end Event

   Constructor
      Width = 0
      Height = 0
      Buttons = 0
      ButtonX = -1
      Flat = 1
      Enabled() = 1
      Hint() = ""
      ShowHint = 1
   end constructor
end type
 
Hosted by uCoz