The TSA was recently in the news for paying tens of thousands of dollars for a seemingly simple iPad app to direct people to different security lines. Now we obviously don’t know everything the app does, but it sure seems like it would be pretty straightforward to make such an app, especially using Xojo.
Comments closedXojo Programming Blog Posts
The most direct way to support HiDPI* for custom controls is to draw into the Graphics object passed into the Paint event. That graphics object is already configured with the appropriate scale factor and double buffering- the entire control will be handled correctly by the framework if the DoubleBuffer property is set.
*As with other posts, we’ll use “HiDPI” to refer to both HiDPI on Windows and Retina on OS X.
2 CommentsJoin Paul as he talks with forum poster extradonaire, Michel Bujardet!
Comments closed“Retina” is the name for high resolution screens on Mac and iOS devices while “HiDPI” is the Windows equivalent. For simplicity, I’ll use HiDPI (which really is the universal technical term) for the rest of this blog post. Now that we have HiDPI support in Xojo, if you app doesn’t use any pictures, you can simply open your project, click on Shared under Build Settings and turn on the “Supports Retina/HiDPI” option. That’s all you need to do to have a HiDPI version of your app!
Having said that, if you are creating or using pictures in your project, there may be a few adjustments you’ll need to make to your code. A little over a year ago the process of making sure we had all of the necessary graphics together to build a Retina/HiDPI IDE was added to my to-do list. While 95% of the icons created for the Xojo IDE in 2013 already existed, most of the graphics that made up the IDE itself did not, and the IDE itself needed a bit of an overhaul to get it ready for the big change, both in graphics and in code…
2 CommentsIntrospection is a very handy and useful part of the Xojo language.
You can use Introspection to examine many of the objects that are in memory at runtime. You can access the properties in those objects, call methods on those objects and even create new instances- with some caveats of course.
Comments closedYou don’t need to hook up your Pi to a physical display, keyboard and mouse. You can set up VNC on the Pi so you can remotely connect to it.
My Raspberry Pi 2 sits on my desk next to one of my speakers. It’s not hooked up to any display. I use a combination of SSH, SFTP and VNC when I need to work with it.
Comments closedVisitors to Houston will find the city is served by 2 large, international airports (IAH & HOU), the restaurant scene is diverse and extensive, the city’s museums range from the acclaimed Children’s Museum to the beautiful Rothko Chapel, and the attractions of the surrounding area.
Comments closedIf you work at a desk all day, you should be thinking about your ergonomics.
Being comfortable while you work is important. It enables you to concentrate better, but more critically, it prevents you from injuring yourself. From Musculoskeletal to vision and hearing problems, yes, it is quite possible to injure yourself while working at a desk!
Comments closedI recently had someone ask me how to reorder the columns in a SQLite table. As you may be aware, the SQLite ALTER table does not have a lot of functionality compared to other databases and it certainly doesn’t have a way to do this.
Comments closedSometimes you’re going to need a data structure that is an array of classes and you’re going to want to sort them. The standard array Sort method can only sort simple types (Text, Integer, etc), so what do you do?
The traditional technique has been to use SortWith. You create a separate array of a simple type, populate it and then sort the temporary array using SortWith to sort the class array.
But there is an even slicker way to sort that was added in 2015 Release 3. You can now create your own custom comparison method and use that to sort the class. This custom method returns 0 if the values to compare are equal, a positive if the first value is greater than the second, and a negative value if the first value is less than the second.
Comments closed