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

XDC 2020 MBS Plugins Presentation

Christian Schmitz presents what is new in MBS Xojo Plugins since the last conference and what is coming soon.

Enjoy and if you have questions, please don't hesitate to contact us.

XDC 2020 SceneKit Presentation

Stefanie Juchmes presents SceneKit and what coming soon for next plugin version: Enjoy and if you have questions, please don't hesitate to contact us.

New Examples 2020

ThumbnailNew Examples 2020


19:05 minutes

We made a new video to show you a few newer examples for MBS FileMaker Plugin this spring. Later download the plugin to try the examples yourself.

Watch on our website or on Youtube.


0:15Signature Field
2:40Barcode functions on MacOS
8:10WebView.Evaluate on MacOS
11:20Font in Script Workspace
13:50WebView.Evaluate on Windows
14:40Barcode functions on Windows
17:35Windows Media Player (WMPF functions)

Looping over records in FileMaker with error checking

Recently I got a client complaining about a crash in FileMaker Server with a script using plugin functions. A look on the trace output from our plugin via MBS("Trace"; $path) function call to write a log file showed the problem. The loops where running endless. And an endless loop eventually causes trouble when some resource is limited, e.g. available memory.

Looking on the script we basically found this a couple of times:

Go to Layout [ “MyTable” (MyTABLE) ; Animation: None ]

Perform Find [ Restore ] 

Go to Record/Request/Page [ First ]


# process record

# next

Go to Record/Request/Page [ Next ; Exit after last: On ]

End Loop


For privacy reasons, I removed the code to process the record and renamed the layout and file here. But otherwise the script contains a few of those loops and not all loops work well. Does the script look fine? Look and decide before you continue to read.


MapKit functions in MBS Plugins

Stefanie made a poster for our MapView functions in MBS FileMaker Plugin:

Learn more:
Available for Xojo via MBS Xojo MacFrameworks Plugin: MapKit classes.

20 year party moved to 2021

After long discussions we decide to move our 20 year party to the year 2021. Same location, same setup, but simply a year later.

In April 2020 our company will turn 20 years old and we celebrate a bit at home.
We'll plan to have a big party next year in Germany near our office with over 100 guests.

All people invited for this year will be asked to contact us in early 2021 whether they join the party in April 2021. We'll send new invitations next year to remind everyone.

The new date has the advantage that it's close to XDC 2021, so customers from America may extend their stay in Europe and join our party.

Please stay healthy and enjoy some time home with family.

News from the MBS Xojo Plugins Version 20.1

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

Data from Images
The classes JPEGImporterMBS, GMImageMBS and GM16ImageMBS got the new property ExifThumbnail. This property extracts an embedded thumbnail in EXIF data and return it as a string. With this string we can use the method getData method of the Picture class or our JPEG functions to decompress and display the thumbnail.

The class JPEGImporterMBS got the ExifOrientation property that queries the orientation from the Exif data. We receive the orientation as an integer and you can use this number to determine and adjust the alignment if necessary.

The classes GMImageMBS and GM16ImageMBS include the new shared method FontMap. We can use this method to find out which fonts are currently available. The method can also help us to debug and find out the reason why a font is not loaded. The function returns a string with a XML structure. (more)

New in the MBS FileMaker Plugin 10.1

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

In the last plugin version we introduce the new JavaScript component. With those functions it is possible to use JavaScript without the help of a web viewer. In this version we have added some features, that simplify the work with JavaScript functions.

Times and dates in JavaScript are passed as floating pointer numbers. The function “JS.Now” returns us the number of milliseconds since the 1st January 1970. So we can determine the current time in combination with the “JS.TimeToDateComponents” function. This function returns us a JSON object with the individual specifications like year, month, day, hours, minutes, seconds, milliseconds, weekday, timezone and weekday

Here you see an example script:
Set Variable [ $JS ; Value: MBS( "JS.New" ) ]
Set Variable [ $time ; Value: MBS("JS.Now";$JS) ]
Set Variable [ $Res ; Value: MBS( "JS.TimeToDateComponents"; $JS;$time) ]
Set Variable [ $r ; Value: MBS( "JS.Free";$JS ) ]

If you combine this function with the “JS.UTCDateToTime” function you can get such a JSON of a FileMaker timestamp. “JS.UTCDateToTime” convert a FileMaker timestamp to the time format that the function “JS.Now” uses. Additionally there is a function that converts the millisecond output back to a FileMaker readable timestamp. This function is called JS.TimeToUTCDate.

