We have already put together an archive in one of the previous doors. We would now like to be able to send this archive by email with the click of a button. To do this, we create a button in the mail portal.
When the button is pressed, a dialog is displayed. In this dialog we then set our text and our subject. In addition, we would like to have three buttons here with which we can either Cancel, Send the mail without archive attachment or Send with archive.
To create the dialog we use the functions from the dialog area. With these functions we can freely design our dialog. We can add buttons and fields and even display an icon to give the dialog a nicer look.
(more)
Today we are already on day 11 of our advent calendar. Our little monkey would like to take a look at the region where the recipients live. The best way to do this is to take a look at the map. MBS has the MapView functions for Mac and iOS to display maps from Apple Maps.
To do this, we mark the position where we want to display our map with a rectangle. We name this rectangle Map. Now we want to create our map. We can either use the MapView.CreateWithSize function to place the map with a specific size at specific coordinates on the screen or we can use the MapView.CreateWithControl function and place our map on a control that we have previously placed on your layout. We want to place our map on our rectangle with the name Map. So we use the second option. In the function, we first specify the window in which we want to create this map. As we want to place the button in the same window in which we want to display the map and the window must be the frontmost one, we can enter a 0 for the window index, followed by the name of the control on which we want to place the map. Optionally, we can now enter x and y values by an amount that we would like to move the map in relation to the control. We don't want to do this, so we will leave it out.
Set Variable [ $$Mapview ; Value: MBS("MapView.CreateWithControl"; 0; "Map") ]
Now that we have a map, we want to display the customer's address on the map. To do this, we use the MapView.ShowAddress function to set the focus of our map on the address. In this function, we first enter our Mapview reference and then our address, which we have put together from the street, city, state and country, separated by commas. But we don't just want to display the address, we also want to mark it with a picture of our monkey. We already have this image in the global variable $$Overlay_Image. To mark the point of the address on the map, we use the function MapView.AddPoint. We pass this function a JSON with the information about this point. We have already seen how a JSON is structured on day 8.
Now we create new information in an empty object with the functions JSON.AddStringToObject and JSON.AddNumberToObject. In these two functions, we first specify the JSON object to which we want to add the information and then the key and the value. In our case, we want to specify the address, the title of the annotation, the image of the annotation and the size of this image in the JSON. For our title, we take the first and last name. The title is displayed next to the icon when we move the mouse over it. The part of the script then looks like this:
(more)
As you may know we have a feature where you can add new contextual menu commands to the Script Workspace with our SyntaxColoring.AddContextMenuCommand function. The custom commands can edit script lines, paste some template code or do whatever you like. Read more here Goodies 33: Custom context menu commands and Adding ChatGPT to the ScriptWorkspace context menu
For the next MBS FileMaker Plugin version 14.6 we add the possibility to do the same for the contextual menus in Layout and Browse mode for FileMaker. Just call SyntaxColoring.AddContextMenuCommand with the new flags 16 for browse mode and 32 for layout mode. The plugin will show your custom commands and run whatever you pass as expression if the user selects them. And as usual we store them in the preferences file, so they presist.
(more)
Today Xojo Inc. released the new version of Xojo, their forth release for this year. Let's check what is new.
Release notes - Download
New is support for Windows ARM 64-bit for XojoScript. We waited years for this feature, because it enables Xojo Inc. to make an ARM version of the IDE for Window in the future. That would be great since developers like me use a Macbook with Apple Silicon and use Windows 11 in a VM. Running the Intel version on an ARM chip slows the IDE down a bit. There may be in the future the possibility to also do a Linux ARM IDE version. Then Xojo Inc. may do an universal installer which brings both variants and installs the right one.
Apple asked many years ago to sign applications. Later added notarization to make sure applications are not modified between the developer packaging them and users installing them. While it sometimes causes a bit of hassle for developers, I think this is a great enhancements to prevent a lot of malware. For the last 12 years could get everything done properly with the AppWrapper application or do similar things with a script in Terminal. Xojo 2024r4 has its own settings to do similar things for macOS. While we appreciate to have something finally, I expect a lot of people will still use App Wrapper for more options. And since you also need to sign applications on Windows, you may need to look for something similar for the Windows side.
The new preemptive thread feature in 2024r3 was great, but not perfect. Real world usage of this feature showed a few bottlenecks and Xojo Inc. improved the locking mechanisms to make things run faster.
If you use the IDE for coding you probably enabled things like applying standard case and standardize format options. New in this release is the option to highlight the current row and display matching selections. Basically if you select one variable name, the IDE will highlight other places where these appear. In the background the IDE does a word search for the same text.
If you use SSLSocket, you may like to see the upgrade to TLS v1.3, which helps with newer servers, that require the newer version. And the URLConnection class can now follow redirects, which is convenient as you don't need to code this yourself.
For MBS Xojo Plugins, please use version 24.x with Xojo 2024r2. They work fine together as far as we see.
You find more details in the Xojo 2024r4 Release Notes.
The year 2024 will end in less than three weeks. Do you need some more licenses?
- You can order licenses for 2025 or later and have invoice, delivery and payment done in 2024.
This way you secure the current pricing and the possibility to keep upgradeability for older licenses.
- And of course you can order updates for several years in advance for all your MBS products.
- As all our Xojo and DynaPDF plugin licenses are per developer, you should check if you got a new developer in your team this year and adjust licenses to match team size.
- For MBS FileMaker Plugin please check if you have enough license for the number of seats or servers you have in use.
If you upgrade to unlimited seats or servers, the plugin won't need to check the usage counts.
- For LibXL you can check if you like to upgrade from individual developer licenses to the Enterprise level. We can assist and may apply a special upgrade price.
Especially if you run on a budget and you want to spend some money in the old year, you can buy updates for several years in advance.
If you need help to decide what Xojo, FileMaker or plugin license you need, we may be able to assist you.
New in this prerelease of the 24.6 plugins:
Download:
monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared DropBox folder.
You can subscribe to our Xojo mailing list to get notified for new pre-release and release versions.
New in this prerelease of version 14.6 of the
MBS FileMaker Plugin:
- Improved stack printing for Windows to help debugging issues.
- Updated SQLite to version 3.47.2.
- Improved SyntaxColoring.AddContextMenuCommand function to allow them to show in browse and layout mode.
- Fixed crash in DuckDB client for SQL functions.
- Added a sort feature to the plugin for the Show Window list.
- Added Archive.IsOpen function.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
If you have a lot of databases in FileMaker and not all windows are visible, you are certainly a power user with a huge database project. And whenever you go to the window menu to show a window, you have to scan the list to find the one you like. To make live easier, the MBS Plugin now sorts this starting with 14.6pr3 later this week.
As you see we just sort the menu entries in place if the plugin is installed. Enjoy!
Available for macOS only in MBS Plugin 14.6pr3 and later.
Our monkey likes to have things together in a compact form.
For this reason, it also likes archives and would like to have
the option of creating an archive from the children's information and the individual files in the portal.
We want to implement this now.
(more)
The last weeks, I have been looking for where some crashes in some code happen. You know, somewhere in a big app you have a crash, but not stack trace to figure it out.
So we have the CallDelegateCrashSafeMBS method, which is great to handle this. If you know something may crash, just call it through CallDelegateCrashSafeMBS like this:
CallDelegateCrashSafeMBS AddressOf test
This function takes extra care to catch crashes on a low level and raise a Xojo exception, so you may have a chance to see something in the debugger. I write may as the application crashed and we have no idea in which condition the application is. But we can try to show you the location with the exception.
(more)
|
|
|
Day 8 - Weather data with JSON |
Today is day 8 of our advent calendar and winter is getting a bit chilly for our monkey. To avoid any surprises at Christmas, he wants to be able to call up the current temperature and weather conditions for each customer in FileMaker.
We would like to retrieve the weather data from a weather database. The weather data can be found on the website openweathermap.org. A few years ago we already made a video about how we implement this with FileMaker nativ functions. Today I would like to show you how this works with the JSON functions of MBS. These have the advantage that they can work very quickly, even with large amounts of data.
(more)
Many customers in Germany are currently interested in the topic of electronic invoices. With the MBS FileMaker Plugin and the DynaPDF functions, we can help you to implement this in FileMaker solutions.
ZUGFeRD
If you are looking into the topic of e-invoicing, then you should read on the website of the Forum elektronische Rechnung Deutschland what ZUGFeRD, what XRechnung and what Factur-XX is.
Then download the current standard: ZUGFeRD 2.3.2. In the download you will find the specification for ZUGFeRD (and Factur-X). There are also various code lists, schema files and many sample invoices.
(more)
|
|
|
Door 7 - Open Files With Roundabout Route Via Temporary Files |
Welcome to day 7 of our advent calendar. Today we would like to add a function to our document portal from day 3. So far we can add documents to this portal via drag and drop, what we are missing now is the possibility to open them from FileMaker.
To do this, we use the MBS function Files.LaunchFile. We can pass a path to this function and the file or folder located at this path is then launched with the standard program provided for this purpose.
But we realize now that we have a container value and no path, how do we do this now? You could perhaps come up with the idea of writing the path to a field when reading it in. This procedure becomes problematic, if we move the original file to a new location and the path is no longer correct. So we have to take a different way. We save the file in the temporary folder and display it from there.
To do this, we first create the path where we want to save the file. We determine the temporary folder with the Folders.UserTemporary function. In the Folders area, we also have further functions for other special folders such as Desktop, Applications or Documents.
Once we have the path to this folder, we still need to append the file name with the correct file extension. The file name is made up of the primary key and the file name. The file name already contains the file extension. We now put together this determined file name with the Path.AddPathComponent function, specifying our temporary path in the parameters.
(more)
|
|
|
Door 6 - Sending Out Wishlist Forms |
Today it is time for us to take care of the wish lists of the giftees. We want to prepare a form that we send by e-mail to the giftees, who fill out this form. In a later door we can then read this information from our returned document.
To do this, we first create the template we want to send. To do this, we first need a simple PDF file on which we can position our fields. We have the option of either building this form with DynaPDF, or we can use a pre-designed PDF in which we create fields. I chose this method now. The document was created with Pages and then output as a PDF via the print settings. We want to write several labels in this file. The labels are not only important for the labeling, so that the customer knows which data is to be entered there, but also for positioning the form fields. We want to position these behind the labels.
Now we have everything we need to create our template.
Since we are working with DynaPDF, we first have to initialize it again, as we already explained in door 4.
If [ MBS("DynaPDF.IsInitialized")=0 ]
Perform Script [ Specified: From list ; "InitDynaPDF" ; Parameter: ]
End If
(more)
New in this prerelease of the 24.6 plugins:
- Removed the dependency on VCRUNTIME140_1.DLL for TagLib plugin part. Appeared back in pr1.
- Updated DynaPDF to version 4.0.95.269.
- Added GetLastTextPosYAbs and GetLastTextPosXAbs functions to DynaPDFMBS class.
- Improved freeing objects in threaded code for Windows, e.g. for Bluetooth, Store, OCR and PDF classes in WinFrameworks plugin.
- Improved trace logging in DynaPDF Plugin to include more DynaPDF objects.
- Fixed memory leak with DynaPDFBitmapMBS class destructor leaking a memoryblock.
- Fixed memory leak with DynaPDFOptimizeParamsMBS class destructor leaking an array.
Download:
monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared DropBox folder.
You can subscribe to our Xojo mailing list to get notified for new pre-release and release versions.
New in this prerelease of version 14.6 of the
MBS FileMaker Plugin:
- Removed the dependency on VCRUNTIME140_1.DLL. Appeared back in pr1.
- Updated DynaPDF to version 4.0.95.269.
- Added DynaPDF.GetLastTextPosXAbs and DynaPDF.GetLastTextPosYAbs functions.
- Improved XML.SetPathValue to not create duplicate nodes when finding them using namespaces.
- Tuned formatting of calculations to break behind and/or for long lines.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
Today is day 5 of our calendar and our monkey has a few calls to make on his iPhone. He just doesn't want to keep typing in the number and searching for the customer. It would be much easier if he could simply save the specific contacts in Apple Contacts with the touch of a button. That's no problem, because as a Mac user you can read and write data in Apple Contacts. We use our Contacts functions for this.
But before we can start, we first need to be able to assign phone numbers and email addresses to our contacts. Until now, this was very complicated because we had to leave the giftee layout and enter the data in the respective layouts of the tables. We would now like to change this. To do this, we go to our relationship diagram and double-click on the equal sign between our phone and giftee relationship. Then the Edit Relationship dialog opens and we can make settings.
Here we can decide whether we can delete or create data records via this relationship. To do this, we can make a choice in the checkboxes at the bottom. We tick Allow creation of records in this table via this relationship and Delete related records in this table when a record is deleted in the other table for the Telphone table. This allows us to create records in our portal and if a gifte is deleted, the associated telephone numbers are also deleted. We now do the same for the mail addresses.
(more)
|
|
|
Door 4 - Add GTC with DynaPDF |
Today I would like to show you a tool that you can use in FileMaker with the MBS FileMaker Plugin: DynaPDF. With DynaPDF you have the possibility to create, edit, merge, analyze or sign PDF documents in FileMaker. DynaPDF offers you many possibilities around the topic of PDF.
Our monkey also wants to use one of these functionalities today. Because today we want to build the possibility to attach user terms and conditions to a PDF document. The user terms and conditions always remain the same and can be attached to any outgoing document, e.g. an invoice. I will show you how this works today in this door.
First we have to initialize DynaPDF, which means we have to tell FileMaker where the DynaPDF function library is located. The files are automatically delivered with the download of the plugin and can be found in Examples > DynaPDF. The files have the extension dll and dylib. Which of the files you need depends on your operating system. If you want to use DynaPDF on a Mac, you will need the path to the dynapdf.dylib file. If we are working with Windows, it also depends on whether we are working with a 32 or 64 bit version. If you are using FileMaker 19 or higher, this decision is easy, as only a 64 system can be used here. In any case, the library has the extension .dll.
If you are not sure, just put both dll in the same folder and the plugin will grab the file it needs. The next piece of information we need is the DynaPDF license key. If you want to use DynaPDF in your solutions, you need an appropriate DynaPDF license and an MBS FileMaker Plugin license.
There are four different DynaPDF licenses. Which license you need depends mainly on which DynaPDF functions you use. If you need more information, please visit our website to find out which license is right for you. However, we do not necessarily need a license to try it out, but need to live with the watermark.
After we have determined the path to the libraries and the license key, if available, we can now call the DynaPDF.Initialize function. In the parameters we first enter the path to the library and then the license key. If we do not yet have a license key, we pass an empty string here.
(more)
This is the German version. See the English version here.
Viele Kunden interessieren sich im Moment für das Thema elektronische Rechnungen. Mit dem MBS Plugin und den DynaPDF Funktionen können wir Ihnen helfen dies in FileMaker Lösungen und Xojo Anwendungen zu implementieren.
ZUGFeRD
Wenn Sie in das Thema e-Rechnung rein schauen, dann sollten Sie auf der Webeite vom Forum elektronische Rechnung Deutschland einmal lesen, was ZUGFeRD, was XRechnung und was Factur-X ist.
Dann laden Sie sich den aktuellen Standard mal runter: ZUGFeRD 2.3.2. In dem Download finden Sie dann die Spezifikation für ZUGFeRD (und Factur-X). Dazu kommen noch diverse Code Listen, Schema Dateien und viele Musterrechnungen.
(more)