MBS Xojo Conference
6/7th September 2018, Munich
Our Blog, Filemaker only, Xojo only, Archive (older)

Follow us on Twitter, Xing, LinkedIn or Facebook.

MBS Xojo Plugins, version 18.2pr9

New in this prerelease of the 18.2 plugins:
  • Fixed crash with zxingQRCodeReaderMBS with out of bounds access in image for bad QRCodes.
  • Changed zxingQRCodeReaderMBS to report the version number read when complaining about invalid version in QRCode.
  • Fixed OpenDialogMBS for Cocoa target to handle better file extensions when several are separated by semicolon.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Two weeks left for early bird tickets for MBS Xojo Conference in Munich

Just about two weeks left for early bird tickets for our European MBS Xojo Conference 2018 in Munich. If you like to join, please sign up soon.

Already developers from nine countries are signed up including Xojo CEO Geoff Perlman and Xojo Evangelist Paul Lefebvre. The schedule is mostly done with only a few sessions still pending. Reserve your ticket and reserve your hotel room as soon as possible.

Our Hotel room contingent expires later this month, so please make sure you have a room booked.

The schedule:

Sep 4thDayoptional sight seeing tour
Sep 4thEveningoptional get-together with everyone arriving early
Sep 5thDayoptional Xojo training (English)
Sep 5thEveningoptional get-together with everyone arriving early
Sep 6th9:00 to 18:00First day of conference with keynotes
EveningDinner event in Augustiner Keller
Sep 7th9:00 to 18:00Second day of conference with more sessions
EveningOptional dinner together
Sep 8thDayoptional Xojo training (Deutsch/German)
Sep 8thEveningoptional dinner together

We all look forward to presentations about Android, the new Web Framework other news in the Xojo keynote.

Registration is open. The late bird offer available till 7th June is just 599 Euro plus VAT if needed. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Maritim Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers. If you like to hold a presentation, please contact us as soon as possible.

MBS Xojo Plugins, version 18.2pr8

New in this prerelease of the 18.2 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Xojo Stammtisch in Zürich

On my next visit to Zurich, I'd love to make another Xojo developer meeting:

Wer hat Interesse an einem Xojo Entwicklertreffen am 10. oder 11. Juni in Zürich?

Einfach gemütlich zusammen sitzen und über Xojo schnacken.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Bei Interesse bitte eintragen für Terminfindung: Umfrage

Wer Interesse hat an einem Termin mit mir für Softwareentwicklung, Schulungen, Entwicklungshilfe, Plugin Empfehlungen, assistierte Fehlersuche, Code-Review und IT-Beratung, der darf sich gerne melden für eine baldige Terminfindung.

BBEdit turns 25 years old

Do you know BBEdit?

It's still after many years it is my favorite text editor on MacOS.
I've been using it since version 6.x around year 2000, first the Light version and than full version later.

You can use BBEdit to edit any text file, convert between different line endings and text encodings.

I love it for searching and replacing texts in multiple files using regular expression and edit all my html, php and javascript files in it.

As BBEdit can be downloaded and tested for free, please give it a try today.

Thanks Bare Bones Software, Inc. for making it.

UUID Numbers

FileMaker 17 introduces a new function Get(UUIDNumber). It allows you to query the numeric representation of an UUID.


Both refer to the same UUID and you can calculate the numeric value yourself by decoding hex parts and multiplying. Those UUID values allow you to use UUIDs as primary keys on the database. Sorting and indexing can be more efficient.

Sadly FileMaker 17 does not introduce the UUID data type to store UUIDs efficient as 16 byte in binary representation instead of 40 characters of text for the number or 36 characters for hex representation. That would save space.

So please start using UUID numbers, which avoid people guessing your record IDs by counting up or down.

If you need those for FileMaker 16 or older, you can use our new plugin function UUID.Number. It returns you an UUID as number, same as with FileMaker 17.

We also got UUID.FromNumber and UUID.ToNumber functions to convert between hexadecimal and numeric representation.

Windows GUI Resources

For next MBS Xojo Win Plugin, we add a new WindowsGUIResourcesMBS class:

This class allows you to query the number of handles used for GUI and user objects. So you can have a timer monitor those values and maybe detect a leak in memory usage. For example, each picture needs a GUI handle. But a window may contain a few user object and GUI handles.

Coming soon for version 18.2 of our Xojo plugins.

XDC 2018 Highlights Video

Watch the XDC 2018 highlights video now:

The next conference is just 4 months away: MBS Xojo Conference, 6th/7th Sep 2018 in Munich.

Xojo Stammtisch in München

Wer hat Interesse an einem MBS Xojo Entwicklertreffen am 14. Juni in München?

Einfach gemütlich zusammen sitzen in einem Restaurant oder Biergarten und über Xojo reden.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Bei Interesse bitte bald bei mir melden.

Für die Xojo Konferenz im September sind noch Plätze frei.

Sign PDFs with DynaPDF using Windows Certificate Storage

You may know that you can sign a PDF with DynaPDF cross platform in Xojo (and FileMaker) with a certificate file, usually a PKCS#12 file.

But for Windows, our Xojo plugin offers an alternative way by using the local certificate storage. So your user can have the private key with certificate installed on the Windows machine and sign without knowing the password for the certificate!

On the right, you see the dialog from Windows to pick a certificate in German.

If you have no certificate, you get an error message. If you have one, you can confirm to use it and if you have several certificates, you can pick one. The dialog is localized for the user.

PS: If needed, we could add that quite soon for FileMaker, too.

MBS Xojo Plugins, version 18.2pr7

New in this prerelease of the 18.2 plugins:
  • Implemented InvertMBS for alpha channel pictures.
  • Changed CURLSMBS to use less memory for storing properties.
  • Changed CollectOutputData, CollectHeaderData and CollectDebugData for CURLSMBS/CURLMBS/CURLNMBS to track if you set property and if you set to false, we ignore the data and do neither return error nor collect data. If never set, we may turn them to true, when you have no event and no file streaming.
  • Reduced memory footprint of CURLSMBS.FormAddField method.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

XDC2018 Superhero SQLite Video available for free

Nothing to do on a Sunday evening?
You can watch the Superhero SQLite session video from XDC 2018 and learn all about SQLite from Paul Lefebvre.

"Superhero SQLite" XDC 2018 Session | Paul Lefebvre and XDC 2018 Recap

All XDC sessions are available for attendees of the conference for free on the Xojo website.
Or for purchase of the video pack for just $399 USD in the Xojo Store.

Detect 32 vs. 64bit DLL in Xojo

Today we got some code to detect whether a DLL is 32-bit or 64-bit. That can be useful if your app requires the user to install a custom DLL, e.g. mysql DLL for use with our MBS Xojo SQL Plugin.

Technically you need to read the DOS header from the DLL/EXE file, check where the PE header starts and lookup the field for CPU architecture. If something is not supported, we ignore it, like a wrong position value and if the MZ or PE texts are not there. As you see, we can easily do that with binary stream class in Xojo and Microsoft defines a lot of constants for the various possible architectures.

If you find a DLL from a Windows RT copy, please let me know if it detects ARM as target. Thanks. (more)

Check our QuickLook Plugin for Xojo and Real Studio Projects

You have several Xojo and Real Studio versions in use?
You want to know in advance what Xojo version a project was saved with?

Please try our plug-in for QuickLook: MBS-Xojo-QuickLook-Plugin.dmg

After installation of our plug-in to /Library/QuickLook and you run "qlmanage -r" in Terminal app or logged in the next time, your icons look like this:

This plug-in is freeware, so please share with friends and enjoy!

xDev Magazine Issue 16.3

The May/June (16.3) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Farewell New Framework by Marc Zeedar
Big announcements were made at this year's Xojo Developers Conference in Denver, Colorado in late April. Find out all the details here!

A Roundabout Way to Denver by Marc Zeedar
As usual, Marc likes to do things the hard way. Instead of a quick flight to Denver and a stay in a comfy hotel, he decided to drive 1300 miles and sleep in his car. Er, what?!

