Happy Easter 2018

Spending a few days in Bavaria (guess which city), before the trips to Hamburg, Stockholm and Denver...

Wir wünschen frohe Ostern

Happy Easter - Buona Pasqua - Feliz Pascua - Joyeuses Pâques

New FM.Loop function

For years we wrote loops in FileMaker scripts to count up from one value to other value and call a plugin function for each time. But that needs always 5 lines for just a simple loop to e.g. fill a table of values. You can loop already by building a custom function with recursion, but that is complicated and can be difficult to debug. And when our scripts use custom functions, they are not as portable, so for the next plugin version we add a FM.Loop function:

MBS( "FM.Loop"; Variable Name; Start Value; End Value; Step Value; Expression )

This function takes the name of variable, can be with zero, one or two $ in the name to make a local, script or global variable. Than you pass a start value (or expression), an end value and the step value. So we start with our variable set to start value. Than we loop while variable <= end value and add step value after each loop. You probably noticed, that this is exactly a FOR loop in other programming tools. For each time, we evaluate the given expression, which can of course reference the variable.

Here an example:

/* variable */ "index";
/* start */ 1;
/* end */ 12;
/* step */ 1;
/* formula */
"MBS(\"DynaPDF.Table.SetCellText\"; $table; $rowNum; index; \"center\"; \"center\"; GetValue($months; index))")

This calls DynaPDF.Table.SetCellText function with values from 1 to 12 and passes the value from $months list. As you may notice, we need to escape quotes in expression here with \" to have FileMaker not get confused.

/* variable */ "index";
/* start */ 1;
/* end */ 31;
/* step */ 1;
/* formula */
"Let([$rowNum = MBS(\"DynaPDF.Table.AddRow\"; $table);
r = MBS(\"DynaPDF.Table.SetCellText\"; $table; $rowNum; 0; \"center\"; \"center\"; index)]; r)")

Second example uses a Let Statement to run two MBS functions. First line defines variable $rowNum with line number and second call to fill first cell with number of the line. This way we create 31 lines with each having the line number in first cell.

/* variable */ "index";
/* start */ 10;
/* end */ 0;
/* step */ -1;
/* formula */

In third example we use the fact, that return value is the list of results of expressions, so this function just returns a list with numbers from 10 down 0.
If the expression causes an error, we return the error and cancel early.

Will come next week in 8.2 plugin pre-release download.

Query all threads in Xojo app

As you may know Xojo has internally a list of all objects, but does not provide an official way to quickly (!) query all thread objects. Of course we could manage ourselves a list of thread objects, but that is inconvenient for projects with a lot of thread subclasses. A few years ago I made a feature request for a threads list: Feedback Case 26912.

As we just needed this today, we got the following function to find all thread objects in memory. We need this in an app to cancel all transfers when the app is quitting:

Function Threads() As Thread() #pragma DisableBackgroundTasks true dim threads() as Thread Dim o as Runtime.ObjectIterator = Runtime.IterateObjects While o.MoveNext dim v as Variant = o.Current if v isa Thread then threads.append v end if Wend return threads End Function

Sadly runtime's IterateObjects method is quite slow as it does some introspection stuff which takes a lot of time (see Feedback case 47148. Probably to filter some objects from the list, which we should not see here. But maybe the method above is still useful for you?

FileMaker Stammtisch in Hamburg am 5. April

Am 5. April treffen sich interessierte FileMaker Entwickler in Hamburg zum Austausch von Neuigkeiten, Erfahrungen und Tipps & Tricks.

Diesmal bin ich wieder mit dabei und zeige gerne was es neues gibt in der aktuellen Version 8.1 und der kommenden Version 8.2 vom MBS Plugin. Gerne beantworte ich auch Fragen vor Ort oder helfe bei Problemen.

Wo: K&K Verlag, Große Brunnenstraße 43, 22763 Hamburg
Wann: Donnerstag, 5. April 2018, ab 19 Uhr

siehe Stammtisch Hamburg Webseite

Würde mich freuen Euch dort zu sehen.

Wenn noch Bedarf ist an Beratung/Schulung/Entwicklungshilfe vor Ort, dann bitte melden wegen Terminvereinbarung.

Xojo Stammtisch in Berlin

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

Wer hat Interesse an einem Xojo Entwicklertreffen am Anfang Juni in Berlin?

Einfach gemütlich zusammen sitzen in einem Restaurant oder Biergarten 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 in die Umfrage hier: Berlin Stammtisch

FileMaker Conference .fmp[x]Berlin 2018

