'=============== QBEVEL ======================= ' ' This component duplicates the Delphi TBevel. ' Not an entirely revolutionary thing, but as ' with most of my components, something to save ' time and coding. Play around with the combo ' boxes to see the effects. Rather simple ' actually, only two new properties: Shape and ' Style. I think you'll find them pretty self- ' explanatory... CONST bsLowered = 0 CONST bsRaised = 1 CONST bsSpacer = 0 CONST bsBox = 1 CONST bsTopLine = 2 CONST bsBottomLine = 3 CONST bsLeftLine = 4 CONST bsRightLine = 5 CONST bsFrame = 6 TYPE QBEVEL EXTENDS QPANEL WITH QBEVEL Style AS LONG PROPERTY SET Set_Style Shape AS LONG PROPERTY SET Set_Shape Canvas AS QCANVAS EVENT Canvas.OnPaint SELECT CASE .Shape CASE 0, 1, 6 EXIT EVENT CASE 2 .Canvas.Line(0, 0, .Width, 0, IIF(.Style, &HFFFFFF, &H808080)) .Canvas.Line(0, 1, .Width, 1, IIF(.Style, &H808080, &HFFFFFF)) CASE 3 .Canvas.Line(0, 0, .Width, 0, IIF(.Style, &HFFFFFF, &H808080)) .Canvas.Line(0, 1, .Width, 1, IIF(.Style, &H808080, &HFFFFFF)) CASE 4 .Canvas.Line(0, 0, 0, .Height, IIF(.Style, &HFFFFFF, &H808080)) .Canvas.Line(1, 0, 1, .Height, IIF(.Style, &H808080, &HFFFFFF)) CASE 5 .Canvas.Line(0, 0, 0, .Height, IIF(.Style, &HFFFFFF, &H808080)) .Canvas.Line(1, 0, 1, .Height, IIF(.Style, &H808080, &HFFFFFF)) END SELECT END EVENT PROPERTY SET Set_Style(NewStyle AS LONG) .Style = NewStyle SELECT CASE .Shape CASE 1 .BevelInner = 0 .BevelOuter = .Style+1 CASE 6 .BevelInner = 2-.Style .BevelOuter = 1+.Style CASE ELSE .BevelInner = 0 .BevelOuter = 0 .Canvas.Repaint END SELECT END PROPERTY PROPERTY SET Set_Shape(NewShape AS LONG) .Shape = NewShape SELECT CASE .Shape CASE 1 .BevelInner = 0 .BevelOuter = .Style+1 CASE 6 .BevelInner = 2-.Style .BevelOuter = 1+.Style CASE ELSE .BevelInner = 0 .BevelOuter = 0 .Canvas.Align = .Shape-1 .Canvas.Repaint END SELECT END PROPERTY CONSTRUCTOR Set_Shape(0) Set_Style(0) Canvas.Parent = This Canvas.Width = 2 Canvas.Height = 2 END CONSTRUCTOR END WITH END TYPE '================================================= ' Sample program '================================================= DECLARE SUB ChangeStyle DECLARE SUB ChangeShape CREATE Form AS QFORM CREATE Menu AS QMAINMENU CREATE Item AS QMENUITEM Caption = "Menu" END CREATE END CREATE CREATE ToolBar AS QBEVEL Align = 1 Height = 50 Shape = bsTopLine Caption = "ToolBar" END CREATE CREATE Bevel AS QBEVEL Top = 80 Left = 30 Width = 130 Height = 30 END CREATE CREATE Style AS QCOMBOBOX Top = 150 Left = 10 AddItems "bsLowered", "bsRaised" ItemIndex = 0 OnChange = ChangeStyle END CREATE CREATE Shape AS QCOMBOBOX Top = 150 Left = 160 AddItems "bsSpacer", "bsBox", "bsTopLine", "bsBottomLine", "bsLeftLine", "bsRightLine", "bsFrame" ItemIndex = 0 OnChange = ChangeShape END CREATE END CREATE Form.ShowModal SUB ChangeStyle Bevel.Style = Style.ItemIndex END SUB SUB ChangeShape Bevel.Shape = Shape.ItemIndex END SUB