Our Blog, FileMaker only, Xojo only, Archive (older)     Follow us on Twitter, Xing, LinkedIn or Facebook.

Transparent WebViewer

You know a web viewer showing white background?

If you use WebView.SetDrawsBackground function with next MBS FileMaker Plugin, you can disable it and turn the web viewer into transparent mode:

So far transparency works on macOS and iOS and may help you to design improved JavaScript-based controls.
Coming soon with next pre-release.

Styled Text for Labels in your Xojo iOS app

If you like to get styled text on your labels in iOS, you can use our NSAttributedStringMBS class in our MBS Xojo MacCocoa Plugin like below.

As you see we create a NSMutableAttributedStringMBS object for some string and add attributes with zero based ranges there. We then use a declare to setAttributedText to assign the attributed string. Currently our classes for Cocoa controls are not ported to iOS in the plugin, but a quick declare helps us here.

EventHandler Sub Open() // create some text from a string. Could also read in RTF Dim a As NSAttributedStringMBS = NSAttributedStringMBS.attributedStringWithString("Hello World") // make a mutable copy Dim m As NSMutableAttributedStringMBS = a.mutableCopy // now add bold font Dim r1 As New NSRangeMBS(0,5) m.addAttribute(m.NSFontAttributeName, NSFontMBS.boldSystemFontOfSize(13), r1) // and underline Dim r2 As New NSRangeMBS(6,5) m.addAttribute(m.NSUnderlineStyleAttributeName, m.NSUnderlineStyleSingle, r2) // assign new styled text Declare Sub setAttributedText Lib "UIKit" Selector "setAttributedText:" (NSTextViewRef As ptr, AttributedStringHandle As Integer ) setAttributedText Label1.Handle, m.Handle End EventHandler

Not all styled are available on iOS. You can for example use NSForegroundColorAttributeName with NSColorMBS (actually UIColor on iOS internally) to color the text. Since superscript and subscript are not available, you can emulate it with using NSBaselineOffsetAttributeName to change the base line and then use a smaller font for the words.

FileMaker Konferenz 2022 in Hamburg

Vom 22. bis 24. Juni 2022 findet die elfte deutschsprachige FileMaker Konferenz in Hamburg, Deutschland statt. Das JUFA Hotel Hamburg HafenCity liegt direkt neben dem Ausgang der U-Bahn Station HafenCity Universität, nur drei Stationen vom Hauptbahnhof via U4, so dass sich die Anreise per Bahn empfiehlt. FileMaker Anwender und Entwickler können ihre Teilnahme bald buchen.

Möchten Sie Sponsor oder Sprecher werden?
Aktuell sucht der FMK Verein Vorschläge für interessante Vorträge.

Die Veranstalter vom Verein FM Konferenz erwarten auch 2022 rund 180 Entwickler, Anwender, IT-Fachleute und Entscheidungsträger aus Wirtschaft, Bildung und Verwaltung. Rund um über 25 Fachvorträge und Workshops wird es viel Zeit zum Vernetzen in den gemeinsamen Pausen und beim Abendprogramm geben.

Gibt es Interesse an einem MBS Plugin Workshop am Tag vor der Konferenz?

MBS FileMaker Plugin, version 11.5pr2

New in this prerelease of version 11.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

MBS Xojo Plugins, version 21.5pr2

New in this prerelease of the 21.5 plugins:
  • Fixed code to return FolderItem in various functions on iOS.
  • Updated DynaPDF to version
  • Changed MLFeatureValueMBS.featureValueWithPicture to convert picture to bitmap if needed.
  • Enabled ConsoleExecuteMBS method for desktop projects.
  • Fixed issue with CloudKit classes, where CKShareMBS was returned CKRecordMBS.
  • Added CacheInsertStatement flag for SQLDatabaseMBS to cache insert statements for InsertRecord to speed those up.
  • Added StartIndex parameter to FindValueInArray and FindValueInObjectArray methods in JSONMBS class, so you can repeat search until nothing more is found.
  • Added new constructor for DirectShowEnumMonikerMBS to find all filters available.
  • Added new events for NSSharingServiceDelegateMBS class for cloud sharing.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/ or from Dropbox.