Did you sign up for FileMaker Conference .fmp[x]Berlin 2018?
I am now signed up, so there may be a chance for a MBS plugin presentation.
Let me know what you'd like to see!

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.

Arbed 1.8.7 updated for Xojo 2018r1

Thomas Tempelmann recently announced a new version of Arbed. As Xojo evolves over time and changes the file format, Arbed as to be updated to recognize any changes in the format. The new version knows about the most recent changes in the upcoming Xojo 2018r1.

Every Xojo developer should have it in his tool chain and enjoy the features. It has many features and depending on your needs, you may decide which feature is worth the price. For myself i mostly use it to automatically convert my example projects to HTML files to include them in the documentation. In other cases Arbed helped to recover corrupted project files and to compare two versions of a project which have been modified independently without version tracking software. It is also useful to bundle a project with all required files if you need to send a project to a client.

Arbed is highly automatable and can be scripted. You can call it from command line in your shell scripts to do various actions in batch operations. If you need, you can use it to obfuscate strings (e.g. SQL queries) in your application or prepare it for localization. Anything automated which saves a few hours is worth the money.

Arbed is available on tempel.org for $29 or $89 USD.

CURL birthday and conference

Today CURL library and command line tool turns 20 years old. It's a long time in software business and a great success with curl on nearly every computer device on earth as it ships for example with MacOS, Google Chrome, Linux, Android and others.

Since January 2007 and the MBS Xojo Plugin 7.0, we do include CURL for up- and download via ftp/http.

Since January 2012 and the MBS FileMaker Plugin 2.5, we include CURL functions for FileMaker.

And as far as I see, FileMaker Inc. added CURL right to the database engine with version 11 of FileMaker, but only added CURL options for Insert From URL script step with version 16.

See blog post from Daniel Stenberg.

For mid April we have the CURL conference on the agenda in Stockholm. Please join it if you like to learn more about CURL. See announcement and wiki page.

Interested in a meeting for FileMaker or Xojo?
See blog post for FileMaker meeting and Xojo meeting in Stockholm.

Under the Radar Podcast

Over the last year I enjoyed listening to all of the episodes of the Under the Radar podcast.

Originally pointed to by Paul Lefebvre's tweet, I quickly subscribed as they talk about various topics for independent app developers and those episodes are very interesting. They face similar issues as myself and so I like to hear their solutions.

Thanks to David Smith and Marco Arment for their apps and the podcast.

And thanks to Xojo Inc. for supporting the shows. Xojo is sponsor for the current episode #123: WWDC 2018 Preview, Watch Stats. And you can get a 20% off for Xojo licenses with coupon code RADAR2018.

Do you like this podcast?

PS: Coupon code updated.

FileMaker Spanish Devcon 2018

In October all around Europe are conferences for FileMaker. This year there is the second Spanish conference:

26th to 27th October 2018 in Madrid. See Website
You can now sign up as speaker or sponsor.

MBS Plugin classes for use on Raspberry Pi

Did you know we compile all our plugins to run on Raspberry Pi, too?

Of course classes for Mac and Windows will do nothing on Linux, but you can still have them in the code and they will not cause compile errors. This allows cross compilations from Mac to Linux or other way around.

The following MBS Plugins can be used on a Raspberry Pi:
And in the documentation, you can click on a list of classes and than click on the Linux platform, which hides all the classes that won't work on Linux.
The Linux plugin includes the RaspberryPiCameraMBS class to get pictures on a Raspberry Pi camera, the avahi classes for finding devices on the local network, the GTK window classes, the WebKit HTMLViewer extensions and help for sudo. Enjoy!

MBS Workshop in Malbun bei der FileMaker Konferenz

In Zusammenarbeit mit dem Verein FM Konferenz bieten wir eine Schulung zum MBS Plugin an. Am 17. Oktober 2018 können Sie in Malbun, Liechtenstein an einer eintägigen Schulung teilnehmen. Lernen Sie die über 5000 Funktionen einmal näher kennen und wie Sie sie effektiv einsetzen. Sammeln Sie Ideen und verbessern Sie ihre FileMaker Lösungen durch den Einsatz unseres Plugins.

