Xojo Conferences
MBSSep2018MunichDE
XDCMay2019MiamiUSA

Platforms to show: All Mac Windows Linux Cross-Platform

/MacFrameworks/Blocks/Blocks test with delegate
Function:
Required plugins for this example: MBS MacBase Plugin, MBS Main Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacFrameworks/Blocks/Blocks test with delegate
This example is the version from Tue, 11th Jul 2016.
Project "Blocks test with delegate.rbp"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control List Inherits Listbox
ControlInstance List Inherits Listbox
EventHandler Sub ExpandRow(row As Integer) dim d as Dictionary = me.CellTag(row,0) if d<>Nil then for each key as Variant in d.keys dim value as Variant = d.Value(key) me.AddRow key.StringValue +" -> "+value.StringValue next end if End EventHandler
End Control
Control StaticText1 Inherits Label
ControlInstance StaticText1 Inherits Label
End Control
EventHandler Sub Open() // register receiver DefaultObserver=new MyNSNotificationObserverMBS // observer via Plugin dim nc as NSNotificationCenterMBS = NSNotificationCenterMBS.defaultCenter nc.addObserver(DefaultObserver) #if RBVersion < 2013 then MsgBox "GetBlockDelegate is only for Xojo, not for Real Studio." quit #else // same with declares soft declare sub addObserver lib "Cocoa" selector "addObserverForName:object:queue:usingBlock:" _ (selfHandle as integer, nameHandle as integer, objectHandle as integer, _ queue as integer, block as integer) m = new BlockMBS d = AddressOf Module1.Notifier addObserver(nc.Handle, 0, 0, 0, m.GetBlockDelegate(d)) #endif End EventHandler
Property DefaultObserver As MyNSNotificationObserverMBS
Property d As MyDelegate
Property m As BlockMBS
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
Class MyNSNotificationObserverMBS Inherits NSNotificationObserverMBS
EventHandler Sub GotNotification(notification as NSNotificationMBS) dim l as listbox = window1.List dim d as Dictionary = Notification.userInfo dim n as string = "Plugin: "+Notification.name if d<>Nil then l.InsertFolder 0, n l.CellTag(l.LastIndex,0)=d else l.InsertRow 0, n end if End EventHandler
End Class
Module Module1
Delegate Sub MyDelegate(BlockPointer as integer, NotificationHandle as integer)
Sub Notifier(BlockPointer as integer, NotificationHandle as integer) dim Notification as new NSNotificationMBS(NotificationHandle) dim l as listbox = window1.List dim d as Dictionary = Notification.userInfo dim n as string = "Declare: "+Notification.name if d<>Nil then l.InsertFolder 0, n l.CellTag(l.LastIndex,0)=d else l.InsertRow 0, n end if End Sub
End Module
End Project

See also:

Feedback, Comments & Corrections

The items on this page are in the following plugins: MBS MacFrameworks Plugin.





Links
MBS Xojo PDF Plugins