Tuesday 25 September 2012

Native iOS development for Delphi programmers: Project ‘Nougat’

If you’ve kept up to date with developments in the world of Delphi, you’ll be aware that Embarcadero have teased us with a multi-step way of targeting iOS devices using the cross-platform FireMonkey framework and then just recently taken it away again (for now…).

It seems almost prescient, then, that RemObjects have just announced Project ‘Nougat’, which is the next incarnation of their Delphi-like Object Pascal based Oxygene compiler.

Oxygene will soon be natively targeting three platforms:

  • .NET: Oxygene for .NET (aka Delphi Prism aka Embarcadero Prism) is the longstanding .NET compiler that took over from Delphi for .NET in Borland/CodeGear/Embarcadero’s RAD Studio suite. It was released in 2005 and supports all the platform features such as LINQ and the Parallel Framework and targets regular .NET, Silverlight, Windows Store (aka Metro), Mono, in other words anything .NET can be targeted from Oxygene for .NET.
  • Java & Android: Oxygene for Java (previously Project ‘Cooper’) was released in 2011 and supports the targeting the Java Virtual Machine and also fully supports the Android toolchain. This means you can target regular Java apps, Java servlets, Java applets, and also build apps for Android phones and tablets. I’ve posted quite a bit already on Android development using Oxygene for Java.
  • OS X and iOS: this is what Project ‘Nougat’ is all about. It is in development, and the beta is expected to start in early October 2012, with release in the first half of 2013. ‘Nougat’ will target:
    • 64-bit OS X apps
    • 32-bit ARM v7 iOS apps
    • 32-bit Intel iOS Simulator apps
    There will be no wrappers involved in the generated apps, so nothing like Mono will be necessary. You will get native apps out of Project ‘Nougat’, coded in Pascal but as native as if you’d used Objective-C.

This is a great move forwards to fill in the gaps in what Oxygene can target and now gives a full spread over the major desktop and mobile platforms in one permutation or another.

If interested in native iOS and OS X targeting using all the regular native APIs as nature intended then be sure to read the series (in progress) of posts by RemObjectsmarc hoffman:

Additionally (and perhaps importantly), if you buy an Oxygene subscription for $499 (that’s the price for a new subscription – it’s $349 for a renewal) you get all three platforms: Oxygene for .NET and Oxygene for Java (and Android) and Project ‘Nougat’ (you’ll get access to the beta and also the shipping product when it comes out in the first half of 2013).

Monday 24 September 2012

Delphi actions

I’ve got a bunch of Delphi articles on my web site, mostly from the halcyon days of international Delphi conferences and printed Delphi magazines. One of the old articles that still gets quite a few regular hits is the one on actions from the early part of this century. Given it was around a decade old and actions have recently been added into the FireMonkey framework in Delphi XE3 I thought it might be an idea to dust it down and update it a bit.

So I present my slightly shinier actions article: Actions, Action Lists and Action Managers for your delectation. I’ve tried to be reasonably thorough and certainly found a bunch of places where methods have moved from one class to another. And I’ve covered the FireMonkey action support, meagre as it may be.

By ‘meagre’ that I mean that we have action lists but not managers nor action bands. Also, FireMonkey actions are not equipped to find arbitrary action targets, which is why the collection of standard actions is rather underwhelming. Still, it’s a first pass, and when Delphi 4 introduced actions, things were pretty thin on the ground there too, so hopefully matters will improve in that regard.

Oh, in the process of updating the article I bumped into what certainly appear to be a bundle of bugs in certain aspects of the VCL action bands – they’re highlighted in the text.

If it looks like I’ve overlooked anything key or made a hash of understanding something in the current implementation, do be a good sport and let me know, won’t you? That way there’s a more than average chance of me getting it fixed.

Thursday 20 September 2012

Windows 8 Boot Manager – Goodbye

I’ve split my hard disk into a couple of partitions and am dual booting Windows 7 and Windows 8. Consequently I have the Windows boot manager pop up to give me a choice of OS to boot into for 30 seconds, before the default OS (Windows 8) is launched. One rather annoying thing I’ve discovered about Windows 8 is its new boot manager and the amount of time it takes to show up on power up or system restart.

Windows 8 boot manager

To be fair, the new boot manager looks much more appealing to the eye than the last one, which was old school text mode. It’s had quite some work done to it to ensure that it will be usable and appealing even on a keyboard-less Windows RT ARM device. You can read about the boot manager’s evolution on the Windows Team‘s blog post.

