Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.
A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.
We recently added auto complete for MBS function names for 12.1 pre-release, which is really handy. Just type the component name and once you got the right one, maybe with cursor down key, you can press the dot to complete. Then you continue to type and a new auto complete list shows the function names:
Once you got function name and there is not much text following, the MBS FileMaker Plugin will add the parameter names as placeholders. You can directly put in variables with same name or enter some value there.
Available or recent FileMaker versions on macOS in MBS FileMaker Plugin 12.1.
Several people asked for this, so let us add a search feature to our example project. Beside of using ScintillaControlMBS control to show HTML, MySQL or Xojo code, the example now includes a find and replace window:
In Scintilla you not just have a current selection (actually multiple), but also a target range. The target range is used to search and replace text without the user seeing this. We also have a FindText() function to perform a search and return the range where text is found. So you can search and show it in user interface.
Search can be done with various flags:
kFindOptionNone
Default setting is case-insensitive literal match.
kFindOptionMatchCase
A match only occurs with text that matches the case of the search string.
kFindOptionWholeWord
A match only occurs if the characters before and after are not word characters as defined by WordChars property.
kFindOptionWordStart
A match only occurs if the character before is not a word character as defined by WordChars property.
kFindOptionRegExp
The search string should be interpreted as a regular expression. Uses Scintilla's base implementation unless combined with kFindOptionCxx11RegEx to use C++11 version.
When Regular expressions are enabled, you can use the familiar syntax and use \0, \1, \2 and so on in replacement to reference the Nth captured value.
Let's organize some local FileMaker developer meetings for Quebec City and Montreal:
If you live in this part of Canada, or you like to come over from the USA, please join those surveys to find the perfect date between 21st to 26th March 2022:
If you like to join, please add yourself to the survey and contact us soon to put you on the list.
I reserve a table in a nice restaurant and I will be there. You can join and we can shop talk all night. Ask me plugin questions, bring your laptop and show projects.
And of course we discuss latest changes in FileMaker, upcoming conferences and what's new in plugins.
Of course it is possible to arrange private meetings for consulting or training while I am in the city.
Let's organize some local Xojo developer meetings for Quebec City and Montreal:
If you live in this part of Canada, or you like to come over from the USA, please join those surveys to find the perfect date between 21st to 26th March 2022:
If you like to join, please add yourself to the survey and contact us soon to put you on the list.
I reserve a table in a nice restaurant and I will be there. You can join and we can shop talk all night. Ask me plugin questions, bring your laptop and show projects.
And of course we discuss latest changes in Xojo, upcoming conferences and what's new in plugins.
Of course it is possible to arrange private meetings for consulting or training while I am in the city.
Noch vier Monate: Vom 22. bis 24. Juni 2022 findet die elfte deutschsprachige FileMaker Konferenz in Hamburg, Deutschland statt. Das JUFA Hotel Hamburg HafenCity liegt direkt neben dem Ausgang der U-Bahn Station HafenCity Universität, nur drei Stationen vom Hauptbahnhof via U4, so dass sich die Anreise per Bahn empfiehlt. FileMaker Anwender und Entwickler können ihre Teilnahme ab heute buchen.
Anmeldung heute
Bitte melden Sie sich an, wenn Sie Interesse an der Konferenz haben. Im März entscheidet sich, ob die Konferenz statt finden kann. Diese Entscheidung hängt von den Anmeldungen und den aktuellen Corona Regeln ab, also bitte Anmelden. Hotel, Flug oder Bahnreise bitte erst später buchen. Aktuell sind noch Tickets zum Frühbuchertarif zu haben.
Möchten Sie Sponsor oder Sprecher werden?
Aktuell sucht der FMK Verein Vorschläge für interessante Vorträge.
Die Veranstalter vom Verein FM Konferenz erwarten auch 2022 rund 180 Entwickler, Anwender, IT-Fachleute und Entscheidungsträger aus Wirtschaft, Bildung und Verwaltung. Rund um über 25 Fachvorträge und Workshops wird es viel Zeit zum Vernetzen in den gemeinsamen Pausen und beim Abendprogramm geben.
MBS Empfang
Für den Vorabend am 21. Juni 2022 möchten wir alle Teilnehmer der Konferenz begrüßen. Treffen Sie andere Teilnehmer beim MBS Apero, gesponsert von Monkeybread Software.
Bei der Anmeldung zur Konferenz können Sie sich gleich mit dafür anmelden, da wir eine Teilnehmerzahl brauchen für das Hotel.
MBS Plugin Workshop
Wir planen einen Schulungstag für den 21. Juni 2022. Anmeldung bei uns.
Die Teilnahme kostet 199 Euro inkl. Verpflegung und MWSt., 149 Euro bei Anmeldung bis zum 12. März. Falls die Konferenz abgesagt wird, fällt die Schulung automatisch aus.
FileMaker Schnittstellen Workshop – JSON und REST-API
Erobern Sie mit FileMaker das Internet! In einer zweitägigen Schulung zeigt Ihnen FileMaker Experte Bernhard Schulz am 20. und 21. Juni 2022, wie Sie mit FileMaker Bordmitteln über Server-Schnittstellen per REST/JSON mit Fremdsystemen kommunizieren und umfangreiche Daten austauschen. Der Workshop findet direkt vor der FileMaker Konferenz ebenfalls in der HafenCity Hamburg statt.
Did you know you can search styles list in FileMaker on macOS when MBS FileMaker Plugin is installed?
In the layout editor in FileMaker, click on the list of styles to set focus there. Then press command key together with the F key. The search panel shows and you can enter a search term. When you press return, the next item in the list is highlighted.
⌘ F
shows find bar.
⌘ G
goes to next found text.
This is the same search we implemented for other lists like fields, databases, accounts, privileges or layouts. Over 20 lists in the FileMaker user interface can be searched this way.
For styles the ⌘ + and ⌘ - shortcuts won't work as they are caught by the FileMaker menu commands to zoom the whole layout.
We regularly add new versions of Chromium Embedded Framework for WebKit support on Windows. The plugin has now the fifth version included. Depending on what version is reported bei CEF, we can pick the right interface, so you can use the same plugin with various Xojo versions and their related CEF versions.
For MBS Xojo Plugins 22.1 we upgrade our Chromium classes and you can try with 22.1pr4 pre-release version soon. Check out Chromium classes:
If you look for a modern HTMLViewer for Windows, also check our WebView2ControlMBS control for Xojo, which uses current Microsoft Edge browser as engine (based on Chromium).
Last week the new books arrived from XDevMag. Always great to have all the articles from one year of the Xojo Developer Magazine in one book, where you can just browse through when you have some time in your hammock.
We'll give away a few over the year at various Xojo meetings, once they start to take place again.
If you like to get one yourself, you can order them in the XDevMag book store. When you consider ordering them, better pick several years and let them ship together at a package price. There are also academic and subscriber discounts available and shipping from USA or Europe is available.
(more)
Some clients on macOS use Documents in the Cloud with their iCloud account. Files are synchronized with Apple's server and that may take a while, so you can check how many files in a directory are uploading currently:
SharedFunction CountUploadFiles(dir as FolderItem) AsintegerDim count AsIntegerForEach file As FolderItem In dir.Children(False)
Dim url AsNew NSURLMBS(file)
If url.UbiquitousItemIsUploading Then
count = count + 1EndIfIf count > 100ThenExitEndIfNextReturn count
EndFunction
For two applications we now check that and if a lot of files are uploading, we slow down creating files, so the sync process can catch up.
We are happy to announce that we got a new example project for creating ZUGFeRD invoices in FileMaker. Since that is for our German audience, this example is in German.
This is a FileMaker solution to create ZUGFeRD invoices. Since 20th November 2020 electronic invoices with structured data are mandatory for public administrations in Germany.
The NSSwitch class in MacOS provides a nice toggle control for desktop applications. It looks like the iOS counterpart and represents a boolean flag to toggle something on or off:
You can use it with the NSSwitchControlMBS (or DesktopNSSwitchControlMBS) control in Xojo and the view is implemented via NSSwitchMBS class. We have an action event to run when the user changes the value and a State property for code to read/write the current value.
Please try with MBS Xojo Plugins 21.1pr2 and let us know what you think. Your feedback is welcome and will help to improve this control for the next releases.
Here is a list of which FileMaker version includes which CURL version:
FileMaker version
CURL Version
11.0.4
7.19.4
12.0.5
7.21.6
13.0.9
7.21.6
14.0.4
7.38.0
15.0.3
7.44.0
16.0.4
7.51.0
17.0.3
7.58.0
18.0.3
7.62.0
19.0.1
7.62.0
19.1.3
7.62.0
19.2.1
7.62.0
19.3.1
7.62.0
19.3.2
7.62.0
19.4.1
7.62.0
You can learn about CURL releases on the curl website.
Why do we care? Well, if you still use FileMaker before version 16, your FileMaker scripts using Insert From URL are affected by the TLS certificate bugs in older CURL versions. And if certificate verification is not done right, someone can attack your queries, gain your password or provide invalid data to your solution. So please keep FileMaker up to date!
As with MBS Plugin, Claris Inc. also regularly updates the open source libraries used. Usually you do that on the begin of the development cycle, so you have time to find and issues from the newer library version like a bug fix, which changes behavior in a way you didn't intent. e.g. we run into CURL change for email download via IMAP (from 2019).
MBS Plugin 12.0 shipped with version 7.81.0 of curl.
Import images from your flatbed scanner or document feeder. Quite a lot of printers now have built-in scanners to do photo copies.
Record video from your webcam in the computer or from external video camera. Show preview and take pictures.
Import pictures from your DSLR. Have it take a picture manually or every few seconds and download it to FileMaker.
Take pictures with your iPhone Either with an app on the iPhone or by starting the process
For macOS, try ImageCapture functions to receive images from flatbet scanners.
For Windows use WIA functions with Windows Image Acquisition API.
If you have an older device with TWAIN drivers, check the TWAIN functions.
Our AVRecorder functions allow you to check for Audio and Video devices on macOS and Windows, show a preview, start recording and take snapshots.
The IKPictureTaker functions allows you to show a little panel, which can take a picture on macOS for a picture of the user. Same for iOS with ImagePicker functions.
For macOS, use ImageCapture to import images from your digital camera. In tethered mode, send commands to take new pictures.
For Windows, check WinPhotoAcquire functions to import images from your camera.
Your Mac can connect to local iOS devices nearby (same iCloud account) and ask the iPhone, iPad or iPod to take a picture with our ContinuityCamera functions.
Within an app with FileMaker iOS SDK, you can use the DocumentCameraScan functions.
For MBS FileMaker Plugin 12.1, we have new WinPhotoAcquire functions to import images from digital cameras on Windows. You can take your DSLR, take a pictures, connect it to your PC and then directly import images to FileMaker. Our functions use the standard dialogs from Windows to perform the action and give the user the usual Windows workflow.
When you build and run your web app in Xojo, you may wonder how to change all the predefined styles?
Well, first thing would to read in the Xojo documentation and you may find the page Changing the Appearance of Controls. There you can read that you can drop a replacement bootstrap.min.css into the project and Xojo will embed your version.
Since DevCon also known as Claris Engage got cancelled in-person (see announcement) and turns virtually, we still have a few independent in-person conferences run by various Claris partners:
Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.
A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.
Richard Carlton got blown away by Continuity Camera functions in MBS FileMaker Plugin. We then rotate an image and write a plugin installation script.
Our ScintillaControlMBS can be configured to over 100 different lexers to colorize various texts. And today we configure the control for HTML:
Our plugin example comes with a file called LexerConstants.txt with all the constants. For the hypertext lexer we copy the SCE_H_* constants. Since HTML can have embedded JavaScript, VBScript, PHP and Python, we can also copy the following constants until SCE_HPHP_OPERATOR. For each of those styles you can define later an effective style with a specific color. Then we get the list of keywords for html and I just copied it from the html.properties file used for scite. There we can also see what styles the editor uses.
With PropertyNames method in our control you can learn the properties defined by the lexer and for folding html, we turn on the fold, fold.html and fold.hypertext.comment properties. You can do this dynamically if you like. For example query PropertyNames, build checkboxes for them and use DescribeProperty() to get a descriptive text for each property.
The example project will be included with 21.1pr2 in the next days and should be a good start for anyone looking into a good HTML text editor within Xojo. Below a screenshot from Windows as this project can run on macOS, Windows and Linux.
We have clients with lots of custom functions in various FileMaker databases. How would you automate this to track custom functions used in various files?
For MBS FileMaker Plugin 12.1 we got two new functions for this: FM.CustomFunctionsList and FM.QueryCustomFunctionsList. Those functions do a bit of GUI scripting on macOS to get the list. The user needs of course permissions to open the dialog and the menu entry into the menubar for the plugin to click.
The first example script will first trigger the seconds script to run in a second. Make sure the fmplugin extended privilege is checked, so the plugin is allowed to run a script. Once that is set, we run the FM.QueryCustomFunctionsList script to start the plugin function to do its job. The script now has to end, so FileMaker allows the custom functions dialog to show. Here is the complete first script:
# schedule script to read results in a second
Set Variable [ $r ; Value: MBS( "FM.RunScriptLater"; 1; Get(FileName); "show result") ]
# now start query
Set Variable [ $r ; Value: MBS("FM.QueryCustomFunctionsList") ]
If everything works right, the dialog shows for a fraction of a second. The plugin copies the list of the table and stores it internally in a global variable. Then our second script runs, which can use FM.CustomFunctionsList function to query the list:
Set Variable [ $list ; Value: MBS("FM.CustomFunctionsList") ]
Show Custom Dialog [ "results" ; $list) ]
If the list is empty, the function failed to run properly. For example if there is a custom menu and no menu entry to edit the custom functions.
Please try it. It may help you to automatically query the list of custom functions and then write that information into records. A way to monitor which file uses what custom functions. You can use Evaluate() to run those custom functions dynamically. That is of course only useful if you have some global variable or parameter to switch your custom functions to return some metadata like their version.
Have fun and thanks to Nils Waldherr for the idea!
In this article I want to introduce you the new functionalities from the MBS Xojo Plugins in version 22.0.
Scintilla
With the new part Scintilla you get a text code editor at your fingertips.
With the DesktopScintillaControlMBS control and the ScintillaControlMBS control you can integrate the text editor into your solutions.
You can not only write simple texts but also mark special keywords.
Scintilla provides lexers for well-known programming and markup languages, which you can load as needed.
It provides lexers for syntax highlighting in over 100 languages including SQL, JavaScript and HTML.
We added a Xojo lexer to highlight code for XojoScript.
You can also specify your own keywords that will be highlighted in your texts.
Scintilla supports not only the highlighting of words but also features that other script editors have,
such as setting breakpoints or showing and hiding parts of the script for better clarity.
The Advanced Script Editor in your application. Test it out!
We added Phidget classes around 2010 to our MBS Xojo Plugins. We kept that running and various clients used all the old classes for various projects. To keep compatibility we renamed the old classes with a prefix Old, e.g. OldPhidgetMBS.
To support the new Phidget Library with support for Apple Silicon, we created new classes with the modern API. We can put in all the knowledge we got about C++ and Xojo and improve the classes to current standards. We wrap the C API from Phidgets library and so you can always look on their documentation, too.
Our plugin does all memory management automatically for you with allocation of required buffers. We dispatch all events on main thread including the asynchronously APIs and their completion events. You can of course use AddHandler if needed and send events to your delegate methods. We check error codes and raise PhidgetErrorExceptionMBS whenever needed. The exception then has an error message and the error code.