Or ask us to be added to our shared Dropbox folder.

DynaPDF with gradients in DeviceN colorspace

We got a new example for our MBS Xojo DynaPDF Plugin for using DynaPDFMBS class to create a gradient with DeviceN color space. We use DynaPDFExtGStateMBS to set the extended graphics state and enable overprint mode. Then we create the DevcieN colorspace based on a CMYK fallback. And within that colorspace we define an axial shading to get a gradient to fill an area in the PDF page. Here is the new sample code:

// Draw something in background so that we can see whether it works Call pdf.SetColorSpace(pdf.kcsDeviceCMYK) Call pdf.SetFillColor(PDF.CMYK(0, 0, 255, 0)) Call pdf.Rectangle(0.0, 0.0, 595.0, 842.0, pdf.kfmFill) Dim gs As New DynaPDFExtGStateMBS gs.OverPrintMode = 1 gs.OverPrintFill = 1 Dim gsHandle As Integer = pdf.CreateExtGState(gs) Call pdf.SetExtGState(gsHandle) // In this example, we emulate a CMYK color space with a DeviceN color space. // The required Postscript calculator function is super simple, it consists of only two braces"{}". Dim cls() As String = Array("Cyan", "Magenta", "Yellow", "Black") Dim cs As Integer = pdf.CreateDeviceNColorSpace(cls, "{}", pdf.kesDeviceCMYK, -1) Call pdf.SetExtFillColorSpace(cs) Dim sh As Integer = pdf.CreateAxialShading( 50.0, 50.0, 550.0, 50.0, 0.5, PDF.CMYK(60, 0, 0, 0), PDF.CMYK(255, 0, 0, 0), False, False) Call pdf.ApplyShading(sh)

This needs a DynaPDF Pro license from us for the plugin. Feel free to try the example project included with future MBS Plugin releases and send us questions.

Use text fields for numbers

Due to current events in an office nearby, here again an announcement announcement for all database developers:
Please treat the following numbers as text for processing and storing in a database.

Zip codes
While we call them zip numbers in Germany and they are just five digits here, a zip code may contain various other characters like letters, spaces and dashes. e.g. "SW1A 1AA" is a valid zip code in the United Kingdom. The length of post codes may be over 10 characters in some places and contain leading zeros. In Argentina even a plus may be used like "46C2+32".

Invoice Numbers
The number on an invoice, an offer or an order often has a scheme defined by the used software. Some companies use dashes to separate sections of the number like year-branch-number to give each shop branch their own running count for invoices. We have seen invoices numbers with prefix or postfix to indicate branches or types of invoices. (more)

The order of events in Xojo

When to initialize what is always a good question. Doing a custom constructor for Application, a Window or Control allows you to initialize some things before Xojo does some setup steps. For example if you like to have custom delegates for Cocoa frameworks, like our NSApplicationDelegateMBS class. The MBS Plugin registration can also either go into the constructor or App.Open event.

The constructor of a control allows you to do initialization steps before the control is added to the window. The open event of the control then allows you to do things after the control is initialized. And the open event of the window allows you to setup something after all controls are setup, e.g. connect a window splitter to the left and right controls. (more)

Calculate Text Sizes

Sometimes you may want to know how much text fits a certain space or reduce text to fit. The common problem is that you have a long text like "Johannes Zimmermann" and the field is too small to fit the whole text. Then FileMaker may only show "Johannes" and the whole surname wraps to second line.

Our plugin can help and offers a few functions related to fonts. For example Font.CalculateTextWidth can calculate the length of a text in points, so you know whether text will fit.

MBS( "Font.CalculateTextWidth"; "Hello World"; "Arial"; 12 )

