Xojo Developer Magazine

My own and Stefanie's articles in XDevMag.

xDev November/December 2024 | 72 | www.xdevmag.com

I WAS recently at a conference, and all the partici-

Issue 22.6 Website
title page index page article page
pants had a name badge with a QR code on it. When you scanned it, you were taken to a website where you could get the person’s contact information. This gave me the idea for today’s article. But today, I don’t want to show you how to hide a link in a QR code, because we’ve already done that. Instead, I want to show you how you can save the data for a contact as a vCard in a QR code. This way, a smartphone can simply transfer the info directly into a contacts list. by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#22610 Target Reader: Intermediate Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. VCard QR Code Meet someone via QR code or file Figure 1: This is the GUI of the example app.
 

xDev September/October 2024 | 85 | www.xdevmag.com

IN this article, I would like to introduce you to our

Issue 22.5 Website
title page index page article page
overlays from the MBS Xojo plugins. These are areas that you can create on the screen, give them a back- ground, move them as freely as you wish, and use with several mouse events, such as click, enter, or exit. For example, you can mark certain areas in your applications, display notes, and much more. Let's take a look at the overlays using an example. We use the OverlayMBS class for the overlays. Since we want to work with some events of this class later, we first create a class named Overlay, which inherits from the OverlayMBS class. Next, we create a button in our main window that we will use to display our new overlay later. In the code behind the pressed event, we first create a new instance of the class we by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#22508 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She became acquainted with Xojo through the work of her brother-in-law and secured a junior developer position in early 2019 at Monkeybread Software. An Overview of Overlays Using Overlays with MBS Figure 1: A basic Overlay displaying the MBS logo.
 

xDev July/August 2024 | 55 | www.xdevmag.com

IN a previous article in xDev 21.3, I showed you