Das Monkeybread Software Plugin für FileMaker stellt eine vielseitige Erweiterung der eigenen Datenbank dar. Der Kurs bietet nicht nur einen tiefgreifenden Überblick in die Benutzung und Entwicklung, sondern bietet auch die Chance das Plugin günstiger zu erstehen.
  • Einführung in das MBS Plugin
  • Überblick über die Funktionsbereiche
  • Neues im MBS Plugin dieses Jahr und in der dann aktuellen Version
  • Rundgang durch ausgewählte Beispiele
  • Gemeinsames Implementieren von Plugin Funktionen in eine Datenbank.
    • Upload/Download mit CURL auf einen HTTP/FTP Server
    • Ausfüllen eines Formulars auf einer Webseite
    • Bilder bearbeiten
    • PDF Verarbeitung
    • Druckerfunktionen
    • Barcodes und Zahlungsscheine
    • Einbinden von Webservices with JSON/XML für REST/SOAP.
  • Fragen und Antworten
Die Teilnahme kostet 149 CHF (Frühbucher bis 17. Juni 2018) bzw. 199 CHF inkl. Verpflegung. Trainer ist der Plugin Entwickler und Monkeybread Software Geschäftsführer Christian Schmitz persönlich.

Anmeldung bei Monkeybread Software.

Am Abend vorher treffen wir uns zum gemütlichen Beisammensein im Restaurant vom Konferenzhotel. Im Anschluss an die Schulung können Sie gleich rüber zum Apero gehen und die anderen Teilnehmer kennen lernen.

Check version of FileMaker Plugins on Windows

As you may see, on MacOS we provide metadata about plugin version in Finder's info dialog. But for Windows?

Well, turns out the problem is the file extensions. FileMaker plugins for Windows are technical just DLLs with a special relation to FileMaker application. So if you rename the .fmx or .fmx64 file to .dll, you can see the metadata in the info dialog:

So if you want to know which MBS Plugin version, you have, please use this trick to read the version name.
For Linux, you can run the file as an application in command line. Each plugin from us has a little command line app in the .so files, which prints the version number to the terminal.

Baseball before XDC

If you join the Xojo developer conference in Denver this year, you have the chance to join the Rockies vs Padres, April 24th game right in the Coors Field stadium.

If you like to attend a Major League baseball game on Tuesday, April 24th at 6:40 PM along with other friendly folks, please sign up here:


The stadium is just a few blocks to walk from our confernece hotel. 

Philippe Casgrain is kind enough to buy us a block of tickets to watch the game together.

See forum thread.

Normalize PDF orientation with MBS Plugins and DynaPDF

A client got scanned PDFs and they are sometimes showing rotated in FileMaker's container fields. The reason is simple: They are scanned and marked to be rotated. But preview in FileMaker ignores the orientation metadata (see issue 137094).
To fix this for the client, we wrote the following script. If first page is rotated, we assume this is a PDF which needs to be normalized to have 0° rotation. So we loop over all pages, rotate the pages with a non zero orientation to have one and add them to the new PDF: 
 # Clear current PDF document

Set Variable [ $pdf ; Value: MBS("DynaPDF.New") ] 

# Load PDF from container

Go to Record/Request/Page [ First ]

Set Variable [ $r ; Value: MBS("DynaPDF.OpenPDFFromContainer"; $pdf; Generate Previews::InputPDF) ] 

# Check if first page is rotated

Set Variable [ $rotation ; Value: MBS("DynaPDF.GetImportOrientation"; $pdf; 1) ] 

// Show Custom Dialog [ "Rotation is " & $rotation ] 

If [ $rotation ≠ 0 ] 

# Rotate all pages to 0° if needed

Set Variable [ $page ; Value: 1 ] 

Set Variable [ $pageCount ; Value: MBS( "DynaPDF.GetImportPageCount"; $PDF ) ] 


# Check current page rotatations

Set Variable [ $rotation ; Value: MBS("DynaPDF.GetImportOrientation"; $pdf; $page) ] 

If [ $rotation = 0 ] 

# import as is

Set Variable [ $r ; Value: MBS( "DynaPDF.ImportPDFPage"; $PDF; $page ) ] 


# import and rotate

Set Variable [ $template ; Value: MBS( "DynaPDF.ImportPageAsTemplate"; $PDF; $page ) ] 

Set Variable [ $template ; Value: MBS( "DynaPDF.RotateTemplate"; $pdf; $template; -$Rotation ) ] 

# now put on a new page:

Set Variable [ $r ; Value: MBS( "DynaPDF.AppendPage"; $PDF) ] 

Set Variable [ $w ; Value: MBS( "DynaPDF.GetTemplWidth"; $pdf; $template ) ] 

Set Variable [ $h ; Value: MBS( "DynaPDF.GetTemplHeight"; $pdf; $template ) ] 

Set Variable [ $r ; Value: MBS( "DynaPDF.SetPageWidth"; $PDF; $w) ] 

Set Variable [ $r ; Value: MBS( "DynaPDF.SetPageHeight"; $PDF; $h) ] 