Your calculation may for example detect that the whole name doesn't fit. But maybe "Mr. Zimmermann" fits and then you may use that one.

Now if you like to know whether text will fit in height, you can use Font.CalculateTextHeight functions.

MBS( "Font.CalculateTextHeight"; "Hello World. Just a test."; 100; "Arial"; 12 )

This would use 100 points as wrap limit, so we get a second row of text. The height returned here should be something like 36 points. The actual numbers are not identical for macOS and Windows since both OS have their own way of anti aliasing and get different sizes for various letters, even for the same font.

The third function Font.CalculateTextFits will take a text and return the number of characters, that fit in a given space.

MBS( "Font.CalculateTextFits"; "Hello World"; 50; "Arial"; 12)

This may return 8 here as 50 points don't fit the full text "Hello World", but only "Hello Wo". Your script may then decide to cut two more characters and put in three dots.

A specialty is that the font parameter can be a font name specifying the exact font if needed on macOS. Since Arial bold has a separate font file called Arial-BoldMT, you can specify that to pick the bold font.

MBS Xojo Plugins, version 21.5pr1

New in this prerelease of the 21.5 plugins:
  • Added AddSort method to XLAutoFilterMBS class.
  • Added DynaPDFVersionInfoMBS class.
  • Added ErrCode and ErrType properties to DynaPDFErrorMBS class.
  • Added GetPDFVersionEx function for DynaPDFMBS class.
  • Added IsAutoFilter function to XLSheetMBS class.
  • Added ScreenResolution property to DynaPDFRasterizerMBS class.
  • Added XLSFormControlMBS class and related methods.
  • Changed a few old deprecated controls to hide in the control library.
  • Changed DynaPDF examples to use kcpUnicode instead of kcp1252.
  • Changed PermissionsMBS class to be marked as console safe.
  • Changed SQLPreparedStatementMBS class to raise TypeMismatchException if you pass array of variant for param array, e.g. array in array.
  • Deprecated LoadString in ChromiumFrameMBS class since CEF deprecated the method.
  • Fixed memory leak for ZintVectorStringMBS and ZintVectorStringMBS classes.
  • Fixed memory leak in BarcodeGeneratorMBS class.
  • Fixed NSSearchFieldControlMBS class to fire KeyDown/KeyUp events for return/enter keys, too.
  • Fixed passing of numbers for SetStrokeColorEx() taking param array.
  • Fixed socket methods for PacketSocketMBS class.
  • Updated Chromium classes to newer CEF version.
  • Updated CURL library to version 7.79.1.
  • Updated DynaPDF to version
  • Updated LibXL to version 4.0.
  • Updated SQLAPI to version 5.1.6.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/ or from Dropbox.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 11.5pr1

New in this prerelease of version 11.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

Updates for Updater, WebStarter and Bugreporter Kits

Today we update our Xojo developer Kits for Updater, Bugreporter and Web Starter. They all got a few bug fixes and changes over time and can be used in Xojo 2021. This includes a Web 2 variant for Web Starter Kit.
  • Bug Reporter Kit 1.5
    • Fixed some localization bugs.
    • Fixed compilation bugs for Xojo 2019r3
    • Changed email script to mark email as UTF-8.
    • Add list of current visible windows with focused control to the report.
    • Updated to Xojo 2021
  • Web Starter Kit 1.6
    • Fixed over 300 changes for Xojo Web 2.0 API
    • Added ErrorName and ErrorStack for JavaScriptErrors table and removed UserDetails
    • Updated for Xojo 2021
  • Updater Kit 2.3
    • Changed HTTPSocket to URLConnection class for newer API.
    • Updated Sparkle framework
    • Moved projects to 64-bit
    • Uses Info.plist added to project
    • Uses Build Step for MacOS to copy Sparkle.framework and key file.
    • Changed some URLs to https:// for app transport security.
    • Replaced updated app on server to be signed.
    • Using SSLConnectionTypes.TLSv12 now for socket.
    • Fixed kCheckSumNodeName to not include 32 as bit number is added later.
    • Updated to Xojo 2021.