Issue 22.4 Website
title page index page article page
how you can recognize text under Windows using the built-in OCR functions (http://xdevmag.com/browse/21.3/21304/). Now I would like to show you how you can also work with Mac and iOS using Apple’s Vision built-in functions and the MBS Plugins. You are probably already familiar with Vision from text recognition on your iPhone or Mac if you have an image with text printed on it. You can also use this technology in Xojo with the MBS plugin. Vision can do a bit more than just recognize text, because it can also recognize barcodes or assign images to a specific category. But perhaps more about that in a later Spotlight. Today we would like to concentrate fully on text recognition in an image (see Figure 1). First of all, we have to load the image from where we want to recognize the text into our program. To do this, we used an Open dialog that is located behind the "Load Image" button. After we have loaded our image as a folderitem, this folderitem is passed to a method that we will write up ourselves in a moment. We call this method VisionOCR. In this method, we first open our folderitem and write our image to a variable of type Picture. We now want to continue working with this data type. Dim pic As Picture = Picture.Open(f) by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#22408 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Text Recognition Using Apple’s Vision to Extract Text from an Image
 

xDev May/June 2024 | 91 | www.xdevmag.com

DO you already know about Phidgets?

Issue 22.3 Website
title page index page article page
In this article I will show you what they are all about and how you can use them. In release 22.1 we have added many new classes to the Phidgets topic in our MBS Xojo plugin. Phidgets are small input/output devices from the company Phidgets Inc. that can receive information from the outside world or output it. There are many different Phidgets that you can use. For example, there are various sensors such as humidity, magnetic, light, gyroscope, PH, sound, temperature, capacitive touch or pressure sensors, an LED screen with which you can display information, a slider, a joystick, and much, much more. With the MBS Xojo plugins, we make it possible for you to connect to this hardware in Xojo and exchange values. The Structure To be able to work with the Phidget, we have to connect the Phidget to the computer somehow. We use so-called hubs, which have several ports to connect one or more Phidgets (see Figure 1). The hubs’ ports are numbered. Hubs are available in several versions. On the one hand, these hubs can be connected to the computer by cable, or you can have a wireless hub, which is then connected to the computer via Ethernet or WLAN. In our example, we are using a wired hub. I would now like to demonstrate a small weather station that consists of a light, a barometer, and a temperature sensor. by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#22309 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Phidgets What are they and how to use them
 

xDev January/February 2024 | 66 | www.xdevmag.com

IN this article I would like to show you how you can

Issue 22.2 Website
title page index page article page
determine the position of your device for Mac and Windows. Let’s start with Windows first. For this purpose, we have the Windows Location topic in the plugin. To determine the posi- tion, we need an object based on the WindowsLocationManagerMBS class. For this reason, we create a class in our project that has the WindowsLocationManagerMBS class as a subclass. We start by creating an instance of this class in the LM property. Now we can call the StartEvents method. This method tells the events that they can start working. In this way, we can also work with the LocationChanged event later. Now we have to make a request for access. We do this with the RequestPermissions method and specify the window in the parameter. In our case, we reference the window in which this method is also used. We can then use the ReportStatus property to query the current status and react to it. There are a total of five different statuses that can be returned. We would like to go through these possible statuses in a Select Case statement. In most cases, a text should be output that shows us what the status is to alert us to possible problems. The status we want is Running. If this status is the result, no text should be output. Instead we wait for the LocationChanged event to fire and provide us with the data for our location. This is what the code looks like that we have written behind a button to call up the location. LM = New MyLocationManager by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#22208 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Find Yourself How to determine the location of devices with MBS under Windows and Mac
 

xDev January/February 2024 | 77 | www.xdevmag.com

TODAY we want to start analyzing our

Issue 22.1 Website
title page index page article page
emails. For this we have the EmailParser section in the MBS CURL plugin. First of all, we need our email. You could just export an eml file from your email application. For Apple Mail simply drag an email to the desktop. The constructor of the MimeEmailMBS class can receive it as a MemoryBlock, String, or FolderItem. In this example, we use the FolderItem option. This also allows us to select the desired file in a dialog. Dim d As New OpenFileDialog d.Title = "Load file" d.PromptText = "Select an Email" d.ActionButtonCaption = "Load file" d.AllowMultipleSelections = False Dim MailFile As FolderItem = d.ShowModal After we have the mail as a FolderItem, we can create a new instance of the MimeEmailMBS class. Dim mail As New MimeEmailMBS (MailFile) Now we can start reading the individual pieces of information from the properties. First of all, we want to know what the email is about, so we get the subject from the Subject property. We can also read out when the email was received from the ReceivedDate property. This property by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#22108 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Parse your Mails in Xojo Using EmailParser
 

xDev November/December 2023 | 81 | www.xdevmag.com

DID you know that with the MBS plugins and a

Issue 21.6 Website
title page index page article page
ChartDirector license you can design charts for your application? In this Spotlight column, I will show you how to design linear meters and gauges charts with some examples. Full circle gauges Chart Let’s start with a full circle gauges Chart. We want to display a value on the meter. Let’s assume that our scale can display values from 1 to 100. We now want to enter a value of 55 on this scale. We can store the value (e.g. in our project as a constant). Next we create the environment in which our meter should be displayed. For this we create an object of the class CDAngularMeterMBS. In the constructor, we pass some parameters. We would like to have later a diagram environment which is 200x200 pixels large. For this reason, we indicate the width and the height with 200 in the parameters. The background color should be white. Optionally, you can specify a border color in the parameters. The two colo0r values can be specified either as integer or of type color. by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#21608 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. From 0 to 100 Creating Gauges with MBS and ChartDirector
 

xDev November/December 2023 | 12 | www.xdevmag.com

DID you know that you can convert

Issue 21.6 Website
title page index page article page
a text into a multi-column PDF with a DynaPDF Starter license and Xojo? How this works I will tell you in this article. Let’s start with the structure of our application. In the window there is a Textarea, a button with which we can start the creation of the document, and a textfield in which we can enter the number of columns we want (see Figure 1). Now let’s look at the code behind the button. First we see that we create an instance of a new self-written class called MyDynaPDFMBS and store it in a window property called pdf. The class we use here has DynaPDFMBS as its superclass . We use the new class because we want to fill certain events that the DynaPDFMBS class offers us with code. On the one hand, we fill the event Error with code. This event is called when an error occurs in connection with the class. I won’t go into more detail about error handling in AT A GLANCE XD#21602 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Making Multi-column PDFs with DynaPDF Multi-column PDFs by Stefanie Juchmes (stefanie) F e a t u r e
 

xDev September/October 2023 | 72 | www.xdevmag.com

A BIG innovation we introduced in our MBS

Issue 21.5 Website
title page index page article page
Plugin update in May were the new function- alities for PDFs in interaction with Windows. I would like to show you what the new functions can do in this article. First of all it should be mentioned that the functionality of WindowsPDF does not come close to the possibilities you have with DynaPDF. Nevertheless, the functions can be a useful addition. We have these new classes: WindowsPDFDocumentMBS WindowsPDFExceptionMBS WindowsPDFPageDimensionsMBS WindowsPDFPageMBS WindowsPDFPageRenderOptionsMBS WindowsPDFRectMBS WindowsPDFSizeMBS With the methods of the WindowsPDFDocument class they can first of all load an existing PDF. The source can be a FolderItem, or it can be a file path, memory block, or string. We have two functions for each of these input possibilities, because you can choose between synchronous and asynchro- nous loading. In synchronous loading, we stop our code and wait until the file is loaded. by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#21508 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Windows PDF New MBS classes let you work with PDFS on Windows.
 

xDev July/August 2023 | 64 | www.xdevmag.com

TODAY I want to show you how to

Issue 21.4 Website
title page index page article page
generate a barcode in Xojo. For this we use the class BarcodeGeneratorMBS from the MBS Barcode Plugin for Xojo. First we create an instance. Then we can set the individual properties for this instance. We need to decide what kind of barcode we want to have. We have a choice of over 80 different barcode types. We can set the barcode type in the Symbology property. We can specify the type with a constant or as a number. For example, if we want to create an EAN8 barcode, we can either specify b.BarcodeEan8 or specify a 13 instead. Further, we can specify the scaling. The scaling determines the size of the output image of the barcode. The default value is 1. This is the normal size of the barcode. If you set the value to 2 the lengths will be twice as long, with a 3, three times as long, and so on. Note: We also have width and height properties that we can set for the height and width of the barcode. The problem with that approach is that we don’t have a proportional scaling, but you can set the size of the sides individually. We can also define a border around the barcode. This border is around the actual barcode and has the same background color as the barcode. For some projects it can be useful to use such by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#21408 Target Reader: Beginner Source Code: No About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Create a Barcode Using the MBS plugins to create barcodes
 

xDev May/June 2023 | 66 | www.xdevmag.com

IN this Spotlight article today I would like to introduce

Issue 21.3 Website
title page index page article page
you to the Math section of the MBS Xojo plugins. This section was created for developers who need accurate and fast calculations in their applications. If you are a physicist, mathematician, chemist, or just a math enthusiast, you might be interested in this article. One, Two, Overflow Every number that we store in the computer has a certain length that is fixed. For example, an integer number in Xojo that runs in a 64-bit application can be 8 bytes (8 * 8 = 64 bits) long and have a range of values from -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807. If we enter a value that is not in this range, an overflow will occur and a wrong number will be returned as the result (see Figure 1). Such an overflow can have fatal consequences that must be avoided if you can get results that extend beyond this range. If we use a UInteger we have at least a coverage of posi- tive integers up to 18,446,744,073,709,551,615 but even this is sometimes not enough. For decimal numbers we have two different approaches. On the one hand, the fixed point numbers like the type Currency which allow a maximum of four decimal places and thus go from a range of -922337203685477.5808 to 922337203685477.5807. Here the decimal point sits in a fixed place and cannot be moved. Or we have floating point numbers. These have an enormously high range width with numbers that range between ±1.79769 by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#21307 Target Reader: Beginner Source Code: No About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Large, Big, and Bigger Numbers Working with giant numbers
 

xDev May/June 2023 | 47 | www.xdevmag.com

F e a t u r e

Issue 21.3 Website
title page index page article page
DID you know that Windows 10 has a built-in OCR library? The MBS Xojo Plugins in version 23.1 gives you the possibility to use this built-in text recognition in your applications. We show you how this works in an example that comes with the plugin (see Figure 1). Let’s take a closer look at this now. When we open the Windows OCR example, we see a button at the top that we can use later to load an image file, two checkboxes for options that we will discuss later, and a button that we can use to clear the fields. Below is a textArea and next to it a canvas object. In the textArea we show later the recognized text and in the canvas will be an image on which we draw the recognized text. At the moment we see in the textArea some information on whether your system is suitable for OCR recognition. You can see which languages are available for recognition, how big the AT A GLANCE XD#21304 Target Reader: Beginner Source Code: No About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. by Stefanie Juchmes (stefanie) Working with Windows’ built-in OCR library Windows OCR
 

xDev March/April 2023 | 63 | www.xdevmag.com

FOR the past year we have had functions for

Issue 21.2 Website
title page index page article page
working with XML in the MBS Xojo Plugins. Let me show you how you start with XML by loading some XML, and reading and writing data. What is XML? Xojo has had built-in XML classes for 20 years. We have decided to extend and speed up the XML functionality for you with the MBS plugins. But now first to the question: What is XML actually and why do I need it? XML (Extensible Markup Language) is a markup language with which data can be captured in a very structured way. It is mostly used to exchange data between web services or applications. The data is in a tree structure. That means our data are in nodes which can branch into further levels. The individual levels are indicated and limited by opening and closing tags. Here, for example, we see an XML that contains information about movies. <films> <film director="Guy Hamilton" title="Goldfinger"> <actor> <name>Sean Connery</name> <name>Tania Mallet</name> </actor> </film> <film director="Chris Columbus" title=" Harry Potter and the Philosopher's Stone"> by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#212008 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Using XML with the MBS Plugin XML for Beginners
 

xDev January/February 2023 | 88 | www.xdevmag.com

THE MBS Xojo plugins might be known to many

Issue 21.1 Website
title page index page article page
Xojo users, but did you know that MBS develops a plugin for the FileMaker environment, too? Today I want to show you how you can connect a FileMaker solution with a Xojo application using MongoDB. In this example, we first build an application with FileMaker that stores images in a MongoDB database, which are then assigned categories and the images can then be searched in the Xojo application using the categories. The result is then displayed in the application together with the categories. The special thing about MongoDB is that it is not a relational database based on tables and relationships, but its data has a JSON-like structure. This allows you to make queries that were previously not possible due to the restriction of relationships or table boundaries. The use of MongoDB under FileMaker is possible with the MBS FileMaker Plugin since version 12.3 and under Xojo with the MBS Xojo Plugins in version 22.3. The functionalities of MongoDB used here, find no matter whether in Xojo or FileMaker used, usually the suitable equivalent on the other side. If you want to follow the example, you need a MongoDB server. How to install a local and free version on Mac you can see in this video: https://www.mbsplugins.com/MongoDBen.shtml by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#21109 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. A Mongo DB photo database used with FileMaker and Xojo A Database That Connects
 

xDev January/February 2023 | 18 | www.xdevmag.com

THE beginning of a year is an excellent chance

Issue 21.1 Website
title page index page article page
to take a look at the past, to be aware of where you are, and to make a plan of where you want to go. The MBS Xojo plugins have existed since 2001 and have been developed further every year since then. With every update, more and more functionality is added. Currently, there are 51 plugins. These include 48 plugins that are included in the Complete Set and the special plugins Chart Director, SQL Plugin, and DynaPDF. In the documentation we have currently documented over 80,000 items. We currently have about 3,000 classes and 2,300 example files where you can see how to use the plugins’ functionality. Giving a complete overview of the full set of the plugins would take too long, so in this article today I would like to introduce you to just the latest innovations in the MBS Xojo plugins. AT A GLANCE XD#21104 Target Reader: Beginner Source Code: No About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. What’s up with MonkeyBread Software News from MBS Xojo Plugins by Stefanie Juchmes (stefanie) F e a t u r e
 

xDev November/December 2022 | 65 | www.xdevmag.com

SAY you want to search for email addresses

Issue 20.6 Website
title page index page article page
in some text and extract only these addresses from the text. Or you want to replace all internet addresses with a new internet address of your own. In these cases, regular expressions are a good solution. What regular expressions are and how you can use them in Xojo with the MBS Xojo plugins I will show you in this article. The MBS Xojo plugin uses the PCRE 2 (Perl Compatible Regular Expressions) C-library. This provides us an engine with which we can work with regular expressions. What are regular expressions? With regular expressions you can search for certain patterns in some text or check a string to see if it meets certain criteria. e.g. if the chosen password contains upper and lower case letters, at least one number, one special character, and is at least eight characters long. If we search for something in a text search then we actually are always searching for a regular expression. For example, if we enter the word Miss, then we are really searching for a pattern in the text that looks for the letters M-i-s-s that are next to each other. If we find the word Miss but also the word Mississippi. If we tell the program that we don’t care about upper and lower case letters we might also find the word missed. So we are looking for a pattern where the four letters appear exactly in this order. This is already a regular expression. by Stefanie Juchmes stefanie MBS Spotlight AT A GLANCE XD#20608 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Regular Expressions with Xojo The MBS Plugins has its own RegEx library
 

xDev September/October 2022 | 72 | www.xdevmag.com

DID you know that with the MBS Xojo plugins

Issue 20.5 Website
title page index page article page
and a LibXL license you can read and create Microsoft Excel documents without having Excel installed on your computer? I will show you a small example in this article (see Figure 1). Initialize LibXL If you want to use LibXL, you have to initialize it first. For this we use the method SetKeyGlobal from the class XLBookMBS. In the parameters of this method you specify your name and the appropriate license key for the suitable OS version. XLBookMBS.SetKeyGlobal "your name", "Operating system matching key" If you do not specify anything here, then you are auto- matically in test mode. In the test mode you cannot change or read the first line of an Excel document because there is the message that it is in test mode. Creating a new Excel file We can now create a new Excel document with some text. First we create a new book object. When creating a book, we can decide whether we want to create a file in the new XLSX format or in the old XLS format. If we want the XLSX format, we specify true in the parameters. If not, we specify false. by Stefanie Juchmes (stefanie) MBS Spotlight AT A GLANCE XD#20509 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Create and Read Excel Spreadsheets Using LibXL with Xojo
 

xDev July/August 2022 | 82 | www.xdevmag.com

FOR many years, Monkeybread Software has

Issue 20.4 Website
title page index page article page
provided their Xojo plugins with many additional functionalities for developers. Often we get the ques- tion of how to integrate the plugins in Xojo. That’s what I want to show you in this Spotlight column. First, we need the plugin file or files we want to install. For the MBS plugins, you can download them directly from the website (https://www.monkeybreadsoftware.de/Xojo/) as a package (see Figure 1). There you can click on the download links. Depending on your choice of operating system, a zip archive or a disk image will then be downloaded. The contents are all the same. You can then extract them on your computer. You find the plugin files in the Plugins folder. You can copy them. Then find the program folder of your Xojo version for which you want to use the plugins. In this program folder you will find the subfolder Plugins. Here you can put the plugins you need (see Figures 2-3). We place the plugin files in the plugin folder of the Xojo application folder. For the MBS plugins it is useful to put all plugin files in this folder. When you execute a program that uses the functionality of the plugin, only the parts that are really needed are loaded, so your application will not get unnecessarily larger when you use it. If you decide to copy only certain parts, please pay attention to the dependencies between the plugins as some parts require other plugins. You can find them on our website (https://www. monkeybreadsoftware.net/plugindeps.shtml). by Stefanie Juchmes (stefanie) MBS Spotlight AT A GLANCE XD#20408 Target Reader: Beginner Source Code: No About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Installation Issues How to Install the MBS Plugins
 

xDev July/August 2022 | 36 | www.xdevmag.com

F e a t u r e

Issue 20.4 Website
title page index page article page
IN this article we combine the power of the MBS ChartDirector Plugin with the MBS DynaPDF Plugin. Since ChartDirector library added PDF support in version 6, we can export a chart not just to image formats and SVG, but also get vector graphics to PDF format. Than we can load the PDF page with the chart into a template for DynaPDF and place it on PDF pages. We can scale the chart on the page to the desired size. Create a pie chart Let’s start with the pie chart. We add a method CreatePieChart returning the chart as a CDBaseChartMBS object. In this method, we first define with, two constants, the width and height of the chart in points. Public Function CreatePieChart() as CDBaseChartMBS const width = 600 AT A GLANCE XD#20404 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Adding Xojo Charts to Your PDFs PDF Pie Charts by Stefanie Juchmes (stefanie)
 

xDev May/June 2022 | 78 | www.xdevmag.com

PICTURES are worth a thousand words.

Issue 20.3 Website
title page index page article page
We can import them directly from our computer, but what if I want to take a picture with my iPhone to use instantly in my application on my Mac? Of course, I could use my web cam to take the picture in an awkward way, or I can use the Continuity Camera from the MBS Xojo plugins. With this function I can take a picture, draw a sketch, or scan a document with my iOS Device. I get back an image or PDF document, which I can directly use in my application. Let me show you how to implement this functionality with a small example. In this example the GUI of the Main window has a canvas and three pushbuttons labeled Import Photo, Import Document, and Import Sketch. We call the buttons ImportPicButton, ImportDocButton, and ImportSketchButton (see Figure 1). We start writing the program in the Open event of the app. First we have to specify what should happen when data comes in later via the Continuity Camera. For this, we define a method that should be called gotData in this case. We set this method with the shared method SetDelegate. The parameter passing looks a bit different from the other methods. We write an AddressOf and then the method name. The plugin then knows that it should call this method on incoming data. We also have to define in which area we want to use the Continuity Camera functions. For this, we call one of the Install methods. We currently have three different parts for which we can install a receiver. With the shared method InstallForCanvas by Stefanie Juchmes (stefanie) MBS Spotlight AT A GLANCE XD#20309 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Great Shots With Continuity Camera Use your iOS device to take a picture for your Mac
 

xDev March/April 2022 | 79 | www.xdevmag.com

YOU know the situation: a good friend or

Issue 20.2 Website
title page index page article page
customer wants to log into your Wifi network. So you look for the piece of paper with the long password and it takes a while to painstakingly enter the complex password manually. How nice would it be to shorten the procedure and avoid input errors? Wifi QR codes are a great solution for this. You create the code once and it can be scanned with a cell phone by anyone you want to let into your network. In this article, I want to show you how to create such a Wifi QR code with Xojo with the help of the MBS Xojo plugins without much effort. How is such a WiFi QR code actually structured? To find out, we can either scan an already known WiFi QR code and look at the structure, or we can ask Google for advice. The information we need to create the QR code is the SSID, which is the network name, the password, the type of encryption, and the information whether our network is visible to others or not. For our example, we will use the fictitious network with the following information: SSID: MyNetwork Password: 12345678 Encryption: WPA 2 Visibility: Yes by Stefanie Juchmes (stefanie) MBS Spotlight AT A GLANCE XD#20208 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Wifi QR Code Embedding your Wifi password in a QR code
 

xDev January/February 2022 | 62 | www.xdevmag.com

IN this article I want to show you how you can send emails

Issue 20.1 Website
title page index page article page
using the MBS Xojo plugins and what advantages this has for you. For this project we will work with the classes from the CURL section of the MBS plugins. We want to design an email that contains a subject, a header, a footer, and text entered by the user. This email should then be sent to the specified recipient addresses. We can choose what kind of recipient we want to set. We can specify a normal recipient and/or set recipients in copy and blind copy. In addition, we can add one or more attachments to the email (see Figure 1). The GUI First we build the GUI through which we want to send the email. It contains the fields to specify the recipients with To, Copy, and blind copy. We also have a field where we can enter the subject and a text field where the content will be. Below this text field there is a label that shows whether there was an error while sending the mail and if so, what kind of problem it was. For us it is called Error_Label. Additionally there are the buttons Add an Attachment and Send (see Figure 2). The Code In the action event of the button Add an Attachmentwe place the file to be attached in a FolderItem that is available as the prop- erty Attachment in our window. You can choose the file in an open dialog. The code looks like this: How to use the MBS Xojo plugins to send emails Send Your Emails by Stefanie Juchmes (stefanie) MBS Spotlight AT A GLANCE XD#20107 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software.
 

xDev January/February 2022 | 40 | www.xdevmag.com

IN this article I want to show you how to

Issue 20.1 Website
title page index page article page
build a heatmap as a representative for other diagrams and save it in a PDF file. In the PDF file we can also add a table with these values. This will require the ChartDirector and DynaPDF plugins for Xojo. We start with the heatmap. A heatmap is a grid of fields. They can have different sizes and colors. They are often used to analyze website user behavior. Each area is assigned a color, so you can see if the area is high- or low-frequented. The diagram often looks like the image of a thermal camera, which is where the name comes from. Of course, a heatmap can also be used for the language-related purpose of displaying different temperatures. In this example we want to do that. We have the monthly mean tempera- ture for a city for the last ten years and we want to display this temperature by colors in a heatmap. AT A GLANCE XD#20105 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Using Monkeybread Software’s ChartDirector Plugin Cool Charts and Heatmaps by Stefanie Juchmes (stefanie) F e a t u r e
 

xDev January/February 2022 | 12 | www.xdevmag.com

LET us help you with debugging in Xojo

Issue 20.1 Website
title page index page article page
with a few tips. Based on years of experi- ence, I know I will write the code once, but probably read it ten times and probably debug it a few times. By preparing for easier debugging later, we can help ourselves. Use Variables When looking into code from other people, I sometimes notice lines like this: SELECT CASE SomeDictionary.Value(SomeArray(index)) As you see, we have a variable index, maybe from a for-next loop over the array used. Then we look with that index into the array and pick some value, which is then used to lookup in a dictionary. But there is a big problem. When you step over this in a debugger, you can see the index variable, but you don’t see the value picked from the array. You can of AT A GLANCE XD#20102 Target Reader: Beginner Source Code: Yes About the Author: Christian Schmitz is the creator of the Monkeybread Software Xojo/Real Studio Plugins. Find bugs faster Debugging Tips for Xojo by Christian Schmitz F e a t u r e
 

MBS Spotlight

by Stefanie Juchmes

Issue 19.6 Website
title page index page article page
(stefanie) AT A GLANCE XD#19609 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Fun with GraphicsMagick Cool methods from the GMImageMBS class IN this article I want to show you some cool methods from the GMImageMBS class that is included in the MBS GraphicsMagick plugin. GraphicsMagick makes it easy for you to work with images. You can create images or edit already existing images. For example, you can use filters and effects on an already existing image or crop it. I would like to give you a small insight with an example. The GUI of the example consists roughly of a canvas and many buttons with individual functionalities behind them (see Figure 1). At the start of the program we pass a picture of the MBS logo to the property pic. pic = LogoMBS(500) This is then output with the Paint event of the output canvas: If pic <> Nil Then // scale to canvas g.DrawPicture pic, 0, 0, g.Width, g.Height, 0, 0, pic.Width, pic.Height End If Because we want to change the picture in pic again and again, we need the Paint event very often and call the method invalidate in the other scripts which then initializes the redrawing. xDev November/December 2021 | 68 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 19.6 Website
title page index page article page
Rotating Christmas Tree Using the MBS Plugins to create an animated 3D Christmas tree IT’S Christmas time! This time I want to show you how you can animate your own turn-around Christmas tree in Xojo. We then also want to deco- rate the tree. We will use the functions from the MBS Xojo SceneKit Plugin. Before we start, first we need to think about what our tree should look like. For the sake of simplicity, we will limit this example to the basic SceneKit figures from which we want to build the tree. We have spheres, plates, boxes, truncated cones, capsules, cylinders, tubes, and pyramids to build the tree from (see Figure 1). The tree is made of fir greenery and a trunk. The trunk is simply a cylinder. On top of it we have two truncated cones and a whole cone on top. On the tree hang Christmas baubles (spheres) and on the top is a star consisting of a sphere and six pyramids that form the prongs of the star. AT A GLANCE XD#19606 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Before we can see anything in our project we have to position the SCNControlMBS on our window. We then additionally create the properties MyScene as SCNSceneMBS and MyView as xDev November/December 2021 | 45 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 19.6 Website
title page index page article page
Things you can do with DynaPDF The MBS DynaPDF Plugin is more powerful than you think ARE you curious about what’s possible with the MBS DynaPDF plugin for Xojo? Here’s a selection of just some of the possi- bilities. If you don’t wish to read the entire article, just look through the following topics to find the features that interest you. Create a New PDF If we want to work with DynaPDF we first need to decide how to handle errors. We can make a class that has the class DynaPDFMBS as superclass. Here we can, for example, define different outputs for the error event. To make it easier you can copy the MyDynaPDFMBS class from an example project and adjust it to your needs. Alternatively, you can just use DynaPDF and the plugin raises an exception of class DynaPDFErrorExceptionMBS, so you don’t miss an exception. AT A GLANCE XD#19602 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. xDev November/December 2021 | 12 | www.xdevmag.com
 

MBS Spotlight

by Stefanie Juchmes

Issue 19.5 Website
title page index page article page
(stefanie) AT A GLANCE XD#19509 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. JavaScript in Xojo Running JavaScript in your Xojo apps IN this article I show how you can use JavaScript in your Xojo applications. If you have a problem that you want to solve, you don’t have to reinvent the wheel again and again. Perhaps someone has already found a solution to this problem and shared the solution on the Internet. So start a search engine and try your luck. In this example, we want to implement the Euclidean algo- rithm. This algorithm determines the greatest common divisor of two numbers. Sure, you could program this directly in Xojo, but this example shows how you can use the JavaScript functions from the MBS plugins. We can find the algorithm in JavaScript on this web page: http://www.qslnet.de/member1/dg1xpz/programm/jscript/euklid.html Our demo is based on this JavaScript code. Because you can use JavaScript code in your Xojo projects, you do not need to convert an existing JavaScript function to Xojo syntax to use it directly in your projects. We design in Xojo a GUI with two textfields for the input numbers (m and n), a pushbutton that starts the calculation and Label, erg, for the calculated result. The JavaScript Let’s look at the JavaScript code. We see a function that looks like this: function euklid(){ xDev September/October 2021 | 90 | www.xdevmag.com
 

MBS Spotlight

by Stefanie Juchmes

Issue 19.4 Website
title page index page article page
stefanie@xdevmag.com AT A GLANCE XD#19408 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Archives in Xojo How to Use Zip Archives ARCHIVES are a very useful thing. Data can be compressed and sent by mail, for example. Did you know that you can also write archives with the MBS Xojo plugins? In a small example I would like to show you that today. Let’s start writing a Zip archive using the ArchiveWriterMBS class. First, we create an instance of this class. In this object, we can set different properties and use methods. We want to create a Zip archive so we use the method SetFormatZip. Alternatively, we could also create a raw archive. In that case, we would use the method SetFormatRaw. For compression, we can choose between Store and Deflate for Zip. With Store the file is not compressed, with Deflate an effective compression is applied. For this we call the suitable method ZipSetCompressionDeflate or ZipSetCompressionStore. Now we want to define a place where we can store the Zip file later. For this, we create a folder item (e.g. on the desktop). The name of the file ends with the suffix .zip. Afterward, we try to put a file into the Zip archive with the method CreateFile. If this fails, the process is aborted. Otherwise, we create an entry for the archive. This entry is an object from the class ArchiveEntryMBS. This entry can be a text file, for example. We set the path name—in our case the file name Hello World with the suffix .txt. In addition, we specify the file size—in our example, this corresponds to the bit length of the content string. xDev July/August 2021 | 81 | www.xdevmag.com
 

Feature

by Christian Schmitz

Issue 19.2 Website
title page index page article page
Application Instance Adding an identifier to your app downloads APPLE allows you to modify an app for download and include a UUID in the download to identify the user downloading it. You create a new UUID for each download and link them in the database to the current logged-in user, and then you can, within a few minutes, simply link the installation to the account on the server. Please make sure the link only works for a limited time (maybe only once). Additionally, you may ask for a verification code. Prepare Your Application AT A GLANCE XD#19206 Target Reader: Beginner Source Code: Yes About the Author: Christian Schmitz is the creator of the Monkeybread Software Xojo/Real Studio Plugins. A key element of this is our “extended attributes.dat” file, which contains the extended attributes as they are saved in a zip archive. But it is not compressed and we add it uncompressed to the archive, so we can read and modify the UUID inside. We got this file by adding an extended attribute with the right name and content to an app, zipping it, and then unzipping it without applying the extended attributes. This way we got the ._ApplicationInstance. app file from the zip with the content of the serialized attributes. xDev March/April 2021 | 50 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 19.2 Website
title page index page article page
Getting Started with DynaPDF If you’ve never tried DynaPDF, you don’t know how easy it is! IN this article I explain how you can start using DynaPDF. What is DynaPDF? It’s a Xojo plugin from Monkeybread Software that lets you dynami- cally create and manipulate PDFs via Xojo code. With DynaPDF you get functionalities to create, edit, merge, analyze, or sign PDF files with Xojo. With DynaPDF you can, for example, write an invoice for your customer in which you integrate a barcode with payment information and attach the always-same terms and conditions to the PDF document. This invoice can also be converted to PDF-A for archiving purposes. Choose Your License AT A GLANCE XD#19203 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. If you want to use the classes of DynaPDF in Xojo you need a suitable license of DynaPDF and the MBS Xojo DynaPDF Plugin. There are four different licenses for DynaPDF. Which license you need depends upon which methods you plan to use. xDev March/April 2021 | 22 | www.xdevmag.com
 

Feature

by Christian Schmitz

Issue 18.6 Website
title page index page article page
Writing Better Code A few tips to get better code in Xojo TODAY I offer you a few tips for better Xojo code. Perhaps you can add a few of those to your routines. Comment First Before you start writing the first line of code for a method, you should write a comment. The comment should not repeat what you can read in the code later, but answer the question of why you need the method, what it does, and why it does it this way. Basically lay out the purpose of the method and when to call it. Declare invariants and assumptions. Like if you get a parameter, e.g. a FolderItem, you can document that you expect it to be not nil, valid, and either point to file, folder, or both. The caller may check to make sure some parameters are in range. Or declare that you check the parameter and raise exceptions. Document which exceptions may be raised by the method. AT A GLANCE XD#18602 Target Reader: Beginner Source Code: Yes About the Author: Christian Schmitz is the creator of the Monkeybread Software Xojo/Real Studio Plugins. xDev September/October 2020 | 12 | www.xdevmag.com
 

So right now specifying fonts in the PDF didn’t work reliably at all and much of Xojo’s documentation on the subject is flat-out wrong or didn’t work as described. Whether these are machine- or OS-specific, my errors, or bugs in Xojo’s PDF system, it is too early to tell, but my assessment is that creating more sophisticated PDFs with embedded fonts is complicated and probably a task for advanced users.

Meanwhile, I’m not sure the screen/PDF differences are a deal-breaker unless you are trying to create a WYSIWYG system. The main thing is does PDF creation work? And the answer is yes, and it’s quite useful already.

Issue 18.6 Website
title page index page article page
Sure, there are bugs and missing features. A major limitation of PDFDocument is that there’s no support for transparency. This means that the order you draw elements into the PDF is crucial as the last item drawn will be on “top” and might cover up items underneath. (A perfect example of this is drawing the colored text box in the demo. I draw the shadow box first, then the colored box, then the text block, and finally the box frame. If I drew the colored box after the text, it would cover the text.) Another big limitation of this method of PDF creation is there is no way to embed a link in a PDF. If you’re creating PDFs professionally, those are important, as many such documents will have links to websites or other pages in the PDF. And speaking of other pages, I did not test multi-page PDFs, though I noticed that PDFDocument does have a NextPage command (https://docs.xojo.com/PDFDocument.GraphicsMethods) which would probably allow you to add additional pages. Of course, there are plenty more enhancements one could add to today’s demo to make it more useful. The most obvious would be a method to draw styled text (text that has multiple fonts, bold, italic, etc.). That is quite ambitious and beyond today’s article for sure! (If there’s interest in such a thing, however, let me know. I have done similar stuff in the past and it might be feasible.) But, hopefully, I’ve piqued your interest in the topic and gotten you started, and I’m pleased with what I’ve discovered. While not as complete as a third-party plugin such as MonkeyBread’s DynaPDF, the built-in classes are useful, especially if your needs are simple. Give PDFDocument a try! Additional Resources If you’re interested in PDF creation, you might like to read through some previous xDev articles on the topic, covering several different ways to generate PDFs. Command Line PDFs by Marc Zeedar [xDev 11.1] (http://www.xdevmag.com/browse/11.1/11107). Making PDFs by Marc Zeedar [xDev 16.2] (http://www.xdevmag.com/browse/16.2/16204). What’s New in the MBS Plugins by Stefanie Juchmes [xDev 17.5] (http://www.xdevmag.com/browse/17.5/175003) Embedding Links by Stefanie Juchmes [xDev 18.1] (http://www.xdevmag.com/browse/18.1/18106) xDev September/October 2020 | 101 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 18.5 Website
title page index page article page
Xojo Charts Charts in Xojo with the MBS Xojo ChartDirector plugin IN this article I would like to intro- duce you to working with ChartDirector in Xojo. In Xojo there is no built-in function to create diagrams. You can change this with the MBS ChartDirector plugin and create charts in Xojo in many different types. There are standard chart types like bar and pie charts, but also complex charts like scatter charts or financial charts. In Figures 1-6 you can see some diagrams created with ChartDirector in Xojo. AT A GLANCE XD#18504 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in- law and got a junior developer position in early 2019 at Monkeybread Software. There are almost no limits to the design possibilities of your diagrams. For example you can use your own color scheme to display the data, axis and labels, place your company logo in the background of the chart, select a suitable font, and rotate and flip the chart as you like. Because of the huge function range of ChartDirector, I would like to give you some examples to show you how the ChartDirector plugin can be used and its design possibilities. xDev September/October 2020 | 49 | www.xdevmag.com
 

// Draw text

g.ForeColor = Colour.Department_Text

Issue 18.5 Website
title page index page article page
g.Bold = True g.DrawString Me.Name, 10, g.TextAscent + (g.Height—g.TextHeight) \ 2 End Sub Which leaves the employees to be drawn. We need three fake columns in Listview, with the emoji being drawn in fake column 0 (though you could just as easily draw a photo), posi- tion in fake column 1, and the name in fake column 2. For the ID cards we only have two fake columns, and though the QRcodes are pictures that I did previously, you could create them on the fly. See “Creating Barcodes in Xojo” by Stefanie Juchmes in xDev issue 17.4 (http://www.xdevmag.com/browse/17.4/) for more on how to do that, assuming you have the MBS QRcode plugin (https://www.monkeybreadsoftware.de/xojo/plugin-barcode.shtml), or you can have a look at the Einhugur website (https://einhugur.com/Html/all.html) for their plugin. Public Sub Draw(g as Graphics, whatToDraw as String) // Part of the CanDrawItself interface. Dim gWidth, gHeight As Integer Dim xRight, yHeight As Integer gWidth = g.Width gHeight = g.Height xRight = gWidth—1 yHeight = gHeight—1 Select Case whatToDraw Case "List" Dim Column0Right, Column1Right As Integer // set where column borders are Column0Right = 62 Column1Right = gWidth \ 3 * 2 // Draw Borders g.ForeColor = Colour.ListBoxBorder // draw border between column 0 and 1 g.DrawLine Column0Right, 0, Column0Right, yHeight // draw border between column 1 and 2 g.DrawLine Column1Right, 0, Column1Right, yHeight // draw emoji (a string) in fake column 0 g.TextSize = 36 g.DrawString Me.Emoji, 10, g.TextAscent + (gHeight—g.TextHeight) \ 2 // draw Company Position in fake column 1 If InStr( Me.Position, "Head" ) > 0 Then xDev September/October 2020 | 46 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 18.4 Website
title page index page article page
On the Scene Again (Part 3) Getting Started with SceneKit WELCOME to the third SceneKit tutorial. In the last article we saw all the geometric primitives that can directly be built with SceneKit and we learned the basics of animation. This time we want to solve the problem of the “Hanoi Tower.” This is a mathematical brain-teaser. You have a board with three vertical pegs. At the beginning of the game on the left peg is a stack of n discs, which are ordered by their radius. This n discs stack must be transported from the left peg to the right peg. At first it sounds very easy, but we have rules for their movements. AT A GLANCE XD#18404 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in- law and got a junior developer position in early 2019 at Monkeybread Software. ■ You can only move the top-most disc of each stack. ■ You can’t place a disc above another disc of smaller size. ■ You can only move one disc at a time. xDev July/August 2020 | 38 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 18.3 Website
title page index page article page
Happy Birthday, MonkeyBread Software What is new in the MBS Xojo Plugins HAPPY birthday MonkeyBread Software! This year the company has been in business for 20 years. In 2000 the company was founded by Christian Schmitz. Just in time for our birthday, our company has won the Xojo Design Award this year for the best plugin. The MBS Xojo Plugins is a huge toolbox. With the plugins you can realize things in Xojo which were not originally possible. For example, you can work with C libraries and preemptive threads. AT A GLANCE XD#18304 Target Reader: Beginner Source Code: No About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in- law and got a junior developer position in early 2019 at Monkeybread Software. The plugin collection is divided into 40 plugins, 500 plugin parts, of which 20 have been added this year alone. The plugins contain 2,700 classes—200 of them were added this year—and you find more than 68,000 items in the documentation (4,000 new items). In over 2,100 examples, you can learn how to use the plugins. This year we have added more than 100 xDev May/June 2020 | 42 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 18.2 Website
title page index page article page
Drawing PDFs Draw in a PDF like in a Graphics element THE MBS Xojo DynaPDF plugin offers in version 19.2 the possibility to draw in a PDF like in a Canvas control. We want to show you how to do this. In this example you can write a letter by choosing your salutation, the name of the addressee, the content of the letter, form of greetings, signature, select some of the graphics elements, and add them to the letter (see Figure 1). For the selection of the graphical elements, we use checkboxes. For the choice of the solutions and the greet- ings, we use popupMenus with predetermined values (see Figure 2). The name of the addressee and our signature can be entered in textfields. The content of a letter is written in a Text Area. We see the preview on the left side in a canvas. We have three buttons. One refreshes the preview, one creates the PDF and the last calls the printing dialog to print the text. AT A GLANCE XD#18206 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. xDev March/April 2020 | 66 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 18.2 Website
title page index page article page
On the Scene Again (Part 2) Getting Started with SceneKit WELCOME to the second part of the SceneKitMBS tutorial. In the last article we learned to add spheres of different sizes, colors, and locations to a scene. Now we come to know new forms of geometry and how we can move the objects in the scene! You may remember that last time we inserted an orange sphere to the scene with this code: Dim NodeOneGeometry As New SCNSphereMBS(radius) Dim NodeOne As New SCNNodeMBS(NodeOneGeometry) NodeOneGeometry.firstMaterial.diffuse.contents = NSColorMBS. orangeColor NodeOne.Position = New SCNVector3MBS(0, 0, 0) MyScene.rootNode.addChildNode(NodeOne) AT A GLANCE XD#18203 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. The shape of the object is chosen by the SCNSphereMBS class. The SCNSphereMBS class is not the only one of this kind. You can insert the following objects with their related classes: xDev March/April 2020 | 21 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 18.1 Website
title page index page article page
Embedding Links Adding links inside PDFs LET’S say you have a PDF document and you want to add some links in it to navigate inside the document and jump to the right page or maybe a website. Or perhaps you want to change the target of a linked URL that’s already in the document. With the MBS DynaPDF Plugin for Xojo you can do it easily. Let me show you how to do it. Initialize and load PDF First we need to initialize DynaPDF. If you have one, put the license key in the document: Dim pdf As New MyDynapdfMBS pdf.SetLicenseKey "" AT A GLANCE XD#18106 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. Then we call the open dialog for selecting a PDF to import. Next, we ask the user where to store the final PDF file. If the saving dialog is canceled (outFile = Nil) we just exit the routine without doing anything. xDev January/February 2020 | 60 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 18.1 Website
title page index page article page
On the Scene Getting Started with SceneKit SCENEKIT is a framework from Apple in MacOS and iOS for 3D graphics. For Xojo, the MBS Mac64bit plugin adds the classes and controls for you to use. With these classes, it is possible to work with 3D graphics in Xojo programs. For example, you could use this to create a computer game or to make an animated film. There’s no limit to your imagination! In this course, I want to show you some simple exam- ples that you can easily rebuild by yourself and learn a lot about 3D Design technics. This article is based on the article Introduction To SceneKit – Part 1 by Silviu Pop from October 2014 who shows how to do it with the Swift programming language. AT A GLANCE XD#18103 Target Reader: Beginner Source Code: Yes About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. For the examples, you need the MBS Mac64bit plugin. You can download it on our website for testing. Also, you can order a license for it on our website. Due to dependencies between the plugins, please also install Main, MacCloud, MacBase, MacControls, MacCG, MacCocoa, and MacCF plugin parts. xDev January/February 2020 | 25 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 17.6 Website
title page index page article page
Big Numbers and Large Numbers How you can use the BigNumberMBS and LargeNumberMBS class in Xojo SOMETIMES you need numbers that offer a higher precision than the existing data types in Xojo do. You can solve this problem with large numbers and big numbers from our MBS Xojo DataTypes Plugin. Big number Our BigNumberMBS class has a floating point number with 320 bits, precise for over 100 digits before the decimal point! If you compare it to a normal double value, you have five times the number of bits. Since version 16.5, this class is included in the MBS Xojo DataTypes Plugin. AT A GLANCE XD#17606 Target Reader: Beginner Source Code: Yes Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software.: For example, in Figure 1, we can calculate the following calculation with high precision with big numbers and get the correct results. We see that the result with double values is wrong, whereas the result with big number values is correct. Well, double values have only about 15 digits of precision, so rounding errors show after the last precise digits. xDev November/December 2019 | 61 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 17.5 Website
title page index page article page
What’s New in the MBS Plugins With the Plugins growing every year, here are new capabilities you may have missed IT’S been 19 years since MonkeyBread Software developed plugins that you can use in the Xojo IDE. The Plugins expand the functionality of the IDE, giving you more controls, classes, methods, and properties. Year after year the MBS Plugins are growing. By now there are 40 plugins, divided inter- nally in 485 plugin parts, which you can embed in your projects. They provide over 64,000 functions including over 2,500 classes. The download includes over 2,000 examples for you to learn details about. Since last year we have loads of new functionality. I would like to introduce you to some of the new features now. Data Types AT A GLANCE XD#17503 Target Reader: Beginner Source Code: No About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. With Large Number and Big Number the Xojo MBS DataTypes Plugin gets two new data types, which make it possible to calculate with large numbers or have a high precision (see xDev September/October 2019 | 32 | www.xdevmag.com
 

Feature

by Stefanie Juchmes (stefanie)

Issue 17.4 Website
title page index page article page
Creating Barcodes in Xojo How you can create more than 80 different types of barcodes in Xojo TODAY many companies use barcodes because it makes work faster. With the MBS Barcode Plugin for Xojo, more than 80 different types of barcodes in 1D and 2D can be generated, which can be processed as an image and even placed on an existing image. Another possibility is to save the images in a container or in a file. With the MBS DynaPDF Plugin functions, the barcode can even be output as a vector graphic in a PDF (see Figure 1). Barcode as Image AT A GLANCE XD#17405 Target Reader: Beginner Source Code: No About the Author: Stefanie studied computer science at the university in Bonn. She came in touch with Xojo due to the work of her brother-in-law and got a junior developer position in early 2019 at Monkeybread Software. The BarcodeGeneratorMBS class is used to generate a barcode. You can set various options for the barcode and then call the encode function to create the barcode. With properties for the picture and vector graphics, you can read the final image for the barcode. With this code example you can generate a QRCode (see Figure 2) and save it in a file: xDev July/August 2019 | 36 | www.xdevmag.com
 

Alternating Row Colors for Dark Mode

With Dark Mode, choosing the correct colors is trickier

Issue 17.2 Website
title page index page article page
 

Optimizing Xojo Apps

Some unexpected performance and memory implications

Issue 15.4 Website
title page index page article page
 

Inside Xojo

Exploring Delegates, WebFile, and WebPicture

Issue 15.2 Website
title page index page article page
 

Xojo Compiler Optimization

Tweaking Xojo’s compiler for faster code

Issue 14.6 Website
title page index page article page
 

Feature

by Richard Duke

Issue 14.4 Website
title page index page article page
Spring in Koblenz, Germany The 2016 MBS Xojo Developer Conference ON a beautiful spring day, we arrived in the historic city of Koblenz to attend another excellent MBS Xojo developer conference hosted by Christian Schmitz from Monkeybread software. This conference is the largest annual European Conference for Xojo developers and, as always, there was something for everyone, including great presentations, special guests, trips below ground, learning how to brew, a magic show, gourmet food, beer, and the most gigantic birthday cake I have ever seen. AT A GLANCE XD#14403 Target Reader: Beginner Source Code: No About the Author: Richard Duke is a commercial software devel- oper for the art and insurance industries. His main products are Artscene and ACMS. He has been using Xojo for many years. The conference was held at the Contel Hotel in Koblenz, Germany, about an hour by train from Frankfurt on a beauty spot at the River Moselle. The hotel was amazing and was the perfect location for the conference with a large beer garden and gourmet restaurant (see Figure 1). Koblenz is a city situated on both banks of the Rhine with its confluence with the Moselle, where the Deutsches Eck (German Corner) and its monument to Emperor William I on horseback are situ- ated. As Koblenz was one of the military posts established by Drusus about 8 BC, the city celebrated its xDev July/August 2016 | 15 | www.xdevmag.com
 

As you know beginners are close to my heart, so let’s get going on some Tips & Tricks!

Tip 1: Solving problems

Issue 14.2 Website
title page index page article page
You’re stuck. Your code should work, but it isn’t. Or it does something unexpected and weird. Now what? 1. Usethedebuggertofollowcodeexecution I’m always amazed by how many people don’t follow their code in the debugger when they look for bugs. If you follow along in the debugger, then you can see which variable might not contain what you think it should contain. For example, integer overflow errors are easy to spot in the debugger—so use it! And keep in mind conditional breakpoints as mentioned in xDev 12.5 Sep/Oct 2014 Tip 3. 2. Restart Xojo and clear the cache I have Xojo running all the time and my computer only gets restarted when there’s a system upgrade. But sometimes Xojo gets confused and things don’t work or don’t behave as you’d expect. A restart of Xojo often fixes that, but sometimes I need to restart the computer (usually when Xojo has been running for weeks or months). It’s worth repeating the tip from xDev 12.3 May/Jun 2014 Tip 6 by Christian Schmitz from MonkeyBread Software again: "For me the Cache folder has symbolic links named 'Xojo' and Real Studio' which point to /tmp, so every time the Mac restarts, I get a cleared cache." So no need to clear the cache by hand anymore. 3. Make a sample project If you see the problem in a small sample project, then you can not only exclude some unexpected side effects from the rest of your code, it will also make finding and fixing the problem much easier. If you can’t recreate the problem in a sample project, then the bug wasn’t where you thought it was anyway, and you’ll save a lot of time not following the wrong lead. Basic rule: if you can’t be bothered to make a sample project, then you don’t need help that urgently, if at all. xDev March/April 2016 | 91 | www.xdevmag.com
 

The MBS SQL Plugin

An alternative way to connect to databases

Issue 14.1 Website
title page index page article page
 

Your guide to austin, Texas

Places to visit during your time at this year's Xojo conference

Issue 13.2 Website
title page index page article page
 

Figure 8: Hamish at the "GIT" shop!

of Hamish standing outside a GIT shop (see Figure 8)—which looked suspiciously like a GIFT shop with the F removed!

Issue 13.1 Website
title page index page article page
Tom continued his presentation by next talking about build automation to make building and distrib- uting Xojo apps simpler. In the final presenta- tion of the morning, our favourite plugin genius Christian Schmitz of Monkeybread Software (see Figure 9) gave an excellent presentation on how to use Curl, a command line tool and library for transferring data with URL syntax supporting various protocols such as FTP, HTTP, IMAP, POP3, etc. We then took a break for lunch. The heavy rain had stopped and it was a great opportunity to go down to the Christmas market which had now opened, and sample the many great foods offered there. After lunch, Stewart Johnson of Netnodes showed us how to use JSON (JavaScript Object Notation) and a REST-based (Representational State Transfer) API to allow communication between Xojo apps and a Cloud service. This was a very important presentation as iOS apps written in Xojo often need to communicate with external and cloud-based databases using such a technique. The next presentation was from David Cox of Holy Mackerel Software. David as a keen user of Monkeybread Xojo plugins has developed applications that are for sale on the Mac App Store and has also developed web services that are used internationally. David showed us how to use ChartDirector to make professional charts and DynaPDF to create PDFs using Xojo. There now followed another coffee break while Eric and Stewart prepared for Geoff Perlman's video chat. The video chat started with Geoff Perlman, the CEO of Xojo, Inc., updating us on the latest developments of Xojo, saying that 64-bit was priority and the support for Carbon would be removed. Geoff answered many questions carefully assembled by Eric and gave optimistic feedback. The final presentation of the day was by Christian Schmitz who showed us some advanced Xojo code language features. This was a particularly interesting talk. xDev January/February 2015 | 1 9 | www.xdevmag.com
 

Inside HandleSpecialURL

How to use Web Edition for your own REST API

Issue 12.5 Website
title page index page article page
 

Inside ServerSocket

Getting Started with the ServerSocket

Issue 12.4 Website
title page index page article page
 

Moving to AVFoundation

Leaving QuickTime behind

Issue 12.2 Website
title page index page article page
 

Inside Email

The EmailMessage class and SMTPSocket

Issue 12.2 Website
title page index page article page
 

Feature

by Bill Kearney

Issue 11.6 Website
title page index page article page
MBS Conference Report What Happened at the MBS Xojo Developer's Conference in Germany THE 2013 European Xojo conference was held in Koblenz, Germany (September 11-14). Organized and hosted by Christian Schmitz of Monkey Bread Software, the conference was a great success. It was the largest Xojo Developers Conference to be held outside of the USA and was attended by 51 developers from 12 countries. The numbers attending would have been higher but, because of the delay in Xojo’s support for the iOS platform, many delegates from Spain and Italy cancelled. AT A GLANCE XD#11606 Target Reader: Beginner Source Code: No About the Author: Bill Kearney is an aircraft weights and limita- tions manager with Chilcot Systems in the UK. He describes himself as an enthusiastic amateur who has been using Xojo on and off for approximately six years. Photos courtesy of Christian Schmitz. The city of Koblenz was an excellent choice of venue, with a history stretching back to before Roman times. The Altstadt (Old Town) comprises narrow lanes of shops and taverns which link squares of historical interest and grandeur. In the evening, the squares become venues for open air entertainment. The surrounding area is blessed with a natural beauty that is breathtaking. It is easy to see why xDev Nov/Dec 2013 | 2 5 | www.xdevmag.com
 

Plugin to Real Studio

Plugin SDK changes for 2012/2013

Issue 11.2 Website
title page index page article page
 

eC2 to the Rescue

Using Amazon EC2 for Real Studio Web Applications

Issue 11.2 Website
title page index page article page
 

tips for Real World

getting the most out of the Real World Conference in Orlando

Issue 11.2 Website
title page index page article page
 

Figure 1: Victoria Square in Birmingham.

The first presentation of the day was by the host, Eric Gibbons from MacTasks. Eric gave an overview of the Real Studio resources, such as Real Studio downloads, books, code examples, the rbdeveloper magazines and useful websites.

Issue 11.1 Website
title page index page article page
The next presentation was from David Cox of Holy Mackeral Software. David talked about building apps to last for the App Store. David’s opening speech was about building for the future: “I want a bug free, easy to use App that people are willing to pay for, that’s available for Mac, Windows, Linux and Web Edition in Demo and Final versions via a website and the Apple App Store, that’s easy to maintain, tailored to each OS, cannot be pirated and with a minimum of sales headache”. Simple! David’s presentation was very informative stating the importance of keeping consistency of codes, keeping methods as generic as possible and aligning code to also be used on Wed edition. The next presentation was by Christian Schmitz from Monkeybread Software who gave an update on version 12 of his famous and extremely useful plugins, including the 12.4 php plugin and the avfoun- dation new 32 and 64 bit movie editing classes and replacement for quicktime. RSD January/February 2013 | 2 1 | www.rsdeveloper.com
 

interview

by Richard & Trisha Duke

Issue 10.4 Website
title page index page article page
London Calling Attending the RSUL Event in London tHe Real Studio Users London Group (RSUL) had a meeting in the World famous town of Wimbledon in the London Borough of Merton, home to tennis, Wombles, and windmills. The event took place at the end of the broadway at the Antoinette Hotel and was chosen for its very convenient location with many unique facilities nearby, such as the Theatre, Children’s Polka Theatre, numerous restaurants and shopping centres and nearby outdoor markets. On the evening before the event, a few participants met at the hotel for drinks and dinner later at the nearby Jimmy’s Grill and Bar, a spot that was to become a very popular choice with everyone. At A GlAnce rSD#10405 Target Reader: all Source Code: no About the Author: richard and trisha duke are commercial software developers for the art and insurance indus- tries. their main products are artscene and acms. they have been using realstudio for many years. The first day of the event, Thursday March 29th, was a very sunny and warm day and the day of the Real Studio training, organised by Christian Schmitz from Monkeybread Software. Twelve people attended the training where Christian gave an intro- duction to Web Edition and showed examples of web applications. Christian then organised a RSD May/June 2012 | 2 0 | www.rsdeveloper.com
 

also, incidentally, leads to well-parallelized software)—but getting the design somewhat right at first requires a bit of overhead which is not there in XP.

Furthermore, the role of automated unit tests is significantly higher in Extreme Programming. In theory, one can run a TBD process without writing a single test—in XP; this would be a gross violation of the concept of the process.

Issue 9.6 Website
title page index page article page
Conclusion Even though Tracer Bullet Development is mostly straightforward, it nevertheless gives a name to a useful common sense process. That alone is an immense value in today’s buzzword loaded market- place. Once the initial planning is done, Tracer Bullet Development is dead simple and does not require a lot of effort to keep the process running. In addition, the layered approach to design leads to well- scalable software—TBD is said to be very popular in these areas. Of course, no process can be considered a solution for all problems. Like with just about everything else in life, caveat emptor applies also when choosing a software development process. Learn how to get the best out of Real Studio! n In lovely Frankfurt, Germany, Nov. 3 and 4, 2011. n Come for one day or both days. Breakfast and lunch included. n Training includes hands-on database development. n Casual get-togethers for dinner in the evenings. See THe compleTe ScHedule online! Database Conference Day — Friday, Nov. 4, 2011 — 99€ http://www monkeybreadsoftware de/realbasic/events/frankfurt-2011-event shtml Database Training Day — Thursday, Nov. 3, 2011 — 400€ RSD September/October 2011 | 4 6 | www.rsdeveloper.com http://www monkeybreadsoftware de/realbasic/events/frankfurt-2011-training shtml Conference includes: n an update on what’s new with Real Studio (64 bit, Cocoa, LLVM, mobile) n presentations by Christian Schmitz and his Monkeybread Plugins. n a video chat with Geoff Perlman, CEO of Real Software. Real Studio Developers Days Training and Database Conference
 

Printing PDFs

Easy PDF printing on Mac and Windows

Issue 8.5 Website
title page index page article page
 

Updater Kit

Automatic updates for your application

Issue 8.4 Website
title page index page article page
 

Your Hourly Rate

What should you charge for your time?

Issue 8.4 Website
title page index page article page
 

Figure 5: This is Christian Schmitz of Monkeybread Software talking about “Building REALbasic Plugins,” the first session on Saturday.

and destroying objects and strings when possible. And he also mentioned some handy habits: retain objects you’ll need again, creating and exporting them; use Split and Join, which are almost always faster than CountFields and NthField; flipping loops around can sometimes add speed; and use a Dictionary for random look-ups.

Issue 8.1 Website
title page index page article page
The last session on Friday was also one of the most lively ones: “Version Control, and Why it Rocks,” by Aaron Gerber and Mathias Gran. You could tell they were really into their subject from the start as they provided lots of fun comments and examples. Unfortunately, their’s was one of the longer sessions and is beyond the scope of this article. However, they did provide some URLs to resources online: you can get the Mac Subversion Client (http:// versionsapp.com/#), the documentation (http://svnbook.red-bean.com/), and the main site for Subversion (http://subversion.tigris.org/). After Friday’s last session, we were in for quite a treat. Included with the Summit’s ticket price was dinner at Salt, a fairly new restaurant downstairs from and next door to IA’s offices. Our group took over most of the basement seating area, and we could order basically whatever we wanted to eat and drink. However, this was more than just a nice dinner, but a chance to socialize and network with the other members of the Summit, and as such was very worthwhile. It also showed what great hosts we had! The first session on Saturday was “Building REALbasic Plugins,” by Christian Schmitz, well-known for his MonkeyBread Software collection of plugins for REALbasic (see Figure 5). However, again, the summa- tion of this presentation is beyond the scope of this article (he’s written a full article for this magazine based on his presentation). But Christian is very accessible and helpful, via his website (http://www.monkeybreadsoftware.de/) and mailing list (https://www.monkeybreadsoftware.de/ realbasic/mailinglist.shtml). The last formal session was “Usability and Design Techniques,” by Jay Crain, Inspiring Apps Designer (see Figure 6). He packed quite a lot into his hour, all Figure 6: This is Jay Crain of Inspiring Apps talking about “Usability ¥ Design Techniques,” the second session on Saturday. of it great, but I’ll try to summarize briefly. His introduction to usability began with a comparison of desktop versus web design, their shared principles, and he mentioned a renewed focus on usability having grown with the web. A major point he began with is user-centered design, putting the user at the center of your design strategy. Some principles he shared are as follows: designs should be transparent; aesthetics are important, but not everything; and the success of a design can be measured by how infrequently the user has to stop and figure out how the program works. He also emphasized consistency: within the user expecta- tions; within an app or web site; and between related apps and web sites. Inconsistencies can also be a strength within an app, Figure 7: Bob Keeney, discussing the state of REALbasic programmers, and showing the difference between ARBP members and non-members. 16 November/December 2008 | REALbasic Developer | www.rbdeveloper.com
 

easy Charts and Graphs Part 2

using the ChartDirector Plugin

Issue 7.5 Website
title page index page article page
 

Easy Charts and Graphs (Part 1)

using the ChartDirector Plugin

Issue 7.4 Website
title page index page article page
 

Compiler Optimization

What the REALbasic compiler can do on optimization

Issue 7.1 Website
title page index page article page
 

Runtime vs. Internal Plugins vs. Code

How the framework is implemented

Issue 6.6 Website
title page index page article page
 

Inside reAlbasic

A new column to show REALbasic from the inside

Issue 6.5 Website
title page index page article page
 

Menus

Handling menus in a cross-platform app

Issue 6.4 Website
title page index page article page
 

Creating PDF Files

How to create PDFs using the MBS Plugins

Issue 6.4 Website
title page index page article page
 

didn’t seem especially useful (perhaps better examples should be provided next time).

The Command Pattern was the most useful: you use it to encapsulate any action the user might do and pass command objects around your program. These command objects have DoExecute and UndoExecute methods so that any action can be undone simply by telling the object to undo itself (the actual object is responsible for remembering the previous state of things).

Issue 6.4 Website
title page index page article page
What really interested me about this session was that it was taught by William Yu, one of REAL Software’s engineers, and for most of the patterns he showed how those were used within REALbasic itself! One of my favorite sessions has to be Joe Strout and Brad Weber’s Yuma demo. Many of you know I’m a huge RBScript fan and the idea of being able to embed REALbasic code in web pages is unbelievably awesome. Imagine replacing PHP with REALbasic! Since I’d missed the Keynote presentation, Brad was kind enough to give me a private demo and it filled in some of the pieces I’d missed. Though I dislike web developing, that’s mostly because web standards are so inconsistent and I hate wasting brain cells on mind-numbing languages like PHP and Javascript. I can’t wait to seriously start playing with Yuma. Though the product (at this writing) is in beta, the technology is remarkably mature and shows huge progress. I’m definitely going to be playing with Yuma and will keep readers updated with my impressions. Thursday evening was dinner at the Omni Hotel: elegant and delicious, as usual, and we were entertained by Nathan and Dana who randomly called on people to answer ridiculous trivia questions and win prizes like RB books, T-shirts, and Back to the Future DVDs. It was silly and fun and many of the wrong answers were far better than the right ones! The final session I attended was Katie Yunker’s Licensing seminar. I had thought this was mostly about shrink-wrap licenses, but she dealt a lot with contract programming which is a huge and important field for RB users. Though contracts are occasionally dry, they are important, and she pointed out some of the dangerous pitfalls that can happen when you just copy and paste contract verbiage from someone else. You need to be very careful about your license terms or you could really end up suffering. Hopefully Katie will write an article for RBD on the subject as it’s extremely important. Friday afternoon the conference came to a close -- all too soon for me, as it felt like I’d only just arrived (and I had). A few people were already leaving to catch flights home, but most of us attended the concluding Feedback session which Geoff Perlman moderated. The Feedback session is awesome: Geoff’s open for any topic and we’re free to make sugges- tions about the conference, about REALbasic, about REAL Software, anything. Many people were already departing, but a large group of us that remained went out for barbeque at Stubb’s (where we had music and food last year) and it was fun and delicious. Until last year I’d never heard of Stubb’s -- but when I returned to Oregon I was astonished to find Stubb’s barbeque sauce is available at my local grocery store! Usually in the past I’m out of REAL World Friday afternoon as I try to visit my cousin’s family in Houston, but this year they were out of town so a visit didn’t work out. I didn’t have to fly home until Saturday, which was a nice relaxing change. I slept in, leisurely worked on a few things, and had a relatively uneventful flight back to Portland. Once again REAL World is gone, but I’m already looking forward to next year’s confer- ence. It’s such a wonderful opportunity to see people in person, learn new things, and get excited about programming again. This year’s conference had a lot of new people and I hope to see even more next year. If you went, tell your friends and colleagues how rewarding it was, and if you didn’t go, start making plans now. I would love to see you there! Figure 5: The new Association of REALbasic Professionals met and elected their board of directors. President: Bob Keeney. Vice-President: Norman Palardy. Board Members: Paul Lefebvre, Brad Rhine, and Marc Zeedar. (Photo by Christian Schmitz.) More Photos We didn’t have much space for photos in this issue, so check out the REAL World group on Flickr for more: http://www.flickr.com/groups/realworld/pool/ You can also see Miguel Dina’s collection: http://www.dinasc.com/albums/pages/realworld_2008.html Figure 6: Lunch at REAL World. (Photo by Nathan Black.) 14 May/June 2008 | REALbasic Developer | www.rbdeveloper.com
 

Calling conventions

Explaining various OS function calls

Issue 6.3 Website
title page index page article page
 

Windows User Interface

Differences between Mac and Windows

Issue 6.2 Website
title page index page article page
 

The Windows Registry

Reading and writing values to the Windows Registry

Issue 6.1 Website
title page index page article page
 

DiscRecording

Burning discs with REALbasic on mac OS X

Issue 6.1 Website
title page index page article page
 

Windows version

obtaining the Windows version

Issue 5.6 Website
title page index page article page
 

Third Party Plugins: Statusitems

Getting an icon in the top right of the Mac OS X menubar

Issue 5.6 Website
title page index page article page
 

MDI

What is the Windows multiple Document Interface?

Issue 5.5 Website
title page index page article page
 

End of the line

Handling cross-platform line endings correctly

Issue 5.4 Website
title page index page article page
 

#if Target...

conditional compiling

Issue 5.3 Website
title page index page article page
 

mutex, Take 2

allow only one application instance to run at a time

Issue 5.2 Website
title page index page article page
 

Detecting Rosetta

Are we running under emulation?

Issue 5.1 Website
title page index page article page
 

Menu Glyphs

Icons for menu entries

Issue 4.6 Website
title page index page article page
 

Trial Versions

Make your time-limited trial difficult to break

Issue 4.6 Website
title page index page article page
 

Process Priority

change the priority of your process

Issue 4.5 Website
title page index page article page
 

Port input/output

Accessing the hardware ports

Issue 4.4 Website
title page index page article page
 

Beginner q&A

Answers for Beginner’s Questions

Issue 4.4 Website
title page index page article page
 

File formats

What REALbasic applications can read

Issue 4.3 Website
title page index page article page
 

mac on intel

About Apple’s planned move to Intel CPus

Issue 4.2 Website
title page index page article page
 

Printing Rotated Text, Part 2

using declares to draw rotated text on Windows

Issue 4.1 Website
title page index page article page
 

Printing Rotated Text

Using declares to draw a rotated string on Windows

Issue 3.6 Website
title page index page article page
 

Memory

Statistics on free and total memory on Windows

Issue 3.5 Website
title page index page article page
 

OLEContainer

A web control for the Windows version of REALbasic

Issue 3.4 Website
title page index page article page
 

From Mac to Windows

Questions of a Windows developer making his first Mac application

Issue 3.3 Website
title page index page article page
 

Notes, Questions, and Answers

Christian tackles a variety of issues

Issue 3.2 Website
title page index page article page
 

Register Document File Types

Fill and Query the Registry

Issue 3.1 Website
title page index page article page
 

Custom Window Shape

Round windows in Windows

Issue 2.6 Website
title page index page article page
 

A Statusbar for your Windows application

How to add a statusbar to a window

Issue 2.5 Website
title page index page article page
 

Cross platform streams

We write our own binary stream to save our data

Issue 2.4 Website
title page index page article page
 

Types of Disk Drives

Testing whether a disk drive is a CD-ROM or not.

Issue 2.3 Website
title page index page article page
 

Allow Only One Application Instance to Run

Using the Windows API to create a mutex object.

Issue 2.2 Website
title page index page article page
 

Details about disks

Getting the name, the size, and more information about a disk

Issue 2.1 Website
title page index page article page
 

Special folders

Getting folderitems to folders on Windows which depend on configuration

Issue 1.6 Website
title page index page article page
 

Windows Version

Asking for the correct Windows version from REALbasic

Issue 1.5 Website
title page index page article page
 

Resources inside your application

Avoiding a Thousand Files?

Issue 1.4 Website
title page index page article page
 

Windows Specialties

Some special things to notice for Windows

Issue 1.3 Website
title page index page article page
 

Interface for Windows

A better Windows interface for your application

Issue 1.2 Website
title page index page article page
 

REALbasic Windows Support

What works and what doesn’t

Issue 1.1 Website
title page index page article page
 
The biggest plugin in space...