Set Variable [ $r ; Value: MBS( "DynaPDF.PlaceTemplate"; $PDF; $template; 0; 0; $w; $h) ] 

Set Variable [ $r ; Value: MBS( "DynaPDF.EndPage"; $PDF) ] 

End If

# next page

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

Exit Loop If [ $page > $pageCount ] 

End Loop

# Save PDF

Set Field [ Generate Previews::OutputPDF ; MBS("DynaPDF.Save"; $pdf; GetAsText ( Generate Previews::InputPDF )) ] 

End If

Set Variable [ $r ; Value: MBS("DynaPDF.Release"; $pdf) ] 

The resulting PDF has all pages in 0° orientation, so the fact that FileMaker doesn't handle this, is no longer a problem and the PDF shows nicely.
Of course this may not work, if the pages are not marked with correct orientation metadata! 
Requires MBS FileMaker Plugin + DynaPDF Lite. With DynaPDF Pro, the resulting PDFs can include the preview JPEG to show a preview in a non-interactive container on Windows, see DynaPDF.GeneratePreview.
The same can be done in Xojo, see /DynaPDF/Rotate rotated PDF back example project.

Disabled Plugins in FileMaker

Today a client contacted use with the following problem.
Whenever they go to the plugins section in FileMaker Pro, they get an error message and the plugins are greyed out:

and after clicking OK button:

They asked for help, so we checked. Turns out they used assisted install with the option AI_DISABLEPLUGINS=1 in the configuration file. Please use AI_DISABLEPLUGINS=0 if you plan to use plugins like the MBS FileMaker Plugin.

Six months till European MBS Xojo Conference in Munich

The early bird offer is set to expire in today (6 months before conference) for our European MBS Xojo Conference 2018 in Munich. If you like to join for the best rate or become a speaker, please contact us soon.

Already over 25 attendees are registered from six countries and the schedule is filling quickly. Reserve your ticket and reserve your hotel room as soon as possible.

The schedule:

Sep 5th: Xojo Training in English
Sep 6th: Conference, first day with dinner event
Sep 7th: Conference, second day
Sep 8th: Xojo Training in German

We all look forward to Android, new Web Framework other news in the keynote at XDC.

Registration is open. The early bird offer available till 7th March is just 499 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.

FileMaker Pro 16.0.5 Update available

FileMaker Inc. just released the version 16.0.5 for FileMaker Pro (Advanced).

This update fixes a crash with scrolling in FileMaker Pro, which you only see with macOS High Sierra 10.13.

The same problem we fixed a few days ago with the FM.PatchNotificationProblem function. See blog article.

More details in the Support Article 26025 and download here.

We recommend everyone to install this update to avoid the trouble with older versions of FileMaker 16.
The download patches the 16.0.4 version in place, so you may want to duplicate the app before doing the update to have a copy of the old version available in case the update process fails.

As this issue only affected the MacOS desktop software, the update is not available for Windows or FileMaker Server including the FileMaker Cloud.

MBS FileMaker Plugin v8.1 with 5100 Functions In One Plugin

Nickenich, Germany - (March 6th, 2018) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 8.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 8.1 has been updated and now includes over 5100 different functions, and the versatile plugin has gained more new functions:

For years the MBS Plugin offers functions to create a drop area on MacOS. The new version adds support for Windows platform, so you can now use this feature cross platform. You define an area in your layout with a nice picture, e.g. with a drop here message. The user can than drag files from other applications and drop them on your area and trigger your script, which decides what to do with the files. We already supported promised drags on MacOS for files, which are only created on demand when the plugin accepts them. Now on Windows we support file descriptors, which allows to accept drags of virtual files. For example Outlook does provides email attachments on the fly without a temporary file and you can add them to a container field easily.

For MacOS, if you use our syntax highlighting features, you may enjoy a new one. For the database design dialog, the MBS Plugin now optionally adds a search field in the tables and fields lists. You can type a partial text and the plugin searches the list of fields/tables for this text to jump to the line of interest. With pressing return key you can jump to the next place as needed. For huge scripts we now skip variable checking or if/loop block highlighting to improve performance. If you have a Macbook Pro with TouchBar, you can optionally block ESC key and require pressing Option-ESC to trigger ESC and avoid custom function dialog and other dialogs to close too easily.

Our new XML.Validate function can validate a XML document against a given XML schema. The new XML.SetPathXML function allows to add an XML to an existing XML document at a given position.

The new WebView.CreateOnPopover function allows to create a WebKit 1.x web viewer on a popover for MacOS. This allows several web viewers on a popover which can be controlled in detail with our plugin functions.