We have also added counting functions that count the number of objects and global strings. In an empty JavaScript environment there are already about 1000 strings and about 400 objects. So if you want to find out how many objects and strings are added, you have to subtract the basic amounts. (more)

Background Color for TextArea control

For next plugin version we add four new properties to TextArea class: So you can control the background color of text for MacOS and Windows.

Coming soon for next plugin pre-release.

Tip of the day: Do Copy and Paste yourself in Xojo desktop app on Windows

On Windows in a Xojo project if you have no menu bar on a window, the usual shortcuts like Control-C won't work. But if you like to get copy & paste to work, you may just handle the Control key plus various shortcuts yourself. So here some code you can copy & paste to your project if you have a window where textfields don't do the shortcuts. Best may be to put it in a TextField subclass to have it working in multiple fields without duplicating the code a lot of times:

EventHandler Function KeyDown(Key As String) As Boolean #If TargetWindows Dim a As Integer = Asc(key) If Keyboard.ControlKey Then Select Case a Case 1 // Control-A Me.SelStart = 0 Me.SelLength = Len(Me.Text) Return True Case 3 // Control-C Dim cl As New Clipboard cl.SetText Me.SelText Return True Case 22 // Control-V Dim cl As New Clipboard Me.SelText = cl.Text Return True Case 24 // Control-X Dim cl As New Clipboard cl.SetText Me.SelText Me.SelText = "" Return True Else Return False // ignore? End Select End If #EndIf End EventHandler
If you have questions, please don't hesitate to contact us.

Congratulations to the 2020 Xojo Design Award Winners!

Looks like we were supposed to receive an Xojo Design Award at the cancelled Xojo.Connect conference:

Congratulations to the 2020 Xojo Design Award Winners!

Best Consumer App - HDRtist NX, Ohanaware
Best iOS App - PropertyMe Manager, PropertyMe
Best Lifestyle App - Crossword Wizard, Rush Software
Best Vertical Market App - qwireCast, qWire
Best Developer Tool - RegExRX, MacTechnologies Consulting
Best Vertical Market App - bMD Medical Software
Best Plugin - MBS Plugins, MonkeyBread Software

*Yes, there are 2 Best Vertical Market Apps, they were both so good we had no choice but to award them both!

View the winners here!

Thanks Xojo, Inc. and see you all next year in London for Xojo.Connect from 21st to 23rd April 2021.

Tip of the day: Step for Textfield in Xojo

Today a client asked if we could change the step count for number fields in a Xojo web app. As the HTML Input element offers a step feature, we could easily implement the step and also offer a min and max values, too. For example you can put this lines in an Open or Shown event of the WebTextField object on your webpage:

Me.ExecuteJavascript("document.getElementById('" + Me.ControlID + "_inner').step=10;") Me.ExecuteJavascript("document.getElementById('" + Me.ControlID + "_inner').min=0;") Me.ExecuteJavascript("document.getElementById('" + Me.ControlID + "_inner').max=100;")
Optionally we could make this one call to ExecuteJavascript, but for the client here, we subclass WebTextField, add properties for the inspector in the IDE to set them and then run those lines in the Shown event to pass to the browser if they are set.

Trip to New York and Nashville cancelled

Due to the decision of the US government to ban us from coming to the USA (see press release), we cancel our trips to the USA.
  • For the FileMaker meeting on Thursday we'll try to join via WebEx.
  • The Xojo meeting in New York in the steak house could take place, but just without us.
  • For the Xojo.Connect conference we expect to find some solution. We'll probably provide our session as video on our website. Maybe we can hold it via video conferencing from today. This also offers the chance for Xojo Inc. to allow virtual attendance to the conference by streaming the sessions.
  • The Claris Engage conference is in August and we hope the flu season is over by then. But we will not book/pay a booth and tickets until we know the ban is liften and doesn't get extended till summer.

PS: The Xojo.Connect conference is cancelled. Also the PauseOnError in St. Louis for FileMaker developers is cancelled.

FileMaker Stammtisch Braunschweig (virtuell)

Heute findet der FileMaker Stammtisch Braunschweig virtuell statt via Zoom: Mittwoch, 11. März um 19:00 Uhr.

Die Chance für alle deutschsprachigen FileMaker Freunde drumherum diesmal live dabei zu sein.

Marcel Moré erzählt bestimmt was zum neuen Claris Connect und den anstehenden Konferenzen.
Vermutlich zeige ich was wir neues im MBS Plugin dieses Jahr haben mit diversen Beispielen (keine Folien).