If you use one of this components, you may want to download and compare. We recommend an app like Arbed to compare between two projects. When you purchase those Kits, you receive a download link with a year of updates included. If you let your maintenance expire, you may just grab a new license to get a new download login.

Six months till XDC 2022 in London

Just six months till the XDC 2021 in London, England. Tickets are still available for $750 USD till 1st October 2021 instead of $950 later.

It will be held March 30-April 1st, 2022 in London, England at the Holiday Inn Bloomsbury. This conferences is the best place to meet Xojo developers from around the world in real live, make contacts, present yourself as expert and learn what is new in Xojo. Tickets are available in the Xojo store and if you bring your partner, you can order an extra guest ticket for the dinner events.

Check out the conference highlights video if you want to see what it's like - or ask one of the many attendees from the forum!

Wether you are full or part time Xojo developer, this is your chance to learn all about the Web 2.0 framework, the Android progress and what's new in the Xojo world.

To get there, please use public transportation. The piccadilly line brings you right from Heathrow Airport to Russell Square Station, just next to the hotel. That trip should cost about 3 £ and you may just pay by tap in/out with your NFC enabled credit card or phone. Otherwise buy an Oyster card and load money on it if you don't have such a card. If you come by Eurostar train through the tunnel from France, you can exit Pancras station and just walk to the hotel. Otherwise take one station via subway to Russell Square Station. That station is right behind the hotel block.

See you soon there!

News from the MBS Xojo Plugins Version 21.4

In this article I want to introduce you the new functionalities from the MBS Xojo Plugins in version 21.4.



Let's starts with the news from DynaPDF. With the methods CreateTraceFile and AppendTraceFile you can create and append a file that log debugging information. The plugin writes debug messages to this file so you can check which methods you called. The AppendTraceFile method is practical because with this method it is possible to append debug information and not need to override it. 


Another new method from the DynaPDFMBS class is the GetInIsTaggedPDF method. It returns true if the currently opened PDF is a tagged PDF. 

Memory Block 

We have the new method ReadFileMBS for FolderItems to allow you the transfer of a file into a memory block. In the parameters we specify the memory block element in which the result should be stored. As return of the method we get a true if the file was read as a memory block.


In this context, the new method FindByteMBS for memory blocks is also interesting . With this method we can search for given characters in a memory block. In the parameters we specify an array with the characters to be searched in UInt8. Additionally we can specify from which position in the memory block to search. The default is 0 (At the beginning). The method returns the first position in the memory block where there was a hit. In the following example the positions of the first two hits are determined. 


Dim m As MemoryBlock = "Hello World"


Dim u() As UInt8

u.Append Asc("e")

u.Append Asc("o")


Dim pos1 As Integer = m.FindByteMBS(u)

Dim pos2 As Integer = m.FindByteMBS(u, pos1+1)


MsgBox "Found position: "+Str(pos1)+" and „+Str(pos2)


New in MBS FileMaker Plugin 11.4

In this article I want to introduce you the new functions from the MBS FileMaker Plugin in version 11.4.


Let's start with the new features in the Dictionary component. Here you can now filter the keys by their beginning or their end. With the function "Dictionary.KeysWithPrefix" you can now get a list of all keys that have a specific beginning. You may have entries like "person.123.firstname" and "person.123.lastname" and by using Dictionary.KeysWithPrefix you can look for "person.123." to find all keys starting with this prefix. The opposite is the case with the function "Dictionary.KeysWithPostfix". In this case the keys are filtered by their end. So, in the previous example, we could filter by .firstname and get "person.123.firstname". The postfix and prefix keys functions allows you to organize things in the dictionaries with e.g. dot notation.


With the new function SQL.FieldExists you can check if a given field exists that we want to query. To do this, we specify the command reference number and the name of the field in the parameters. If the field exists, we get 1 as return value.