For ImageCapture's scanner panel we got a new close script trigger, so you get notified when the user closes the window. For ImageCapture.OpenDevice we got a timeout to not block your solution.

The PHP integration in MBS Plugin got an upgrade with new error messages for execution failures.

Our Java loading code has been updated for version 9 of the Java Runtime Environment. You can now use all Java versions from 1.4 to version 9.

Enjoy new barcode options, better email sending, SQL.InsertOrUpdateRecords with multiple primary keys, improved support for connections to SQL Anywhere servers, dictionaries and quick lists with custom identifiers. We prepared for the next FileMaker version and improved CURL.SetupAWS function for Amazon S3 and Dell ECS.

Finally we updated the CURL library to version 7.58.1, DynaPDF to version, LibXL to version 3.8.2, SQLite to version 3.22.0, the JPEG library to version 9c and LibTiff to version 4.0.9 including support for BigTiff format.

See release notes for a complete list of changes.

MonkeyBread Software Releases the MBS Xojo Plugins in version 18.1

Nickenich, Germany (March 6th, 2018) -- Monkeybread Software releases version 18.1 of the MBS plug-in for Xojo.

The MBS plug-in comprises a collection of several plug-in parts which extend the Xojo (Real Studio) development environment with 2,300 classes featuring over 60,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console including 64-bit and ARM targets. Some of the highlights on the 18.1 update:

libusb is a library for C developers, which provides generic access to USB devices. You can use it within your normal applications on various operation systems including Linux, MacOS and Windows. All USB versions from 1.0 to 3.1 are supported. The MBS Xojo USB Plugin now contains the classes to use LibUSB in Xojo. It joins existing classes for HIDAPI to talk to USB HID devices, our classes for smartcard readers and various dongles.

For better compatibility to future MacOS versions, we reduced dependencies to the Carbon frameworks for our 64-bit plugins. 16 of 472 plugin parts still need Carbon framework in 64-bit, e.g. for Apple Events, Carbon Events and Timers.

If you use our PHPMBS class, you can now enjoy getting detailed error messages when execution fails. The callback from PHP to Xojo can now be reached via CallXojo method, which triggers the Callback event.

Our Java loading code has been updated for version 9 of the Java Runtime Environment. You can now use all Java versions from 1.4 to version 9.

The SQL Plugin got improvements with fixes in the exception handling for the Linux ARM target. For prepared statements, we added support for binding dates with the Xojo.Core.Date class. Our plugin now works with both SQL Anywhere API in version 1 and 2. The new Options dictionary for SQLDatabaseMBS, SQLConnectionMBS and SQLCommandMBS allow you to inspect all set options defined for connection or command. Finally connections can now be reused properly.

For MacOS, we got the StoreKit classes updated for new classes in MacOS 10.13.2 and support for offering trials. Several improvements with threading should fix issues you may have seen with Store transactions.

The Cocoa textview and Xojo textarea controls can now use the NSTextListMBS class on MacOS to handle lists within texts. Lists can be ordered or unordered and use various styles. NSParagraphStyleMBS and related classes have been updated to help define proper list styles.

The new WindowsDisplayMBS class allows you to check the available displays on Windows in detail. Beside listing which adapter has which display from which manufacturer, you can now also detect physical size of the display as well as the physical resolution.

Enjoy improved email sending, better channel handling for PictureMBS class, 64-bit upgrade for EncryptMBS class, better MeasureRotatedTextMBS function on Windows and improved CURLSMBS.SetupAWS function for Amazon S3 and Dell ECS.

Finally we updated the CURL library to version 7.58.1, DynaPDF to version, LibXL to version 3.8.2, SQLite to version 3.22.0, the JPEG library to version 9c and LibTiff to version 4.0.9 including support for BigTiff format.

See release notes for a complete list of changes.

MBS FileMaker Plugin 8.1

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

Seit ein paar Jahren bietet das MBS Plugin Drag & Drop Funktionen für MacOS an. Mit der neuen Version unterstützen wir die gleichen Funktionen für Windows. Sie können jetzt bei Mac und Windows einen Drop Bereich auf ein FileMaker Layout legen und Dateien per Drag & Drop annehmen. Ein Skript ihrer Wahl wird gestartet und kann die ankommenden Dateien verarbeiten. Wir unterstützen schon länger Promised Drags, d.h. ein Programm wie Fotos.app schreibt die Dateien erst raus, wenn wir Sie annehmen. Bei Windows funktioniert das ähnlich mit File Deskriptoren. Beispielsweise liefert Outlook Anhänge von Emails erst nach Aufforderung als virtuelle Datei aus und wir können Ihnen die Anhänge als Containerwert geben.