Mehr Informationen: xing.com/events/filemaker-stammtisch-braunschweig-virtuell

Checking out the party location

We went to the party location for our 20 years Monkeybread Software event. Our mascot directly found a chair at the bar, but the bartender didn't show up that day.

In April 2020 our company will turn 20 years old and we celebrate.
We'll plan to have a big party here in Germany near our office with over 100 guests.

We hope for good weather and plan to do some barbecue and have a bouncy castle for the kids. They have a lovely terrasse for sitting outside, a big smoker for some great barbecue and be hired a DJ to entertain us.

If you like to join and you miss an invitation, you can contact us and ask whether your invitation got lost. Today we sent a few more invitations. In total something like 600 people invited, but most can't come. As people confirm they are coming, we'll add them to the guest list. If we run out of space, we may put people on the wait list. If you can't make it, please respond soon, so we don't need to contact you again later.

MBS FileMaker Plugin 10.1 - More than 6100 Functions In One Plugin

Nickenich, Germany - (March 10th, 2020) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 10.1 for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, macOS, iOS and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 10.1 has been updated and now includes over 6100 different functions, and the versatile plugin has gained more new functions:

Optimized syntax highlighting for MacOS to be faster on scrolling. You can now pick a font via preferences dialog or via SyntaxColoring functions to use a custom font for script workspace and calculation dialogs. The MBS Plugin now remembers column widths for themes, custom menus, data sources, security and privileges and value lists dialogs in FileMaker. We added new context menu entries for several lists in FileMaker to sort entries, e.g. to sort layouts or fields by name.

For Windows check the new WebView.PostURL function. Use it to load a website with GET or POST method and include POST data, e.g. to send a form directly and show resulting webpage. Pass additional headers with the request including a different user-agent, e.g. to pass a browser check which do not like Internet Explorer. Our preferences dialog for Windows can take your license key directly.

With SharedMemory functions you can store named values in memory shared with other applications on the computer. The content persists till a reboot or when you delete it and can be read even when FileMaker is quit in-between.

For Contacts we got CNContact.DeleteValue to delete a value and CNContact.Show to show a contact on screen. Please use CNContactPicker.Show to show a picker to pick a contact from your address book on MacOS and iOS.

In GraphicsMagick functions we can now extract thumbnail from EXIF data in a JPEG image. And you can check the font map used for annotating with text using GMImage.FontMap.

The CLGeocoder functions can now return result as JSON block. For Windows Media Foundation Player, you can now take screenshots and play the video/audio as loop. With DynaPDF you can now use the Windows certificate store to pick a certificate using a standard dialog when signing a PDF document. Using FM.SetDisableContextualMenus you can now disable context menus for FileMaker.

Our JavaScript functions got new functions to convert time to/from JavaScript. We got an automatic type detection mode for FileMaker XML on the clipboard. Our styled text handling on MacOS can now handle strikethrough attribute. Using ScriptWorkspace.StyledScriptText and ScriptWorkspace.CopyScriptText you can automate to save scripts.

Finally we updated to newer Plugin SDK, CURL version 7.69.0, DynaPDF to, SQLAPI to 5.0.5 and SQLite to 3.31.0.

See release notes for a complete list of changes.

MonkeyBread Software Releases the MBS Xojo Plugins in version 20.1

Nickenich, Germany - (March 10th, 2020) -- MonkeyBread Software today is pleased to announce MBS Xojo Plugins 20.1 for macOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin collection currently available for Xojo. MBS Xojo Plugins have been updated and now includes over 2600 classes and 68,000 documented features, and the versatile plugins have gained more new functions:

Since Xojo 2019r3 uses a newer version of Chromium Embedded Framework for the Webkit enabled HTMLViewer controls, we updated our classes to support this. You can use the MBS Xojo Win Plugin with three different CEF versions depending on the version included with your Xojo version. For the ChromiumBrowserMBS class we have a new RegisterExtension function to register JavaScript based extensions.

Our JavaScriptEngineMBS class got upgraded to pass memoryblocks with copying in normal parameters, results and properties. The Memoryblock is available as UInt8 array in JavaScript. The new GlobalMemoryBlock function passes memory blocks to properties by reference to allow you to reference the same memory in Xojo and JavaScript. With our new MT methods you can call functions or evaluate code snippets on a preemptive thread to run them in background and keep your user interface responsive. Use JavaScriptDateComponentsMBS class to work with dates in JavaScript.