Give Yourself to the Dark Side by Sam Rowlands
Apple has added "dark mode" support in recent OS updates, but using it in the best way can be tricky. Sam demonstrates how by creating a custom slider control.

A Predicate For Data, Part 2 by JC Cruz
This time Jose adds new features to his data predicate class.

Plus: Xojo 2018r1, refactoring, PITR, MailgunX, and more!

XDC 2018 Session Videos

The XDC Videos are available.

You can get over 30 videos from the sessions for download in your Xojo account, if you visited the conference. All others, can buy the video pack for just $399 USD in the Xojo Store.

Here is the list of all tracks:
1Android Update Presentation34:45
1Ask the Engineers36:38
1New IDE Features37:48
1SQLite Presentation46:17
1Web Framework38:57
1Windows Presentation43:39
2Advanced Reporting In Xojo50:39
2Aloe Express59:53
2Database Driven Web Apps54:12
2Databases 10144:55
2Factoring Project Testability51:47
2Lean On Me (the Compiler)45:58
2Leveraging LLVM42:53
2Practical Color Management48:06
2Rapid Database Application51:34
2Rest API54:18
2SELECT encrypted data52:02
2Use Monkeybread Plugins32:30
2Web Server For Mobile Apps43:16
3Anatomy Of An IOS App51:36
3Being Successful With An IOS App38:30
3Mastering The Dialog Box Part 250:09
3Mastering The Dialog Box39:14
3Moving Beyond Example Files40:24
3Policies Procedures & Processes51:21
3Project Management46:56
3Searching For Code54:37
3Tip Control SF59:15
3Using OPP52:02
In total over 24 hours of Xojo knowledge.

Sign up today for the next conferences: PS: Today is the XDC 2018 Recap webinar.

Store your ID in URLs in Mac address book

As you may know, we can query address book in our plugins. Now you can store your own IDs for users in the contacts database by using an extra URL.

The key today is that we use an URL in the addressbook and make it a FMP URL, so the user can actually click on the URL and go to the FileMaker database right away. When synchronizing the IDs between database, we can store our own ID this way. To search, we use Addressbook.searchElementForProperty function to search for our label in URLs property and compare to the ID.

To store the value, we use the following script: 

Set Variable [ $PersonID ; Value: MBS( "Addressbook.Me") ] 

Set Variable [ $myID ; Value: "FMP://~/Clients?script=ShowContact&param=123456" ] 

Set Variable [ $MyLabel ; Value: "FileMakerID" ] 

# Query current URLs

Set Variable [ $r ; Value: MBS( "Addressbook.record.valueForProperty"; $PersonID; "URLsProperty" ) ] 

Set Variable [ $Count ; Value: MBS( "Addressbook.multivalue.count" ) ] 

Set Variable [ $index ; Value: 0 ] 

Set Variable [ $foundIndex ; Value: -1 ] 


Set Variable [ $label ; Value: MBS( "Addressbook.multivalue.labelAtIndex"; $index ) ] 

If [ $label = $MyLabel ] 

Set Variable [ $foundIndex ; Value: $index ] 

Exit Loop If [ 1 ] 

End If

# next

Set Variable [ $index ; Value: $index + 1 ] 

Exit Loop If [ $index >= $count ] 

End Loop

If [ $foundIndex >= 0 ] 

# found, so update

Set Variable [ $r ; Value: MBS( "Addressbook.multivalue.replaceValueAtIndex"; $foundIndex; $myID ) ] 


# not found, so add

Set Variable [ $r ; Value: MBS( "Addressbook.multivalue.addValue"; $myID; $MyLabel ) ] 

End If

Set Variable [ $r ; Value: MBS( "Addressbook.record.SetValueForProperty"; $PersonID; "URLsProperty"; "multi" ) ] 

# save...

Set Variable [ $r ; Value: MBS( "Addressbook.save" ) ] 

And to read back the value, we can use a script like this: 

Set Variable [ $PersonID ; Value: MBS( "Addressbook.Me") ] 

Set Variable [ $MyLabel ; Value: "FileMakerID" ] 

# Query current URLs

