Formatted Text Control 3.1.9

BKeeney Software has released version 3.1.9 of the Formatted Text Control, a canvas based word processing control for Xojo Mac OS X and Windows applications. The FTC is an alternative to the built-in TextArea control and allows for in-line graphics, hyperlinks, custom components, better RTF support and much more. The demo project has quite a few examples, including a Masked Text Field, XojoScript code editor example, Embedded FTC (in your own canvas), as well as the word processor with page view.

This is a maintenance release and is free for all version 3 users. It fixes the following items:
  • Fixed issue with view scale < 1.0 setting up the clipping page incorrectly (#3500)
  • Fixed spelling replace on TestWindow (#3581)
  • Fixed Mac text AutoComplete positioning (#3574)
  • Fixed Tabstop Widths (#3500, #3576)
  • Updated Linux declare for doubleClickTime to include GTK3 in newer Xojo versions (#3575)
  • Fixed the Draw Control border on the right side (#3473)
  • Added SpellCheck configuration testing to contextual menu on TestWindow
  • Added SpellCheck configuration testing to App.Close event
  • Fixed resources directory location for the the Spell Checker initialization
  • Added more comments in code if plugins are missing
The Formatted Text Control costs $150 and is 100% unencrypted Xojo code. Version 3 and above requires the use of the Text Input Canvas plugin (included in package) to allow for proper text handling in Cocoa builds. Product page at

PS: Don't forget to ask Bob for PDF output to be added via DynaPDF plugin for v4!
That would give excellent PDFs with a lot of features and correct font embedding.

MBS Video von der FileMaker Konferenz 2017 in Salzburg

FMK Video

The video from German FileMaker conference in Salzburg is now available.
If you know a bit of German, check out what the MBS Plugin can do for you.

Hier das Video zur MBS FileMaker Präsentation von der FileMaker Konferenz 2017 in Salzburg.
Ein Überblick über beliebte und neue Funktionen.

FMK 2017 Video

The office application for a market garden shop in Xojo

Recently I was asked how much time it needs to write a business solution for a small business in Xojo and how that compares to other tools.

Years ago I wrote an application for a small company to manage a market garden. They grow plants, collect seeds and sell seedlings, beside a lot of related products for gardening. The application has the following features:
  • Manage categories of products
  • Manage products with labels, prices, html & text description
  • Export products for upload to webshop
  • Print labels for products
  • Manage customers with billing & deliver addresses, newsletter subscription and bank account information.
  • Print mailing labels for packages.
  • Statistics to list best sellers with amounts and revenue per product.
  • Letter window to write emails to clients and keep them stored. Use place holders to auto fill in values and pass letter to email application or print for mailing in letter.
  • Newsletter window to setup various newsletter and send to all subscribers or only to people in a certain area.
  • Label printing for mailing labels for yearly catalog mailing. Easily prints 1000+ labels.
  • Manage orders.
  • Receive new orders from web shop. Order can be reviewed and modified.
  • Split function to split invoice between products available now and later.
  • Print product labels for products in one invoice.
  • Print invoice, package label and send email to announce delivery.
This app helped the company a lot and got them running much more efficiently. Instead of writing 40000 labels each year by hand, they now print them in the right quantity. For a product bundle, the right amount of labels is printed covering each product that needs labels. Same for an invoice where you can print all labels for all the plants and than go to the greenhouse to collect them.

This is a single user database application running based on SQLite database for 8 years now. It runs on a dedicated Mac in the office and is used over the day by several members of staff to edit products, print labels and handle orders. Originally we started in REALbasic, than Real Studio and now Xojo.

Development in Xojo is quite straight forward. We often arrange controls on the windows with the client together and than fill the events with code later. For the database access we simply build SQL statements and run them. Of course we use prepared statements to avoid SQL injections. Once we had the load and save for a window done, the other windows are more or less copy & paste. In total this project has 22 windows, printing the code gives a 218 pages PDF.

Label printing is done via a dedicated label printer where we sent control commands to the printer via CUPS Plugin functions directly over USB. And the whole job started just by them looking for help on getting the printer to print. But later we discovered it would be worth to have the app know the products, so you don’t need to enter the labels manually. And than when we have products, why not import orders and print invoices and labels for each order? Well, as you see this solution grew over the years and I am looking for keeping it running for another decade.

The totally billed time was 62 hours of development. That includes times at a visit in the office to get the printing working, write down specifications, check how they process orders, get details on web shop interface and starting with a prototype. It started in 2009 with a prototype and got a working in production solution within a few month. Between the first contact and a working application, it took 5 months with a lot of breaks for several weeks, but over the years the application grew a bit to the current level. The time above also includes support calls and bug fixes.

I hope this information helps a few people to see how quick you can develop in Xojo and how long a project like this takes.

FileMaker Developer Conference 2018

Back to the three days of sessions, the FileMaker DevCon will come to Texas next year.

August 6-9, 2018 | Gaylord Texan Resort | Grapevine, Texas

This is a fantastic conference hotel with 1500 rooms, 10 restaurants, several pools indoor and outdoor. And as may know this was my guess for the conference hotels. As FileMaker DevCon grew to 1600 attendees, you need big facilities. FileMaker loves to use the Apple rates in Marriott hotels and as you may know there are not many huge hotels available for such a great event.

Registration starts end of February 2018. You can apply for being speaker soon. Rooms can be reserved on the hotel website. As you can cancel rooms and they may run out of them, you better reserve now a room and block the week in your calendar! See you there.

FileMaker Cloud with MBS Plugin

FileMaker Inc. announced their new FileMaker Cloud version The update is already available on Amazon's marketplace. This update includes the FileMaker 16 Server engine, so you can now use all the new features in FileMaker 16 like Data API, PDF generation on server and OAuth 2.0 client authentication.

See release notes for details: Release Notes

And documentation for new Admin API:
FileMaker Cloud 16 Admin API Guide Show All

MBS Plugin 7.4 for FileMaker cloud is available and runs just fine in the cloud. We have been using it the last months with a beta version in the cloud and it works very well. If you have wishes for new functions to be supported on Linux, please let us know.

MBS Xojo Plugins, version 17.5pr4

New in this prerelease of the 17.5 plugins: Download:
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 7.5pr4

New in this prerelease of the 7.5 MBS FileMaker Plugin:
  • Updated SQLite to version 3.20.1.
  • Fixed bug with Barcode.SetPrimary.
  • Removed libpcre dependency we had in the iOS Plugin for last beta.
  • Updated CURL library to version 7.56.1.
Download at or ask for being added to the dropbox shared folder.

Comparing Base Elements Plugin to MBS FileMaker Plugin

At the conferences there was the question about how MBS FileMaker Plugin compares to the Base Elements plugin. Normally I don’t spend time checking other plugins as I just develop new features based on what people ask and not what other plugins may do.

But well, I got a list of the Base Elements plugin functions and checked which MBS function call may help to do the same things. It’s not always an exact match and in general MBS functions do smaller steps, so you need to combine severals of them. That is different to other plugins which have complicated functions with a lot of options to do various tasks with one function.


Windows DLL Limits and Xojo 64-bit IDE

As you may have read, Xojo goes 64-bit for the next version of the IDE. That’s great news and we plan to have our plugins ready soon. But on Windows we run once again into a limit of the number of DLLs which can be loaded. By default each DLL uses 1 to 2 slots for TLS/FLS table. The FLS limit is 128 and the TLS limit 1088. For 32-bit I did make a change to avoid this years ago. This way MBS Plugins didn’t count against the smaller limit.

So we made a change for 64-bit Windows to use TLS only and so we can load 500 DLLs without a problem:

WhatFLS useTLS use
Default Visual Studio 64-bit DLL10
MBS Plugins 64-bit DLL01
Xojo Database Plugins 64-bit10
Default Visual Studio 32-bit DLL11
MBS Plugins 32-bit DLL02
Xojo Database Plugins 32-bit10

All per DLL and plus the base level of about 50 TLS handles and 12 FLS handles for Xojo itself.

So for Xojo 2017r3 on Windows, you will definitively need our 17.5 plugins with the fix. Older plugins will only load partially. This fix enables to use to 500 MBS Plugin DLLs if needed and still have room in both tables for other plugins and Xojo itself.

MBS FileMaker Plugin, version 7.5pr3

New in this prerelease of the 7.5 MBS FileMaker Plugin: Download at or ask for being added to the dropbox shared folder.

MBS Xojo Plugins, version 17.5pr3

New in this prerelease of the 17.5 plugins: Download:
Or ask us to be added to our shared Dropbox folder.

75th Country

We welcome our first plugin customer in Uganda.
MBS FileMaker and Xojo plugins are now used in 75 countries.

Top five countries are for Xojo:
  1. 🇺🇸 United States of America
  2. 🇩🇪 Germany
  3. 🇬🇧 United Kingdom
  4. 🇮🇹 Italy
  5. 🇫🇷 France
And for FileMaker plugin:
  1. 🇺🇸 United States of America
  2. 🇩🇪 Germany
  3. 🇨🇭 Switzerland
  4. 🇬🇧 United Kingdom
  5. 🇳🇱 The Netherlands
Usually the distribution follows the knowledge of english (for reading documentation), education (for programming) and money (for paying license fees). German speaking countries are usually higher due to me offering support in German. Although of course everyone is welcome to create and translate tutorials for all languages.

Looking forward to what the 76th country will be! Any volunteers?

Next chance to meet me is the Xojo event in Wimbledon. Even if you don’t take part, you can still arrange a meeting with me or just say hello at the hotel bar.

FileMaker Server Security and plugins

On a FileMaker Server plugins can do a lot. Whether you use our MBS Plugin or a few of the others available. They all may offer functions to delete files, to upload files via FTP or to encrypt files. All functions you may use yourself to do backups to remote locations in your scripts.

For all your solutions you must make sure that:
  • You do not simply pass user entered text to evaluate or SQL function in FileMaker.
  • You do not allow databases on servers with user accounts who can edit scripts or layouts.
  • You make sure you limit the plugin features to those you need.
For the first point, well you can let the user enter a calculation and use Evaluate to get the result. e.g. your user enters a number and you multiply it. But what if they enter a plugin call instead? Well, using GetAsNumber first may help to convert input to a number first and strip function calls. Or other cases you may need to remove brackets to remove function calls.
Same for text used in SQL statements, where user can enter SQL commands in text fields and they are executed. But you pass values as parameters and not put them in the SQL directly, right?

Second point means if an user has the chance to modify a script, they could write anything there, including calls to sabotage, steal or delete data. Not to mention creating new scripts which they can trigger anything anywhere. So please limit permissions.

Third, for the MBS Plugin, you can use Plugin.SetFunctions function to limit the list of functions to the ones you need. So maybe instead of 4900 functions, you may only need 20 of them. So you can pass a list of function names and the plugin disables all other functions and you can’t call them anymore. With Plugin.LimitFunction you can limit a function to be only called by a certain function. For example you can limit Files.Delete to a script which needs deleting files, but disallow it for all other scripts.

See also an older blog post: Shared FileMaker Server Hosting and Plugin Security

Windows Touch Events

As you may know you can use Xojo for applications running on Windows tables with x86 CPU. You may design your user interface with big buttons and the user can use the application with touch instead of a mouse pointer. Windows may even show a keyboard on screen to enter text for your text fields. Windows provides mouse events for you automatically.

Now you may need more and our WinPointerEventsMBS, WinGestureConfigMBS, WinGestureInfoMBS and WinPointerInfoMBS classes can help you. We actually have two interfaces there united. First, we have gesture events for Windows 7 and newer. You can get gestures like rotate, two finder tap, zoom and pan. Second, we have for Windows 8/8.1 or newer the pointer API wrapped, so you can get events from a pointer device. The device can be a mouse, a pen or a finger.

To use those events, you subclass WinPointerEventsMBS class and add events as needed. This includes events for receiving pointer and gesture events. You instantiate your subclass and pass to constructor the reference to the one window you like to receive events from. The plugin will attach to the window and redirect events to the class. Please use one instance of your subclass per window.

Next you can use WinGestureConfigMBS class objects to register for gestures and specify which gestures you support. Our sample application registers for all gestures to show you what is detected. But if you need only one or two gesture types, you may increase detection rate for your gesture types if you clearly state you are not expecting some others.

So you may see pointer events coming in. First, we have events like PointerInRange and PointerOutOfRange to let you know when a pen is coming or leaving screen. PointerDeviceChange informs you about changes to the configuration, e.g. about orientation changes. When device enters your window, you get PointerEnter events and PointerLeave event, when it leaves. While the pointer is over your window, you may receive down and up events as well as update for movement. Each event brings WinPointerInfoMBS object to describe the event with details.

So while mouse events in Xojo are good for most applications, you can make the extra effort to support pointer devices for Windows and get more details on touch events.

If needed we could add more, e.g. to query pressure for touch events or tilt for a pen.

Layout IDs in FileMaker with MBS Plugin

Next MBS FileMaker Plugin will have an option to show Layout IDs in the Layout Management dialog:

Of course I added new SyntaxColoring functions to enable or disable this by script as well as a preference dialog option for those who don't like this.
If the same name is used for several layouts, the plugin will not show the ID as it's not unambiguous.

Coming to the new next MBS Plugin prerelease in a few days. Or email for an early test copy.
Works fine in FileMaker 11 to 16 here.

Just four weeks till Xojo Training and Conference in London

Monkeybread Software is pleased to announce to host a little MBS Xojo Developer Conference. We meet once again in the nice Antoinette Hotel in Wimbledon for a meeting day and a training day.

We have a Xojo training day on 9th November 2017. We talk a close look on Xojo and show you in little projects how to work with advanced Xojo language features, databases, sockets and threads. Please bring your own ideas and topic wishes to be added to schedule.

On 10th November 2017, we meet with Xojo developers from all over UK to talk about Xojo on our conference day. We have a few nice sessions in the pipeline for you. We will soon add more sessions, so keep an eye on the schedule. If you like to speak, please contact us soon.

If you like to join the events, please register with us. More than 20 people from 7 countries are already registered for this event and we also hope to see a lot of people for the dinner on the evenings.

If you like to attend a bigger conference, check out the MBS Xojo Conference planned for September 2018 in Munich.

Data structures in FileMaker with MBS Plugins

MBS Plugin offers a couple of data structures which make scripting in FileMaker more like a programming language. And I know a few of you are keen on writing long scripts with using various plugin provided functions:


For years we provide global variables. They are independent of the open file and persists until the current application quits. You can use them everywhere the plugin runs, even on the server. You can store values there from one file and query later from other file. On a server you can set something in a script called by one client and later query in a script called by another client via Perform Script On Server. Of course Server Script Engine process uses a different set of variables than the web direct process.

So you call MBS( "FM.VariableSet" ; "myVar"; "Hello" ) in a script and later query it back using MBS( "FM.VariableGet" ; "myVar" ). The plugin preserves data types, so a container should survive as well as dates and numbers without converting to text. You can also query list of variables, clear them or check if one is defined.


In FileMaker you may be familiar with lists. You can put texts together with new line character to a list. But when using lists you pass around a big block of text. All functions acting on the list must parse the list, do their work and build the big text again.

To speed this up, we created QuickList functions. They allow you to create a list in memory, where the plugin can random access entries and add new values efficiently. It is a list of text and we usually parse it only once, e.g. by passing existing list to QuickList.New function. You can use other functions to add entries via lists, SQL query or values. You can sort, remove duplicates, reverse order, serialize or match with regular expression.

By just skipping the parse/output part, the QuickList functions are usually much faster than our similar List functions, which do use same functions for the core work.


The dictionary functions provide a hash map, so you can store values based on keys. Values are stored in memory and kept with their original data type. Lookup are usually faster than database lookups, as everything is in memory and using binary search to find items.

You can create a dictionary with passing key and value pairs and add entries via SQL requests. We can serialize the dictionary to store it, output to JSON or XML.

Xojo will get 64-bit IDE

Xojo Inc. announced to ship Xojo 2017r3 in 64-bit soon, as you can read on the blog article: The 64-bit Xojo IDE. If you in the beta program*, you may be able to take a look soon on this. The 64-bit version of the IDE can use much more memory and load bigger projects.

A check here with a few huge projects shows the loading time for one of them is down from about 2:40 to 1:30 minutes. This compares a really big project with 32bit vs. 64bit Xojo IDE. Probably due to faster code generated by the LLVM compiler for 64-bit and faster string handling functions.

For the plugins, I expect we have updated plugins ready before 2017r3 ships later this year, so everything should work smooth. I can’t predict if older plugins will work, but I expect to modify my plugins if needed.

The blog post doesn’t say it, but Xojo may drop 32-bit IDE and only allow you to compile 32-bit apps on a 64-bit computer. I have no idea how many Xojo developers still need 32-bit IDE, e.g. running on a Windows 10 in 32-bit. Using the remote debuggers you can still debug on 32-bit, but may no longer run the IDE on it. And you can of course debug a 32-bit app on a 64-bit computer, but no longer debug on a 32-bit computer without remote debugging.

* you can get on the beta program by signing up in your account settings when you have a Pro license.

Arrived in Madrid for FileMaker Conference

To attend the FileMaker conference in Spain, I travelled to Madrid.

If anyone else arrives early, drop me a line and we can enjoy dinner together or chat at the hotel bar.

Big SQLite Cache for 64-bit in Xojo

Whenever you open a SQLite database in your application, please remember to first send this command via SQL Execute:

PRAGMA cache_size = 20000

this will increase the cache. Default is 2000 pages and with a page size of 1024 bytes that's only 2 MB of cache. You can easily set it to 20000 pages on modern computers for 20 MB. This way you increase SQLite performance a lot!

Now the best cache for SQLite is one where the whole database fits in. On the other side if you set cache bigger, it will only grow until the whole database is in memory. So for one of our projects here, we now use 2 GB cache limit for SQLite:

#if Target64Bit then
  db.SQLExecute "PRAGMA cache_size = 2000000" // 2 GB
  db.SQLExecute "PRAGMA cache_size = 20000" // 20 MB

If the database is 10 MB, of course the cache will only be 10 MB. But if the database is 50 MB for a table and this table is queried, it helps a lot of the whole table fits into the cache. And with 64-bit memory is available and you do not risk running out of it soon, so using it for the database cache is a good idea.

This works for SQLiteDatabase, iOSSQLiteDatabase, SQLDatabaseMBS and SQLConnectionMBS in Xojo as well as with our MBS Filemaker Plugin when used with SQLite.

MBS FileMaker Plugin, version 7.5pr2

New in this prerelease of the 7.5 MBS FileMaker Plugin:
  • Added App.GetProcessPath and App.GetProcessName for Linux.
  • Fixed bug with SQLite Prepare command with extra spaces in SQL commands.
  • Added RSA.DecryptPrivateKey and RSA.EncryptPrivateKey functions.
  • Improved RSA.GeneratePrivateKey to allow you to specify algorithm and encrypt keys.
  • Added "Callbacks with Custom Webviewer" example to show how to use JavaScript callback with our custom webviewers.
  • Added MouseCursor.HideUntilMouseMoves function.
  • Fixed problem in List.DeCombine not returning list with first empty element missing.
  • Fixed TinyMCE example for FileMaker 16.
  • Fixed preferences dialog to allow entering of values.
  • Changed copy button in script workspace to replace tab with spaces, so tabs are only used to intent.
  • Fixed a bug with formula coloring to work, if formula starts with "(".
  • Added selector CopyRight for Files.FileInfo to query copyright string on Mac.
  • Improved custom webviews to work with download delegate and policy delegate functions.
  • Changed window finding by window title to fall back to prefix matching if the exact window title is not found.
  • Enabled P12 files for certificates in CURL for Windows.
  • Updated CURL library to version 7.56.0.
  • Changed WebView.InstallCallback to work in FMP 16 with WebView.Create.
  • Fixed problem for iOS where registration for remote notification would not always happen.
  • Put back in iOS plugin, which was missing for 7.4.
  • Added FileName parameter to FM.ScriptNameForScriptID, FM.ScriptIDForScriptName and FM.ScriptNames.
Download at or ask for being added to the dropbox shared folder.

PS: I uploaded a newer disk image including iOS Plugin which was missing. Sorry.

MBS Xojo Plugins, version 17.5pr2

New in this prerelease of the 17.5 plugins:
  • Fixed leaked file handle in MimeEmailMBS constructor.
  • Improved SpotLightFileInfoMBS to support newer interface and query with newer Spotlight plugins. Can now return HTML preview for emails.
  • Fixed bug with SQLite Prepare command with extra spaces in SQL commands.
  • Improved OpenSSLMBS.GeneratePrivateKey to allow you to specify algorithm and encrypt keys.
  • Fixed console applications to no longer initialize NSApplication.
  • Enabled P12 files for certificates in CURL for Windows.
  • Updated CURL library to version 7.56.0.
  • Added overlay methods to CustomPDFViewMBS class and PDFViewControlMBS control.
  • Added MT methods to XLBookMBS class to load/save thread friendly.
  • Changed NSViewMBS constructors to raise exception if called on Windows.
Or ask us to be added to our shared Dropbox folder.

Reise in die Schweiz zu FileMaker und Xojo Entwickler Treffen

Wieder mal bin ich in der Schweiz, u.a. zum FileMaker Experience Event am 21. November in Meilen.

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.

Für Xojo Entwickler organisiere ich gerne noch einen Stammtisch: Doodle Umfrage

Alle FileMaker Entwickler sind natürlich gerne eingeladen mit nach Meilen zu kommen, wo ich auch gerne die ein oder andere MBS Plugin Funktion zeige. Mal sehen, was es in einem Monat alles neues gibt!

Conference discount offer

As usual with every conference we offer licenses at a discount to conference attendees: 20% on everything.

You can find the coupon code on our flyers at the booth. The coupon code is valid till end of October and can be used with the Share-It web store.
For PayPal or orders using invoices, we will create individual invoices on request.

If you don't have a flyer and you attend one of the current conferences, you can always email us a picture of the badge as proof to get the coupon.
Please note that the discount is to help attendees to get a bigger return of investment out of the conference trip.

MBS Plugin Stand bei der FMK 2017

Falls Sie eine Frage haben zum MBS FileMaker Plugin haben oder sich einmal darüber informieren möchten, so kommen Sie bitte am Stand vorbei:

Man sieht sich!

FileMaker Pro, Server and Go in version 16.0.3

FileMaker Inc. just released a new version of their products:

See details for FileMaker Server 16.0.3, FileMaker Go 16.0.3 and FileMaker Pro 16.0.3.

Fixes include the problems with lost scripts when committing a record after a reconnect. And of course a couple more fixes.

The installation of the update is highly recommended to all users of FileMaker 16 to avoid the problem mentioned above!

Detect PrinterSetup data format

As you may know Xojo 2016r4 to 2017r2 made a move to use DirectDraw for printing. Xojo 2016r3 and older use DEVMODE structure to describe the printer setup in the ANSI version. Xojo 2016r4 and newer use the unicode version. You run into problems if you use an older SetupString with newer Xojo versions. Sadly Xojo missed to increment the version number in their string to ignore older setup strings automatically!

While the exact format of SetupString is not published, you can see it’s text with an embedded binary part. One of the values listed is DevModeStructureSizePS which shows the size of the binary data. Values are for example 1292 for older format and 1356 for newer format of the same printer. Please note the format can be printer specific and change depending on which fields are checked in the printer dialog!

In the byte stream you see first 32 characters in both versions, either unicode (64 bytes!) or ANSI text. Followed is the spec version &h0401 for Windows 2000 and newer. Next value is driver version. The following field is the size of the structure, not including any private, driver-specified data. This value can be &h00DC for size of DEVMODEW structure for Xojo 2017r2 and &h009C for size of DEVMODEA structure for Xojo 2016r3. The next number is the driver’s data size in bytes, e.g. &h0470 for my printer in both cases. If you sum it up, you get &h054C and &h50C, which are exactly the sizes above.

To detect the format of a setup string, you can do the following: You find the string DevModeStructurePS= in the setup string. If you don’t have it, this is an incomplete setup string, e.g. from a new PrinterSetup object and you can simply use it. But if you find it, you look in the binary data, if you find the bytes &h01 and &h04 exactly 32 or 64 bytes after the start of the binary data. Skipping two bytes the next two bytes should be &hDC &h00 for Xojo 2017r2 and &h9C &h00 for Xojo 2016r3.

Implementing the proper function to test a setup string is left as homework to the reader.

PS: If SetupString odes not start with "DoNotAlterThis=SetupString.2" or you are not on TargetWindows, you should not touch it as that may be a new future format.

PPS: The WindowsDeviceModeMBS class in MBS Win Plugin can help to convert from ANSI to Unicode and back if needed.

Arrived in Salzburg

Arrived in Salzburg for German FileMaker Konferenz:

See you all there!

Plugin Reorganization Summary

With last release we reorganized the Xojo plugins a little bit.

First, we renamed a few plugins

Plugin PartRenamed to

This makes it more clear that all those plugins are for Mac.

Second, we removed QuickTime and QTKit plugin parts, as Apple deprecated them years ago and Xojo dropped support for QuickTime long ago.

Third, we merged some plugin into others:

Plugin PartMoved to

This reduced the number of plugins a lot.

We moved few parts to new plugins, e.g. CoreAnimation and ImageKit classes. This way we reduced the dependencies between plugins.

In general the reorganization was well received and no class was missing even as we removed 5% of the plugin parts.

FileMaker Conference .fmp[x]Berlin 2018

We just got announcement for the FileMaker Conference .fmp[x]Berlin 2018.

This conference is organized by Egbert Friedrich and takes place from 7th to 9th June 2018 in Berlin, Germany.

As the conference is in english, this is your chance to meet people from around the world at a conference in Europe. And for a lot of people it's easier to get to Berlin than to cross the atlantic and deal with US immigration officers.

dotfmp is an effort of various leading European FileMaker Developers. It is meant to bring all kinds of higher level developers together to share knowledge, educate and challenge each other.
dotfmp starts at the 6th June 2018 in the later afternoon with a relaxed "Beer and Sausages" in one of the most famous Berlin Beergarden.The session days itself last from 7th until 9th June with various socialising events in the evenings. Additionally we offer support on 10th June to see more from Berlin and its surroundings.
dotfmp is a 3 Day-Unconference, Meetup, Hangout or Barcamp. It is an informal and self-organized effort to meet on a personal base.
dotfmp takes place in one of the most famous spots in Berlin. The GLS Campus is located in a vibrant area with a very short walking distance to all the famous restaurants.
We feel there are far too few possibilities to talk to, learn from, and hangout with fellow developers in a relaxed and informal environment. And we'd like to share work and get feedback from people chewing on similar challenges.

If you like to join the conference and present something, please register soon.

Xojo Forum now with 18000 members

The Xojo forum has been growing over the last years.

Since June 2013, the new forum is growing with content and it got huge.
The old Real Studio forum had 7542 members and 45738 topics and needed twelve years for that.

But the new Xojo forum got over double the members in a fraction of the time.
With now 18000 members and over 40000 conversations, it got the much more posts: 341349 postings vs. 265843. And only 9% are from Michel Bujardet, the current top poster.

Congratulations to the community for such a vital forum!

Click on a container to set points in FileMaker

Here is a nice example database to show how to make clicks on a PDF:

So first we render PDF to an image using DynaPDF functions. Than user can click on image inside a container to set a point. We draw the point with our GraphicsMagick functions in MBS Plugin and build a list of records for the points.

Later those points could be used to draw them on a new PDF with existing PDF in background.
Maybe this is useful for you? I'll include it with next plugins (or email me for a copy)

MBS Xojo Plugins, version 17.5pr1

New in this prerelease of the 17.5 plugins:
  • Added ReplaceICCProfileEx, ReplaceImage and ReplaceImageEx to DynaPDFMBS class.
  • Updated DynaPDF to version version
  • Updated XL Plugin for ARM 32-bit to use LibXl 3.8.1, too.
  • Fixed TagLibFileRefMBS to work on Windows.
  • Updated LCMS library to version 2.9rc1.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 7.5pr1

New in this prerelease of the 7.5 MBS FileMaker Plugin:
  • Added DynaPDF.ReplaceImage function.
  • Fixed bug with DynaPDF.GetImage function complaining about non decompressed image.
  • Added DynaPDF.GetReplaceICCProfileData and DynaPDF.SetReplaceICCProfileData.
  • Changed trace file to be UTF-8 with BOM and LF as end of line on Mac and Linux.
  • Changed trace file to be UTF-16 with BOM and CRLF as end of line on Windows.
  • Updated DynaPDF to version version
  • Added QuickList.DeCombine function.
  • Added fix to avoid crashes with FileMaker 12 on macOS Sierra related to removing observers.
  • Added List.SubList and QuickList.SubList functions.
  • Changed error notifications to only show maximum 5 of them and remove them automatically after 5 minutes.
  • Changed variable error notifications to be removed automatically when you typed correct name.
  • Added iOS support for JavaScript functions.
  • The column for script IDs is now a bit narrower.
  • Updated LCMS library to version 2.9rc1.
Download at or ask for being added to the dropbox shared folder.

PS: I uploaded a newer disk image including iOS Plugin which was missing. Sorry.


It’s Thanksgiving this weekend in Germany. Time to say thank you to all the good things that happen in live. Thanks for the wife and three healthy kids, thanks for having a great job and thanks to you my customers, who keep this company running.

Thanks for my father's colleagues who recommend him to buy a Mac 20 years ago. Thanks to Geoff for buying CrossBasic, making it REALbasic and thanks for Macwelt magazine to pointing me to it. Thanks for the first customers who hired me in 1999 to code for them, so I started a company in April 2000. Thanks to customers pushing me to learn C++ and writing plugins for Xojo and FileMaker. And thanks to everyone who bought a license. Over the years we can keep doing this, because people support us with their purchases. Thanks to keep me doing this instead of applying for a regular job somewhere to pay my bills.

And thanks for the travel around the world and the conferences. Organizing a conference is a lot of work, so thanks to all people who organize conferences. And of course thanks to everyone leaving their office to go to a conference. Only attending conferences makes them great and keeps them going!

So lets keep this running and see you at conferences in Salzburg, Madrid, London, Montreal, Denver, Munich and wherever another one will be!


Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
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