Für MacOS bieten wir einige schöne Erweiterungen für die Entwicklung in FileMaker an und jetzt haben wir etwas neues: Im Datenbank Design Dialog können Sie mit dem neuen Plugin die Liste der Felder und Tabellen durchsuchen. Sie können etwas Text eingeben und das Plugin durchsucht die Liste nach passenden Texten und springt zur ersten passenden Zeile. Mit der Eingabetaste können Sie dann zu den nächsten Fundstellen springen. Für eine besser Performance im Skriptarbeitsbereich schalten wir jetzt automatisch die Überprüfungen für Variablen und Schleifenblöcke für sehr große Skripts aus. Wenn Sie ein Macbook Pro mit TouchBar haben, können Sie optional die ESC Taste in FileMaker deaktivieren und durch Alt-ESC ersetzen. Somit schließen Sie aus versehen weniger Dialoge.

Die neuen XML.Validate Funktion kann ein XML Dokument gegen ein XML Schema validieren und entsprechende Fehler melden. Die neue XML.SetPathXML Funktion fügt ein XML in ein bestehendes XML Dokument ein.

Die neue WebView.CreateOnPopover kann einen WebKit 1.x basierten Web Viewer unter MacOS erzeugen und auf ein Popover platzieren. Den neuen Web Viewer können Sie dann über die Webview Funktionen im MBS Plugin steuern.

Für das ImageCapture Fenster zum Scannen haben wir einen neuen Skripttrigger für das Schließen vom Fenster. Und beim ImageCapture.OpenDevice sorgt ein Timeout dafür, dass ihr Programm nicht ewig wartet.

Die PHP Integration im MBS Plugin wurde verbessert und gibt jetzt auch Fehlermeldungen aus, wenn das Ausführen vom PHP Code nicht erfolgreich war.

Unsere Java Integration kann jetzt auch Version 9 vom Java Runtime Environment laden. So können Sie jetzt von Java 1.4 bis Version 9 alle Java Versionen verwenden.

Freuen Sie sich auf neue Barcode Optionen, besseres Emailversenden, SQL.InsertOrUpdateRecords mit mehrere Primärschlüsseln, leichtere Verbindung zu SQL Anywhere Servern, Dictionaries und QuickList mit eigenen Namen. Wir haben das Plugin für die nächste FileMaker Version angepasst und die CURL.SetupAWS Funktion für Amazon S3 und Dell ECS verbessert.

Außerdem haben wir die CURL Bibliothek auf Version 7.58.1 aktualisiert, DynaPDF auf Version, LibXL auf Version 3.8.2, SQLite auf Version 3.22.0, die JPEG library auf Version 9c und LibTiff auf Version 4.0.9 inklusive der Unterstützung für BigTiff Formate

Alle Änderungen in den Release Notes.

FileMaker Magazin - MBS Artikel

For our German speaking users:

Wir haben die Artikel zum MBS Plugin aus dem FileMaker Magazin gesammelt hier online gestellt: FileMaker Magazin Artikel:

Wir empfehlen allen FileMaker Anwender ein Abo vom Magazin und den Kauf der alten Ausgaben. Das FileMaker Magazin ist eine exzellente Quelle von Informationen, Anleitungen und Profitips.

Have you tried new search feature in MBS Plugin?

Coming for 8.1 release is the new search in tables and fields in the Database Design dialog on MacOS:

As you see, we got to the Database Design dialog in a contacts solution. There we first search for "stat" and later for "city". We can jump from one item to next with pressing return and all the visible text is searched including formulas.

If you like to try, please download 8.1 prerelease or next week the final version.

Microsoft SQL Server connectivity

See newer article: Crossplatform connection to Microsoft SQL Server in Xojo

Sometimes you need to connect to Microsoft SQL Server and you know it's not as easy as with MySQL or PostgreSQL. SQL Server is a bit different which makes trouble and things more difficult.


On Windows we can just connect with "WIN-TEST\SQLEXPRESS@test" here and use Windows authentication. WIN-TEST is the name of the windows machine, SQLEXPRESS the name of the instance of the Microsoft SQL Server. After the @ comes with name of the database.

If we disable Windows authentication and enable login via name and password, define a new login "test" with password "hello123" and than we can just connect on Windows using the following code:

dim con as new SQLDatabaseMBS con.Option("UseAPI") = "ODBC" con.DatabaseName = "SQLServer:WIN-HO9KHI2N15T\SQLEXPRESS@test" con.UserName = "test" con.Password = "hello123" con.Scrollable = false // disabling scrolling cursors is much faster for Microsoft SQL Server... if con.Connect then Msgbox "Connected" Else Msgbox con.ErrorMessage end if
This does work on Windows PC. The same connection also works with TCP/IP as "tcp:\SQLEXPRESS,1433@test". As you see we use IP here and the port 1433 separated by a comma. For this to work, the server must explicitly be configured to allow TCP/IP connections and to listen on the IPs of the server with the given port. This works well from a second PC.


On MacOS, we can use the freetds library. On our website, we have a copy for you to download (http://www.monkeybreadsoftware.de/xojo/download/plugin/Libs/). We can use the ODBC connection type and the libtdsodbc.dylib library file. This library file allows us to make a ODBC style connection directly to the Microsoft SQL Server giving the port, IP and database name:

dim con as new SQLDatabaseMBS con.Option(con.kOptionLibraryODBC) = "/Users/cs/Desktop/libtdsodbc.dylib" con.DatabaseName = "ODBC:DRIVER={FREETDS" + path + "};Server=;Database=test;TDS_VERSION=7.2;Port=1433" con.UserName = "test" con.Password = "hello123" if con.Connect then Msgbox "Connected" Else Msgbox con.ErrorMessage end if

To connect on Linux, we need to install tds for ODBC, e.g. with the command "sudo apt-get install tdsodbc".
dim con as new SQLDatabaseMBS con.DatabaseName = "ODBC:DRIVER={FreeTDS};Server=;Database=test;TDS_VERSION=7.2;Port=1433" con.UserName = "test" con.Password = "hello123"
If you have no odbcinst.ini file in /etc, you can specify the .so library directly in the connection string instead of {FreeTDS}, you would specify libtdsodbc.so directly. If everything works fine, you get your connection and all texts send/received. There is a problem that freetds can be compiled for UTF16 or UTF32 and if it doesn't match your iODBC compilation setting, it will fail to pass any text.

Crashes with FileMaker 16.0.4 with scroll gesture notification

If you saw the thread on the FileMaker Community, you may have noticed that for a few weeks people experience crashes with FileMaker 16.0.4 on MacOS 10.13.3.

Checking the crash reports, you see they all are quite similar and show abort being called to terminate the app due to an unhandled exception:

terminating with uncaught exception of type std::__1::bad_function_call: std::exception

Now if you look on the stack trace, you see the abort is caused due to the invocation of a notification observer. So somewhere in the function CreateNativeViewIfNeeded deep inside FileMaker, they create the scroll view for the window. They attach an observer to listen for a notification. Somehow the related object for the observing block of code is released too early. When a scroll gesture is detected in the Cocoa event handling system, the system calls the method _beginScrollGesture to inform interested observers about the new gesture coming. As the block of code observing is gone already, an C++ Exception is raised, which nobody handles, so the app goes down. The crash report looks like this:

Application Specific Information:
abort() called
terminating with uncaught exception of type std::__1::bad_function_call: std::exception

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff6e66be3e __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff6e7aa150 pthread_kill + 333
2 libsystem_c.dylib 0x00007fff6e5c8312 abort + 127
3 libc++abi.dylib 0x00007fff6c5a3f8f abort_message + 245
4 libc++abi.dylib 0x00007fff6c5a4113 default_terminate_handler() + 241
5 libobjc.A.dylib 0x00007fff6d92eeab _objc_terminate() + 105
6 libc++abi.dylib 0x00007fff6c5bf7c9 std::__terminate(void (*)()) + 8
7 libc++abi.dylib 0x00007fff6c5bf26d __cxa_throw + 121
8 libViewSystem.dylib 0x0000000103e34c17 std::__1::function::operator()() const + 65
9 libViewSystem.dylib 0x0000000103e34bd4 invocation function for block in ScrollView::CreateNativeViewIfNeeded() + 20
10 com.apple.Foundation 0x00007fff48d01330 -[__NSObserver _doit:] + 303
11 com.apple.CoreFoundation 0x00007fff46c1ebbc __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
12 com.apple.CoreFoundation 0x00007fff46c1eaaa _CFXRegistrationPost + 442
13 com.apple.CoreFoundation 0x00007fff46c1e7f2 ___CFXNotificationPost_block_invoke + 50
14 com.apple.CoreFoundation 0x00007fff46bdc670 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1664
15 com.apple.CoreFoundation 0x00007fff46bdb7a3 _CFXNotificationPost + 595
16 com.apple.Foundation 0x00007fff48cc0467 -[NSNotificationCenter postNotificationName:object:userInfo:] + 66
17 com.apple.AppKit 0x00007fff44440470 -[NSScrollView _beginScrollGesture] + 82
18 com.apple.AppKit 0x00007fff4475789d -[NSScrollingBehaviorConcurrentVBL _startGestureScrollWithVBLFilter:] + 130
19 com.apple.AppKit 0x00007fff4443fbcf -[NSScrollingBehaviorConcurrentVBL _scrollView:trackGestureScrollWithEvent:] + 1024
20 com.apple.AppKit 0x00007fff4443ead3 -[NSScrollingBehaviorConcurrentVBL scrollView:scrollWheelWithEvent:] + 549
21 libViewSystem.dylib 0x0000000103e34179 -[VSScrollViewMac scrollWheel:] + 2052
22 libViewSystem.dylib 0x0000000103df7efa -[NativeView_Mac scrollWheel:] + 116
23 com.apple.AppKit 0x00007fff44b20029 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 5040
24 com.apple.AppKit 0x00007fff44b1e85c -[NSWindow(NSEventRouting) sendEvent:] + 497
25 com.filemaker.client.pro12 0x00000001022561cb -[FMDocWindowCocoa sendEvent:] + 1221
26 com.apple.AppKit 0x00007fff4497fed3 -[NSApplication(NSEvent) sendEvent:] + 2543
27 com.filemaker.client.pro12 0x0000000101f73756 -[FMCocoaApplication sendEvent:] + 329
28 com.apple.AppKit 0x00007fff441e0d9d -[NSApplication run] + 812
29 com.filemaker.client.pro12 0x0000000101f73956 CMacApp_Main + 497
30 com.filemaker.client.pro12 0x0000000102039a73 main + 49
31 libdyld.dylib 0x00007fff6e51c115 start + 1

This looks like a little bug in FileMaker 16.0.4, where an object reference for the code block is not retained properly and kept as long as the window is alive. We expect this to be fixed soon with a 16.0.5 update.

For our MBS Plugin we prepared a workaround for you. By calling our new function FM.PatchNotificationProblem, you can let the plugin filter all notification. So whenever the _beginScrollGesture (or related methods) send a notification like NSScrollViewWillStartLiveScrollNotification, we can ignore it, so no observer is notified and nothing crashes.

Once FileMaker 16.0.5 will come out, the problem is gone and we can remove the function again...

If you like to try this plugin function, please contact us soon.

PS: New plugin uploaded with newer version of 8.1pr6 disk image.

MBS Xojo Plugins, version 18.1pr6

New in this prerelease of the 18.1 plugins:
  • Added check for PictureMBS.DataStringInFormat to raise exception if you try to request too big memory blocks.
  • Added LogPixelsY and LogPixelsX properties for WindowsDisplayMBS class.
  • Reduced plugins linking to Carbon framework for 64-bit.
  • Changed WindowGroupMBS class to raise exception if used in Cocoa project.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 8.1pr6

New in this prerelease of version 8.1 of the MBS FileMaker Plugin:
  • Fixed Trace function to ignore extra parameters, if more than 2 passed.
  • Disabled variable checking for scripts with > 2000 lines to avoid performance hit.
  • Limit search for Loop/If boundaries to 200 rows to avoid performance hit in script workspace with huge scripts.
  • Improved variable check to detect undefined variable in variable repetition count.
  • Fixed JSON.GetPathItem returning numbers with dot incorrectly for non-english localization. Broken in 7.5.
  • Added RefNum parameter to QuickList.New.
  • Added Dictionary.CreateNamed function.
  • Known issue: Zip functions broken on Linux.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

xDev Magazine Issue 16.2

The March/April (16.2) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Motor Control by Eugene Dakin
Have you ever wanted to control a motor with a Raspberry Pi? In this tutorial, Eugene shows you how to do it.

Making PDFs by Marc Zeedar
Converting documents from one format to another is complicated. Why not let a web service handle the dirty details for you? It's cross-platform and your users won't care how you do it. Convert from Markdown or HTML to PDF and other formats.

Scripting Stock Prices with Xojo by Marc Zeedar
Just getting stock prices is only the first step -- what do you do with those once you've got them? How about a scripting language that lets you work with that information to create reports and analysis? Check out Marc's StockScripter app.

A Predicate For Data, Part 1 by JC Cruz
Jose starts a new series explaining about data predicates -- what they are and how to incorporate them in your own projects.

Plus: Xojo community, PITR, Xojo encrypting, a custom code formatting script update, and more!


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