In MacOS you can now support Airplay devices. Use AVRouteDetectorMBS class to detect available devices and use AVRoutePickerViewControlMBS control to display the standard user interface to pick a target device. When using our WebKit 2.x browser control, you can now configure it using WKPreferencesMBS and WKWebViewConfigurationMBS classes. Use WKHTTPCookieStoreMBS to work with the cookies there.

For Windows check the new Navigate method in IEWebBrowserMBS class. You can use it to load a website with GET or POST operation and include POST data, e.g. to send a form directly and show resulting webpage. Pass additional headers with the request including a different user-agent, e.g. to pass a browser check which does not like Internet Explorer.

Check our new Windows file dialog classes around WinFileDialogMBS class. You can customize them including custom controls in the dialog like labels, buttons, checkboxes, textfields and popup menus. We provide a lot of events, so you can react to user interaction and enable/disable or query values.

For JPEGImporterMBS and GMImageMBS class we added EXIF thumbnail functions, so you can quickly get a thumbnail picture embedded in EXIF metadata. Use our new LTCMBS class to generate or recognize time codes in audio streams. For our Encryption plugin we added a BCryptMBS class to encrypt and hash passwords with bcrypt algorithm.

Finally we updated to CURL version 7.69.0, DynaPDF to, SQLAPI to 5.0.5 and SQLite to 3.31.0.

See release notes for a complete list of changes.

Neues MBS FileMaker Plugin 10.1 - Über 6100 Funktionen in einem Plugin

10. März 2020 - Monkeybread Software veröffentlicht heute das MBS Plugin für FileMaker in Version 10.1, mit inzwischen über 6100 Funktionen eines der größten FileMaker Plugins überhaupt. Hier einige der Neuerungen:

Wir haben die Syntaxeinfärbung für das Scrollen unter MacOS optimiert. Sie können über den Voreinstellungsdialog oder über die SyntaxColoring Funktionen eine eigene Schrift auswählen, die das MBS Plugin dann für Berechnungen oder Skripte verwendet. Unser Plugin kann sich jetzt die Spaltenbreite für mehr Listen merken bei externe Datenquellen, Designs, Eigene Menü, Sicherheit und Wertelisten. Über einen neuen Eintrag im Kontextmenü können Sie mehrere Listen in FileMaker automatisch sortieren lassen, z.B. die Liste der Layouts oder Felder.

Für Windows probieren Sie bitte die WebView.PostURL Funktion um eine Webseite mit GET oder POST aufzurufen. Übergeben Sie optional POST Daten, z.B. um ein Formular abzuschicken und direkt das Ergebnis zu sehen. Mit zusätzlichen Header Einträgen können Sie beispielsweise einen anderen User-Agent angeben. Damit überlisten Sie die ein oder andere Browser Überprüfung, die vielleicht den Internet Explorer nicht mag. Für Windows haben wir einen Voreinstellungsdialog um direkt die Lizenzdaten einzugeben.

Mit den neuen SharedMemory Funktionen können Sie Daten im Arbeitsspeicher ablegen und mit anderen Programmen austauschen. Der Inhalt bleibt auch im Arbeitsspeicher, wenn FileMaker zwischendurch beendet wird.

Für Kontakte haben wir die CNContact.DeleteValue Funktion um leichter Werte zu löschen. Nutzen Sie CNContact.Show um einen Kontakt auf dem Bildschirm anzuzeigen. Mit CNContactPicker.Show rufen Sie, für MacOS und iOS,einen Dialog auf um einen Kontakt aus dem Adressbuch zu wählen.

Die GraphicsMagick Funktionen können ein Vorschaubild aus den EXIF Daten eines JPEG Bildes laden. Sie können die Schriften Liste mit GMImage.FontMap einsehen, die wir für Annotationen verwenden.

Für DynaPDF können Sie jetzt per Dialog aus dem Windows Certificate Store ein Zertifikat zum Signieren eines PDF Dokumentes auswählen. Per FM.SetDisableContextualMenus können Sie Kontextmenüs für FileMaker deaktivieren.

Unsere JavaScript Funktionen können jetzt Zeitwerte von/nach JavaScript konvertieren. Für unsere XML Funktionen, betreffend FileMaker Daten in der Zwischenablage, haben wir jetzt die automatische Erkennung von Inhalt eingebaut. Die Funktionen für Texte mit Stilelementen für MacOS unterstützen “durchgestrichen” als Attribut. Mit ScriptWorkspace.StyledScriptText und ScriptWorkspace.CopyScriptText können Sie automatisiert den Text des aktuellen Skripts abfragen. Die CLGeocoder Funktionen können das Ergebnis jetzt als JSON Block zurück geben. Beim Windows Media Foundation Player können Sie jetzt, vom aktuell gezeigten Bild, Fotos erstellenund den Film oder Ton als Schleife laufen lassen.

