Platforms to show: All Mac Windows Linux Cross-Platform
/Overlay/Controls/Button/Button without plugin
Required plugins for this example:
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Overlay/Controls/Button/Button without plugin
This example is the version from Thu, 16th Jan 2013.
Project "Button without plugin.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control ButtonMBS1 Inherits MyButton
ControlInstance ButtonMBS1 Inherits MyButton
EventHandler Sub Action(x as integer, y as integer)
dim d as new date
Title="Last click: "+d.LongTime
End EventHandler
End Control
Control ButtonMBS2 Inherits MyButton
ControlInstance ButtonMBS2 Inherits MyButton
EventHandler Sub Action(x as integer, y as integer)
dim d as new date
Title="Last click: "+d.LongTime
End EventHandler
End Control
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
ExternalFile MouseOver
End ExternalFile
ExternalFile Normal
End ExternalFile
ExternalFile Disabled
End ExternalFile
ExternalFile Pressed
End ExternalFile
ExternalFile Mask
End ExternalFile
ExternalFile xDisable
End ExternalFile
ExternalFile xNormal
End ExternalFile
ExternalFile xOver
End ExternalFile
ExternalFile xDown
End ExternalFile
Class MyButton Inherits Canvas
ComputedProperty Sticky As Boolean
Sub Set()
mSticky = value
update
End Set
Sub Get()
return mSticky
End Get
End ComputedProperty
ComputedProperty Toggle As Boolean
Sub Set()
mToggle = value
update
End Set
Sub Get()
return mToggle
End Get
End ComputedProperty
ComputedProperty Value As Boolean
Sub Set()
mValue = value
update
End Set
Sub Get()
return mValue
End Get
End ComputedProperty
Event Action(x as integer, y as integer)
End Event
Event MouseDown(x as integer, y as integer)
End Event
Event MouseDrag(x as integer, y as integer)
End Event
Event MouseEnter()
End Event
Event MouseExit()
End Event
Event MouseUp(x as integer, y as integer)
End Event
EventHandler Sub Activate()
active = true
update
End EventHandler
EventHandler Sub Deactivate()
active = false
update
End EventHandler
EventHandler Function MouseDown(X As Integer, Y As Integer) As Boolean
pressed = true
update
RaiseEvent MouseDown(x,y)
Return true
End EventHandler
EventHandler Sub MouseDrag(X As Integer, Y As Integer)
RaiseEvent MouseDrag(x,y)
End EventHandler
EventHandler Sub MouseEnter()
RaiseEvent MouseEnter
MouseOver = true
update
End EventHandler
EventHandler Sub MouseExit()
RaiseEvent MouseExit
MouseOver = false
update
End EventHandler
EventHandler Sub MouseUp(X As Integer, Y As Integer)
pressed = false
update
RaiseEvent MouseUp(x,y)
RaiseEvent Action(x,y)
End EventHandler
EventHandler Sub Open()
active = true
End EventHandler
Sub update()
if active and enabled then
if pressed then
if mouseover and ImagePressedMouseOver <>nil then
backdrop = ImagePressedMouseOver
else
backdrop = ImagePressed
end if
else // not pressed
if MouseOver and ImageMouseOver<>nil then
backdrop = ImageMouseOver
else
backdrop = ImageNormal
end if
end if
else // disabled
if pressed and ImagePressedDisabled<>nil then
backdrop = ImagePressedDisabled
else // not pressed
backdrop = ImageDisabled
end if
end if
End Sub
Note "Note"
We provide this example with Canvas for people as a base to modify it.
You can modify this much easier than our plugin based ButtonMBS class.
Greetings
Christian Schmitz
Property ImageDisabled As Picture
Property ImageMouseOver As Picture
Property ImageNormal As Picture
Property ImagePressed As Picture
Property ImagePressedDisabled As Picture
Property ImagePressedMouseOver As Picture
Property Private MouseOver As Boolean
Property Private Pressed As Boolean
Property Private active As Boolean
Property Private mSticky As Boolean
Property Private mToggle As Boolean
Property Private mValue As Boolean
End Class
End Project
See also:
The items on this page are in the following plugins: MBS Overlay Plugin.