Set Variable [ $r ; Value: MBS( "Addressbook.record.valueForProperty"; $PersonID; "URLsProperty" ) ] 

Set Variable [ $MyID ; Value: MBS( "Addressbook.multivalue.valueForLabel"; $myLabel ) ] 

Show Custom Dialog [ "MyID" ; $MyID ] 

Let me know if you have questions. Same can of course be done with our Xojo plugins. 

Combine PDFs 5.3

Monkeybread Software today is proud to announce Combine PDFs 5.3, an update to their popular PDF merge and split tool for Mac OS X. With a focus on ease-of-use, Combine PDFs is a lightweight utility which allows anyone to merge PDF files and images into a single PDF file. The user need only drag & drop files onto the program icon. The main window appears, allowing the user to set the order in which the files are joined.

Changes in Version 5.3:
  • Added swedish translation.
  • Can use app store license in shareware version.
  • Added retina support and now a Cocoa application.
  • Added preference option to enable copying of annotations.
  • Requires MacOS 10.9 or newer.
  • Upgraded to 64-bit.
  • Fixed preview window setting, so it's saved and honored on next app start.
Combine PDFs Website

Requires MacOS 10.9 or newer for 64-bit. Older 32-bit version stays available and still works very well.

This application is made with Xojo 2018r1.

Query URL from downloaded file

Did you know that your Mac tracks URLs used with downloaded files?

In the metadata for a file, you find extra attributes for download URL and download date, which spotlight uses to track downloads. In Finder, you find the URL in the information dialog for the file.

In Xojo, you can use MDItemMBS class:

dim file as FolderItem = DownloadsFolderMBS(0).Child("test.html") dim item as new MDItemMBS(file) dim value as Variant = item.GetAttribute(MDItemMBS.kMDItemWhereFroms) if value <> nil then dim values() as Variant = value dim Link as String = values(0) MsgBox link end if

In FileMaker, our MetaDataQuery.AttributesForFile would provide all the metadata as JSON and this includes the kMDItemWhereFroms entry:

Set Variable [ $path ; Value: "/Users/cs/Downloads/test.html" ]
Set Variable [ $json ; Value: MBS( "MetaDataQuery.AttributesForFile"; $path) ]
Set Variable [ $link ; Value: MBS("JSON.GetPathItem"; $json; "kMDItemWhereFroms¶0") ]
Show Custom Dialog [ "Link" ; $link ]

If you like to get rid of the attributes, you can use   xattr -c   followed with the path to the file.
Or in Xojo use ExtendedAttributesMBS module to do it in code.

MBS Xojo Plugins, version 18.2pr6

New in this prerelease of the 18.2 plugins:
  • Updated DynaPDF to version
  • Added DynaPDFMBS.GetUsesTransparency, DynaPDFMBS.GetDocUsesTransparency and DynaPDFPageMBS.SetBBox.
  • Added CWWiFiClientMBS class for MacOS to watch for Wifi changes.
  • Fixed SQL problem introduced in pr4 where all recordsets where empty.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Older blog entries:

2018-05-07 Xojo Stammtisch in München
2018-05-05 Four months till European MBS Xojo Conference in Munich
2018-05-04 Xojo on Sale this weekend with 20% off
2018-05-02 MBS Xojo Plugins, version 18.2pr5
2018-05-02 Sightseeing in Munich
2018-05-01 Xojo Stammtisch in Berlin
2018-04-29 Download HTTP Live Stream
2018-04-28 See you at the next Xojo Conferences
2018-04-26 Colorspaces in Xojo
2018-04-26 Spellchecking on Windows
2018-04-25 MBS at XDC 2018
2018-04-24 MBS Xojo Plugins, version 18.2pr4
2018-04-24 Use JSON functions with SQLite
2018-04-24 Do you remember Boulder?
2018-04-23 MBS Xojo Event Kit, version 1.2
2018-04-22 Macoun Conference
2018-04-22 Privacy enhancements
2018-04-19 Transparent Screensaver for macOS
2018-04-18 MBS Xojo Plugins, version 18.2pr3
2018-04-18 Xojo 2018 Release 1


May 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