Außerdem haben wir das Plugin SDK aktualisiert, CURL auf Version 7.69.0, DynaPDF auf, SQLAPI auf 5.0.5 und SQLite auf 3.31.0.

Alle Änderungen in den Release Notes.

WebPicture from PDF Page HiDPI

Today we updated our WebPicture from PDF Page example project for Xojo to better handle HiDPI support when rendering PDF pages with DynaPDFMBS class in MBS Xojo DynaPDF Plugin.

The WebPicture class has a couple of constructors, but sadly none to provide both width and height and image data. So we need to create the WebPicture based on a low resolution version to get the right size in. Later we replace data with high resolution image data to get the sharp image to show in browser. Here is our sample code:

Function RenderPDFWebPicture(file as FolderItem, pageIndex as integer, width as integer, height as integer) As WebPicture Dim pdf As New MyDynaPDFMBS // create PDF environment and setup If pdf.CreateNewPDF(Nil) Then if pdf.SetImportFlags(pdf.kifImportAsPage + pdf.kifImportAll) then // open source file If pdf.OpenImportFile(file, 0, "") >= 0 Then // import file if pdf.Append then If pdf.ImportPageEx(PageIndex, 1.0, 1.0) >= 0 Then if pdf.EndPage then // make a jpeg If pdf.SetJPEGQuality(80) Then // render 1x If pdf.RenderPageToImage(pageIndex, Nil, 72, width, height, pdf.krfDefault, pdf.kpxfRGB, pdf.kcfJPEG, pdf.kifmJPEG) Then Dim LowData As String = pdf.GetImageBuffer // render 2x If pdf.RenderPageToImage(pageIndex, Nil, 144, width, height, pdf.krfDefault, pdf.kpxfRGB, pdf.kcfJPEG, pdf.kifmJPEG) Then Dim HighData As String = pdf.GetImageBuffer // now build 1x picture Dim w As New WebPicture(LowData, "page.jpg") // and put in 2x data w.data = HighData // and return with HiDPI content Return w end if end if end if end if end if end if end if end if End If End Function

As you can see, we create new MyDynaPDFMBS object, our subclass to fill error event and learn about why things may go wrong. The OpenImportFile function may fail to open the PDF file on the server. Otherwise use OpenImportBuffer to pass PDF as data block directly. We import first page, set JPEG quality and then render two versions of the image, one with 72 dpi and one with 144 dpi. Both are then combined into a WebPicture object.

Please do not hesitate to contact us if you have questions. The example will be included in MBS Plugin 20.1 download.

Sort Layouts and Fields in FileMaker

Have you tried the sort command in our contextual menu in FileMaker for MacOS to sort various lists in FileMaker?

See how to sort layouts:

and sort field list:

Coming soon in 10.1 release, which is currently in beta test.

Older blog entries:

2020-03-08 New York FileMaker Meeting
2020-03-05 MBS FileMaker Plugin, version 10.1pr7
2020-03-05 MBS Xojo Plugins, version 20.1pr7
2020-03-03 Permanent column widths for FileMaker
2020-03-03 xDev 18.2 Issue
2020-03-02 MBS Xojo Plugins, version 20.1pr6
2020-03-02 MBS FileMaker Plugin, version 10.1pr6
2020-03-01 20 Years Monkeybread Software Party
2020-02-28 MBS Syntax Colorizing saves the day!
2020-02-28 Crop a two side page document to a single page document
2020-02-28 The new JSON.EqualContent function
2020-02-27 Xojo developer meeting in New York City
2020-02-26 Upcoming deprecations for MBS FileMaker Plugin
2020-02-26 Multithreaded JavaScript usage
2020-02-25 Merge PDF with table of contents
2020-02-25 One month till Xojo.Connect 2020 in Nashville
2020-02-24 MBS Xojo Plugins, version 20.1pr5
2020-02-24 MBS FileMaker Plugin, version 10.1pr5
2020-02-23 Reading JPEG Thumbnails from EXIF
2020-02-20 Heute anmelden zur Deutschen FileMaker Konferenz 2020 in Malbun


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