Windows 7 boot manager

The new one supports touch and sports the modern "Windows Store app" appearance(y'know, the "Metro" style...). It does certainly look pretty swish and makes the previous version look rather archaic. Additionally, when you choose Windows 8 from the boot menu, Windows 8 appears very quickly afterwards.

All good points for the Windows 8 boot manager, right? Right.

However, the boot manager itself takes a really long time to wind itself up and display the options. That's because it requires a good chunk of Windows 8 to be loaded up in order to do so, which of course then explains why Windows 8 can start so quickly after being chosen from its boot manager.

If I want to boot to Windows 7 then I have to wait for a good chunk of Windows 8 to load in order to be presented with the option of booting to Windows 7, which then results in the machine restarting, and popping out of the BIOS screen into the Windows 7 startup sequence.

So the question is: can I get my old, simple, text mode boot manager back?
The answer is: yes.

There's two approaches to sorting this. One is simply switching which the default boot OS is. When Windows 8 is the default OS to boot to you get the Windows 8 boot manager, when Windows 7 is the default OS to boot to you get the old Windows 7 boot manager. The other is to tell Windows 8 to use the 'legacy' boot manager instead of the 'standard' one, which then means the text mode boot manager appears regardless of which OS has been set to be the default.

Let's take a look at these two options.

RAD Studio mobile support

With the removal of the support (admittedly placeholder support) for iOS in RAD Studio XE3 there has been an unsurprising volume of wailing and gnashing of teeth. To answer questions such as what, when, how etc. the RAD Studio Mobile Roadmap has now been made public.

From this we see that native ARM compilers for Delphi and C++Builder are in the works targeting native iOS and native Android along with a FireMonkey Mobile Framework (with sensor support and native UX) and associated mobile designers (with form factor and orientation awareness).

The planned timeframes for all this are as follows:

  • Mobile Beta Program, available to XE3 customers, opening late 2012
  • iOS Edition, planned for release in first half of 2013
  • Android Edition, planned for release in mid-2013

Delphi XE3 Professional and C++Builder XE3 Professional customers should be able to get the iOS and Android add-ons at low cost. Customers with the Enterprise Editions of the products or any version of RAD Studio XE3 will either get the mobile packs through Software Assurance or as low-cost upgrades. [ Updated to have the stated facts be, er, factual ]

CodeRage 7

Following on from the success of CodeRage 6 and CodeRage 5 before that, it makes sense that the next iteration of Embarcadero’s free online multi-day technical conference is to be called CodeRage 7 and will be here in a matter of weeks!

This year there is a Delphi CodeRage held November 6th to 8th (that’s a Tuesday, Wednesday and Thursday) and then a separate C++ CodeRage will run through November 13th to 15th (again a Tue-Thu).

There’s sure to be some great sessions through these CodeRage conferences. If you’re in the VCL or FireMonkey worlds then good technical content is yours for the taking by attending CodeRage.

If you’re a deft exponent of some aspect of the VCL or FireMonkey libraries, or can pass on Delphi or C++Builder tips, tricks and techniques, then submit a paper.

Registration for CodeRage 7 opens in October.

Wednesday 19 September 2012

Windows 8 ‘Camp In A Box’

For the last few months Microsoft has been running Windows 8 free developer events around the world (Dev Camps) called 'Windows 8 Camps'. They are still going on so do check the ongoing schedule on the Microsoft site.

If you've been along to one of them you'll have picked up a lot of information about Windows 8, its capabilities and how you take advantage of them in code. The hands-on labs from the Windows 8 Camp have been made available to anyone interested, but until recently the resources were still specific to pre-release versions.

As of a couple of days back the Windows 8 Camp In A Box is now available updated to the RTM version of Windows 8. You can either pull down a version for C# and XAML, or a version for JavaScript and HTML. Both are available at this download link and both come in at approximately 143MB.

This is definitely worth pulling down. It's an entirely self-contained training lab that takes you through all the steps of building up a nice, functional Windows 8 app. Enjoy!

[ UPDATE: this Camp-in-a-Box runs through the development of a Windows 8 cookbook application called the Contoso Cookbook, along with application. The installable also adds in a variety of useful presentations and resources.

It seems there is also a cut down version of the same kit without the presentations and additional resources at this download link, where the downloads are a little over 60 MB.

Finally, there is a mass of pre-fabricated Windows 8 sample apps set up to run with the RTM version of Visual Studio 2012, which can be pulled down for either C++, C#, JavaScript or VB.NET. Those are available from this link. ]

Monday 17 September 2012

Visual Studio 2012 and those... CAPS

Anyone who’s glimpsed Visual Studio 2012 has seen it shouting at them and wondered why, given the luxury of having both lower and upper case available, Microsoft has chosen to go for all upper case in the menu bar. Well, if you really want to know, read the post on The Visual Studio Blog as that explains their reasoning.

I read it. To be honest it didn’t seem very convincing. There is mention of All Caps being a strong signature element of styling for navigation in Microsoft UIs. They do point at some upper case in a web site and on the Zune, but given the main UI thrust at the moment is Metro^H^H^H^H^H the Modern UI in Windows 8 and on Windows Phone and those don’t appear to focus on upper case I remain dubious.

I am aware that Office 2013 will also be using the upper case motif (you can see it here). This to me and to many who share a certain sensitivity of eyesight is somewhat regrettable.

Fortunately, with Visual Studio at least, you can instruct it to forget all about the upper case fad and just ‘be normal.’ This involves a little registry hackery. Run regedit.exe and in the HKEY_LOCAL_MACHINE hive navigate to the Software\Microsoft\VisualStudio\11.0\General subkey. Add in the DWORD SuppressUppercaseConversion and give it a value of 1. As you might expect, a value of 0 reverts to the short-sighted choice of upper case again.

This trick is getting reasonably well known around the Arpanet, but I’m posting it to help ensure the message is spread as far and as wide as feasible. I’ll cross my fingers that Office 2013 also offers up a trick available to turn off its SHOUTY MENUS.

Getting an Android app’s version number

A while back I was preparing an app to upload to the Android Market Google Play. One of the requirements of uploading is that the app must contain version information. As of the August update of Oxygene for Java 5.2, the default Android application template does not contain version information so you need to insert this manually, and then update it as and when your code is updated.

You add version information to your Android application by editing the manifest file. In the outermost element, the manifest element, you add in a couple of attributes: versionCode and versionName.

versionCode is an integer that can be anything you like, as long as each new version code is higher than the last – clearly an incrementing number is the simplest option here. versionName is the string that is shown to the user – it’s not used by the system so can be any test you like.

So, for example, you could open the manifest element like this on your first app version:

<manifest
    xmlns:android="
http://schemas.android.com/apk/res/android"
    package="com.acme.app"
    android:versionCode="1" android:versionName="1.00">

Each time you want to issue a new application you simply update the two version-related attributes, maybe like this:

<manifest
    xmlns:android="
http://schemas.android.com/apk/res/android"
    package="com.acme.app"
    android:versionCode="2" android:versionName="1.01">

With that done, what’s involved in displaying some version information to the user, say in an About screen in the app? Well that’s what I wanted to do with the app mentioned above – it was my Plasma app (a free graphics plasma effect demo written in Oxygene for Java).

To get version info we must access a PackageInfo class for the app as that can give us information about the Android package gleaned from the application manifest file – specifically the class exposes versionCode and versionName members that return the values from the manifest discussed above.

How do we get a PackageInfo class? That can be arranged by a PackagManager object that offers a getPackageInfo() method (that we can access as a PackageInfo property). Pass it the package name and it will return the goods for us.

The Context class is what Activity inherits from, and it defines two useful methods: getPackageManager() and getPackageName() – hopefully it will be patently clear these will finish the job off.

In the case of my plasma app I have layout resource containing a TextView called aboutText. I also have two string resources that define formatted strings waiting to have a version string (the version name from the manifest file) plugged in. For example, one of them is used to set up the About activity’s title and is defined thus:

<string name="plasma_about_title">About Plasma %s</string>

The code to access the TextView control and give it a formatted string containing the version information looks like this:

var aboutTextView: TextView :=
 
TextView(findViewById(R.id.aboutText));
var versionName :=
  PackageManager.PackageInfo[PackageName, 0].versionName;
aboutTextView.Text :=
  String[R.string.plasma_about_text, versionName];
Title := String[R.string.plasma_about_title, versionName];

If you want to use the original method names as defined in the Google Android documentation, as opposed to the equivalent implied properties, it would look like this instead:

var aboutTextView: TextView :=
  TextView(findViewById(R.id.aboutText));
var versionName :=
  getPackageManager().getPackageInfo(
    getPackageName(), 0).versionName;
aboutTextView.setText(getString(
  R.string.plasma_about_text, versionName));
setTitle(getString(R.string.plasma_about_title, versionName));

Notice we are making use of the overload of getString() that takes a string resource id and a list of format string arguments to use when building the formatted string.

Windows 8 keystrokes

If you’re an old school computer user then whilst getting the hang of Windows 8 you’ll bump into a whole heap of keystrokes that will help make it dance to your tune. Here’s the list of useful keystrokes I’ve found that work in Windows 8, for when you get around to upgrading from Windows 7 (the shortcut keys for that are listed here).

Note that this table uses the Windows key (or WinKey) character (ÿ). Since Unicode has no character for this image I’m explicitly referencing Microsoft’s WingDings font character 255 so it probably looks all yucky a Mac, given Macs don’t have the WingDings font available by default.

Some of the shortcut keystrokes have been redefined since Windows 7. For example the desktop peek keystroke was ÿ+Space but has now been re-mapped as ÿ+, and ÿ+Space now means something else. Also, ÿ+Space no longer invokes the Windows Mobility Centre but displays the Quick Link menu instead.

Also, some keystrokes have gone, such as ÿ+G, which is no longer required thanks to Windows Gadgets not being supported by Windows 8.

Shortcut    aka Meaning
Ctrl+Shift+Esc   Invoke Task Manager or whatever replacement you might have installed, such as Process Explorer from SysInternals
Alt+Tab   Cycle through "Metro" (Windows 8) and desktop apps
Alt+Shift+Tab   Cycle through "Metro" (Windows 8) and desktop apps in reverse order
Alt+Esc   Switch to next desktop app in Alt+Tab list
Alt+Shift+Esc   Switch to previous desktop app in Alt+Tab list
ÿ+B WinKey+b Give focus to Task Bar’s notification area so arrow keys can move between notification icons, Enter can select them (like clicking them with the mouse), Shift+F10 can show context menu, Shift+Tab can move focus to notification area etc.
ÿ+C WinKey+c Display the Charms bar. Equivalent to moving the mouse to the right edge of the screen or swiping in from the right edge of the screen.
ÿ+D WinKey+d Toggle show desktop
ÿ+E WinKey+e Windows Explorer
ÿ+F WinKey+f Open Search Charm and do a search on Files
ÿ+H WinKey+h Open Share Charm
ÿ+I WinKey+i Open Settings Charm
ÿ+J WinKey+j Switch the main app and snapped app
ÿ+K WinKey+k Open Devices Charm
ÿ+L WinKey+l Lock workstation
ÿ+M WinKey+m Minimise all desktop app windows
ÿ+Shift+M WinKey+Shift+m Restore all desktop app windows
ÿ+O WinKey+o Lock device orientation
ÿ+P WinKey+p Invoke the presentation menu to allow options of displaying on computer only, duplicating to external display, extending to external display or displaying on external display only
ÿ+Q WinKey+q Open Search Charm and do a search on Apps
ÿ+R WinKey+r Run a command
ÿ+T WinKey+t Give focus to Task Bar so arrow keys can move between Task Bar items, Enter can select them (like clicking them with the mouse), Shift+F10 can show context menu, Tab can move focus to notification area etc. Repeated presses of the keystroke cycles through the buttons on the Task Bar
ÿ+U WinKey+u Windows Ease of Access Centre
ÿ+V WinKey+v Cycle through notifications
ÿ+Shift+V WinKey+Shift+v Cycle through notifications in reverse order
ÿ+W WinKey+w Open Search Charm and do a search on Settings
ÿ+X WinKey+x Opens Quick Link menu
ÿ+Z WinKey+z Show app commands. Equivalent to right-clicking a general area of the application.
ÿ+Break WinKey+Break Windows System properties
ÿ+F1 WinKey+F1 Windows help
Prt Sc Print Screen Copy a screenshot to the clipboard
Alt+Prt Sc Alt+Print Screen Copy a screenshot of just the focused window to the clipboard
ÿ+Prt Sc WinKey+Print Screen Save a screenshot as a PNG in logged on user’s My Pictures folder
ÿ+Tab WinKey+Tab Cycle through "Metro" (Windows 8) apps
ÿ+Shift+Tab WinKey+Shift+Tab Cycle through "Metro" (Windows 8) apps in reverse order
ÿ++ WinKey+Plus Zoom in (via Magnifier, which autostarts)
ÿ+- WinKey+Minus Zoom out (via Magnifier)
ÿ+Esc WinKey+Escape Cancel zoom, if enabled
ÿ+. WinKey+Period Cycle through snapping an app to the right, to the left and unsnapping it
ÿ+Shift+. WinKey+Shift+Period Cycle through snapping an app to the left, to the right and unsnapping it
Alt+↑ Alt+Up Arrow In Windows Explorer navigate one folder up in the folder hierarchy
Ctrl+Shift+N   In Windows Explorer this creates a new folder
Alt+Enter   Equivalent of right-clicking an item in Windows Explorer and choosing Properties
Shift+right-click on an item in Windows Explorer Enables extended Send To menu (has many more items in it). Also adds Copy as Path to the context menu.
Shift+right-click on a folder Adds in context menu command: Open command window here. This starts cmd.exe with the current directory being the folder in question.
Ctrl+Shift+Enter   In Start screen's Apps search results launches app as Administrator
Shift+Alt+Prt Sc left Shift+left Alt+Print Screen Toggle High Contrast mode
Ctrl+Alt+↑ Ctrl+Alt+Up Arrow Rotate screen to default orientation default
Ctrl+Alt+→ Ctrl+Alt+Right Arrow Rotate screen orientation 90 degrees from default
Ctrl+Alt+↓ Ctrl+Alt+Down Arrow Rotate screen orientation 180 degrees from default
Ctrl+Alt+← Ctrl+Alt+Left Arrow Rotate screen orientation 270 degrees from default
ÿ+, WinKey+Comma Makes all windows transparent so you can see the desktop until you release the keys. Equivalent to (invisible) desktop peek button to right of Task Bar’s notification area. This was done by ÿ+Space in Windows 7
ÿ+↑ WinKey+Up Arrow Maximise window. Same as dragging window’s title bar to top of screen.
ÿ+↓ WinKey+Down Arrow Restore maximised window, or minimise restored window
ÿ+← WinKey+Left Arrow Alternately expand windows to fill left half of screen, expand to fill right half of screen or restore to previous size. Dragging window’s title bar to left edge of screen also expands window to fill left half of screen.
ÿ+→ WinKey+Right Arrow Alternately expand windows to fill right half of screen, expand to fill left half of screen or restore to previous size. Dragging window’s title bar to right edge of screen also expands window to fill right half of screen.
ÿ+Home WinKey+Home Minimise all but the active window. You can get the same effect by clicking on a window’s title bar and shaking it about (known as Aero Shake)
ÿ+Shift+↑ WinKey+Shift+Up Arrow Maximise window vertically (leave width unchanged). This is the same as double-clicking the window’s top or bottom resize border
ÿ+Shift+← WinKey+Shift+Left Arrow Move window to the monitor on the left
ÿ+Shift+→ WinKey+Shift+Right Arrow Move window to the monitor on the right
ÿ+PgUp WinKey+Page Up Move Start screen and "Metro" (Windows 8) apps to the monitor on the left
ÿ+PgDn WinKey+Page Down Move Start screen and "Metro" (Windows 8) apps to the monitor on the right
ÿ+<digit> WinKey+<a number> Start app pinned on the Task Bar at the position corresponding to the number pressed, or switch to it if already open
ÿ+Shift+<digit> WinKey+Shift+<a number> Start new instance of app pinned on the Task Bar at the position corresponding to the number pressed. Shift-clicking the item does the same.
Shift+click a Task Bar button   Same as ÿ+Shift+<digit>
ÿ+Ctrl+Shift+<digit> WinKey+Ctrl+Shift+<a number> Start new instance of app pinned on the Task Bar at the position corresponding to the number pressed running as administrator. Ctrl+Shift-clicking the item does the same.
Ctrl+Shift+click a Task Bar button   Same as ÿ+Ctrl+Shift+<digit>
ÿ+Ctrl+<digit> WinKey+Ctrl+<a number> Cycle through open windows of app pinned on the Task Bar at the position corresponding to the number pressed
ÿ+Alt+<digit> WinKey+Alt+<a number> Show the Jump List for the item on the Task Bar at the position corresponding to the number pressed
Shift+right-click a Task Bar button   Show XP-style Window menu
Ctrl+click a grouped Task Bar button   Cycle through the windows of the group
ÿ+Space WinKey+Space Switch input language and keyboard layout
ÿ+Ctrl+Space WinKey+Ctrl+Space Switch to previous input language and keyboard layout

Windows 7 keystrokes

Having recently settled into regularly using Windows 8 I’ve also just bumped into a new Windows 7 keystroke that I hadn’t previously been aware of. It seems that the enhanced Task Bar, which you can pin application shortcuts to, has shortcut keystrokes related to those pinned items: Windows key + a digit, where the digit represents the pinned item’s position on the Task Bar. For a pinned item that is not running, the shortcut launches that app. If the pinned item is already running the shortcut switches to that item.

For example, if you have Google Chrome pinned as the third item on your Task Bar, then Win+3 will either switch to Chrome, or launch it if it’s not already running. Simple.

Inspired by this I did some digging to check out what other keystrokes were introduced by Windows 7 (granted some of them may have come from Vista, but I’m not sufficiently interested to work out which – let’s just say they are new when compared to Windows XP). It seems there are quite a few. I’d encountered most of them before, but some of them were definitely new to me. You can see what I’ve found below – I’ve also added them all to my Commands and Keyboard Shortcuts page. I’ll look at the new Windows 8 keystrokes in a separate post.

Note that this table uses the Windows key (or WinKey) character (ÿ). Since Unicode has no character for this image I’m explicitly referencing Microsoft’s WingDings font character 255 so it probably looks all yucky a Mac, given Macs don’t have the WingDings font available by default.

Shortcut    aka Meaning
ÿ+Tab WinKey+Tab Glitzier version of Alt+Tab
ÿ+Shift+Tab WinKey+Shift+Tab Glitzier version of Alt+Shift+Tab
ÿ++ WinKey+Plus Zoom in (via Magnifier)
ÿ+- WinKey+Minus Zoom out (via Magnifier)
ÿ+Esc WinKey+Esc Turn off zoom, if active
ÿ+G WinKey+g Cycle between the Windows Gadgets on the desktop
Alt+↑ Alt+Up Arrow In Windows Explorer navigate one folder up in the folder hierarchy
Ctrl+Shift+N   In Windows Explorer this creates a new folder
Shift+right-click on an item Enables extended Send To menu (has many more items in it). Also adds Copy as Path to the context menu.
Shift+right-click on a folder Adds in context menu command: Open command window here. This starts cmd.exe with the current directory being the folder in question.
Ctrl+Shift+Enter   In Start menu's search box launches as Administrator
Prt Sc Print Screen Copy a screenshot to the clipboard
Alt+Prt Sc Alt+Print Screen Copy a screenshot of just the focused window to the clipboard
Shift+Alt+Prt Sc left Shift+left Alt+Print Screen Toggle High Contrast mode
Ctrl+Alt+↑ Ctrl+Alt+Up Arrow Rotate screen to default orientation default
Ctrl+Alt+→ Ctrl+Alt+Right Arrow Rotate screen orientation 90 degrees from default
Ctrl+Alt+↓ Ctrl+Alt+Down Arrow Rotate screen orientation 180 degrees from default
Ctrl+Alt+← Ctrl+Alt+Left Arrow Rotate screen orientation 270 degrees from default
ÿ+Space WinKey+Space Makes all windows transparent so you can see the desktop until you release the keys. Equivalent to desktop peek button to right of Task Bar’s notification area. This is known as Aero Peek.
ÿ+↑ WinKey+Up Arrow Maximise window. Same as dragging window’s title bar to top of screen.
ÿ+↓ WinKey+Down Arrow Restore maximised window, or minimise restored window
ÿ+← WinKey+Left Arrow Alternately expand windows to fill left half of screen, expand to fill right half of screen or restore to previous size. Dragging window’s title bar to left edge of screen also expands window to fill left half of screen.
ÿ+→ WinKey+Right Arrow Alternately expand windows to fill right half of screen, expand to fill left half of screen or restore to previous size. Dragging window’s title bar to right edge of screen also expands window to fill right half of screen.
ÿ+Home WinKey+Home Minimise all but the active window. You can get the same effect by clicking on a window’s title bar and shaking it about (known as Aero Shake)
ÿ+Shift+↑ WinKey+Shift+Up Arrow Maximise window vertically (leave width unchanged). This is the same as double-clicking the window’s top or bottom resize border
ÿ+Shift+← WinKey+Shift+Left Arrow Move window to the monitor on the left
ÿ+Shift+→ WinKey+Shift+Right Arrow Move window to the monitor on the right
ÿ+T WinKey+t Give focus to Task Bar so arrow keys can move between Task Bar items, Enter can select them (like clicking them with the mouse), Shift+F10 can show context menu, Tab can move focus to notification area etc.
ÿ+B WinKey+b Give focus to Task Bar’s notification area so arrow keys can move between notification icons, Enter can select them (like clicking them with the mouse), Shift+F10 can show context menu, Shift+Tab can move focus to notification area etc.
ÿ+P WinKey+p Invoke the presentation menu to allow options of displaying on computer only, duplicating to external display, extending to external display or displaying on external display only
ÿ+<digit> WinKey+<a number> Start app pinned on the Task Bar at the position corresponding to the number pressed, or switch to it if already open
ÿ+Shift+<digit> WinKey+Shift+<a number> Start new instance of app pinned on the Task Bar at the position corresponding to the number pressed. Shift-clicking the item does the same.
Shift+click a Task Bar button   Same as ÿ+Shift+<digit>
Ctrl+Shift+click a Task Bar button   Open program as administrator
ÿ+Ctrl+<digit> WinKey+Ctrl+<a number> Cycle through open windows of app pinned on the Task Bar at the position corresponding to the number pressed
ÿ+Alt+<digit> WinKey+Alt+<a number> Show the Jump List for the item on the Task Bar at the position corresponding to the number pressed
Shift+right-click a Task Bar button   Show XP-style Window menu
Ctrl+click a grouped Task Bar button   Cycle through the windows of the group

Friday 14 September 2012

Delphi happenings

Well, I turn my back for a mere month and when I turn round again all sorts of occurrences and shenanigans have happened in the world of Delphi and RAD Studio! Here’s a summary for anyone who has also been distracted with other matters over recent weeks:

  • RAD Studio XE3 is released and available
  • RAD Studio XE3 world launch tour in progress
  • Delphi XE3 and C++Builder XE3 have Windows 8 support, but not necessarily in the form you might expect
  • Delphi compiler maintainer leaves Embo
  • Now you can’t do client/server apps in Delphi Professional. Oh, but now you can
  • RAD Studio XE3 drops mobile support (for a bit)
  • No 64-bit C++ just yet
  • Embo announces an MVP program

Let’s take a look at each of these…..

Thursday 13 September 2012

Windows 8 and me

As the more observant among you will doubtless be aware, Windows 8 is here. Of course it’s only actually here for developers and similar types who can download it from Microsoft’s Developer Network or TechNet. Normal punters will have to wait a little while before they can either get their hands on it or fervently spurn it.

It was released to manufacturing right at the start of August 2012, made officially available to developer types on 15th August and will be made available to the populace at large towards the end of October (the 26th).

I’d originally installed the Developer Preview from September 2011 and largely ignored it. Then I installed February’s Consumer Preview and had a little dabble with it, to see what was new and different, though it didn’t get much of my attention. Then in June the Release Preview replaced the Consumer Preview and I focused a bit more time on it on the occasions when that the VM in question booted up. And now I’ve got the shipping build of Windows 8 Enterprise 64-bit installed on a new laptop (dual-booting with Windows 7 Ultimate 64-bit).

So now I’ve had a chance to get a small flavour of this new release, which Microsoft seems to be hoping will get a reasonable foothold in the market, but which has generated quite a lot of negative press from a variety of cynical pundits.

Oh, and before we get started, I should point out that since the introduction of Windows Phone and then all through the Windows 8 development cycle, the new minimalist style of applications that run on the new WinRT subsystem have been consistently labelled as Metro apps, the UI style being called the Metro style. This is no longer the case, as reported on ZDNet in early August. Apparently a German company called Metro has decided to take its name back.

At the time of this story on The Register and this one on ZDNet, the suggestion was that Metro apps were to be called Windows 8 apps, but that was just speculation. Another new name for the Metro style is Windows 8 Style UI, which seems to be the one featured the marketing materials. But developers are being targeted with the term Modern UI – they will be building Modern UI-style apps. That said, a quick check in Visual Studio 2012 reveals the various project templates using the phrase Windows Store in place of Metro.

Visual Studio 2012 refers to Windows 8 Modern UI apps as Windows Store apps

It’s all far from clear to be sure.