Video about DynaPDF and Xojo

Stefanie shows how to use our MBS Xojo DynaPDF Plugin in Xojo.

ThumbnailXojo and DynaPDF


28:04 minutes

Watch on Youtube

Please do not hesitate to contact us if you have questions.

Teamviewer installation for remote support

We like to explain everyone how to setup TeamViewer on macOS for remote support.

Go to teamviewer.com and download the Teamviewer app, e.g. teamviewer.dmg. As far as I see you can directly click download on the cookie dialog and then close the website, but the webdesign may change. No need to allow cookies!

Once downloaded, you open the disk image.

Please make sure the domain shown in the GateKeeper dialog is only www.teamviewer.com and nothing different.


The magic of our XML.Import function

A client got a bit xml file from Swiss government with a list of all registered/permitted medications. A huge XML file with thousands of entries. In order to import those easily, we use our XML.Import function in MBS FileMaker Plugin.

We copied the XML Import example database included with our plugin to desktop. We copied the xml file to desktop and renamed it test.xml. Then we open the database and run the script. Since we didn't change it, it will simply look for a file named test.xml and import it. Since the XML file is 50 MB, this takes a while, but the XML.Import function creates 18 new tables with a lot of fields:

The example has "Import2" as prefix for reasons, but you can change that. We got over 130000 records created within a minute.

The client asked how to get the ID from preparations into the other tables like the Pack table. But then we surprised our client with the magic of FileMaker's relationships. We connect the right parent entries to the UUID field of the parent table. Once all tables are moved in place and all connections are made, the graph looks like this:

As you see limitations table got duplicated, so we can connect it both to preparations and packs.

Once this is setup, we create layouts. A layout for a pack can now show fields from preparation to show which preparation it belongs to.
Also via all that relationships, the table for a preparation can show the first pack, substance and price on the same layout.

Let us know if you have questions and enjoy the magic of those functions.

Last day for OmegaBundle

The end is coming for OmegaBundle 2021. Don't miss the chance to get this wonderful pack of add-ons for Xojo:

Once the day is done for the last time zones (greetings to our Hawaiian Xojo developers), we can tear down the ads and close the store.
Please make sure all pending orders are paid full until Monday.

MBS @ FMTraining.TV

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.

A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.

We talk a bit about what's new in MBS FileMaker Plugin in version 11.4 and answer user questions.

Do you like this video?

Please let Richard know and send him your wishes or ideas for future live broadcast as well as topics for training videos. And check out the FileMaker Training bundles as well as their new book for FileMaker, updated for 2021.

Older blog entries:

2021-09-07 MBS FileMaker Plugin 11.4 - More than 6500 Functions In One Plugin
2021-09-07 MonkeyBread Software Releases the MBS Xojo Plugins in version 21.4
2021-09-07 Neues MBS FileMaker Plugin 11.4
2021-09-05 Optimizing a Xojo function
2021-09-04 Omegabundle for Xojo 2021 Developer Tools
2021-09-03 MBS Xojo Plugins, version 21.4pr5
2021-09-03 MBS FileMaker Plugin, version 11.4pr5
2021-09-01 xDev Magazine 19.5
2021-09-01 14 years of MBS Xojo DynaPDF Plugin
2021-08-31 Xojo Roadmap updated
2021-08-30 MBS Xojo Plugins, version 21.4pr4
2021-08-30 MBS FileMaker Plugin, version 11.4pr4
2021-08-30 Thread Pool for Windows
2021-08-30 WebView2 support coming for MBS Plugin
2021-08-25 MBS Xojo Plugins, version 21.4pr3
2021-08-25 MBS FileMaker Plugin, version 11.4pr3
2021-08-25 Bug Bounty Program
2021-08-24 FileMaker Meeting in Canada
2021-08-24 Xojo Meeting in Canada
2021-08-22 Kentuckiana FileMaker Developers Group


Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008
XML: RSS Feed XML: Atom Feed