[DUG] Presentation in Christchurch - any other meetings in Chch?

Jolyon Smith jsmith at deltics.co.nz
Wed Oct 14 19:30:09 NZDT 2009


Ø  Its a less certain thing as its still the future, but its my guess likely
in 5 years netbooks/laptops and mobile and phone OS will largely kill
desktop PCs and in time likely Windows too, as there is not much sign they
will be the leading candidate for mobile devices in 5 years.  Hence the more
cross platform and new UI (read touchscreen) enabled a language is the
better positioned it will be.

 

I am confident that touchscreen is a fad as far as desktop PCs or even
notebooks are concerned.  Why am I so confident?

 

Because it’s simply not new - if it were going to go “mainstream” it could
have and would have done so years ago.

 

Touchscreens have been with us for years and the price premium for touch
isn’t that much greater now than it has ever been.  Almost 10 years ago I
implemented an equivalent to the touchscreen keyboard demo’d by Malcolm, for
a touchscreen application I was working on back then.

 

I had a little smile to myself when he mentioned a rumoured or speculated
ability to define the layout for that keyboard control as this was exactly
how my implementation worked – it was a general purpose keyboard control,
but the keys it displayed were entirely configurable.  I still have the
code, and here’s a standard QWERTY layout (declared as an array) for the
control I implemented.  Keys with a VKCode display the specified Caption in
full.  Keys with a 0 VKCode displayed either one of the two character of the
caption – the first unshifted, the second (if specified) when shifted.  So
as you can tell from this particular layout, test entry using this
particular layout was entirely upper case:

 

  const

    // An array of TtsKeyDef records that defines the keyboard layout for a

    //  "simple" QWERTY keyboard (i.e. with no number pad).

    //

    // An entry in the array with an empty Caption, a VKCode of 0 (zero) and
a

    //  Proportion of 0 (zero) indicates an end of row or end of column.

    SIMPLE_KEYS  : array [0..60] of TtsKeyDef =

      (

        (Caption: 'Esc';        VKCode: VK_ESCAPE;        Proportion: 1),

        (Caption: '1!';         VKCode: 0;                Proportion: 1),

        (Caption: '2"';         VKCode: 0;                Proportion: 1),

        (Caption: '3£';         VKCode: 0;                Proportion: 1),

        (Caption: '4$';         VKCode: 0;                Proportion: 1),

        (Caption: '5%';         VKCode: 0;                Proportion: 1),

        (Caption: '6^';         VKCode: 0;                Proportion: 1),

        (Caption: '7&';         VKCode: 0;                Proportion: 1),

        (Caption: '8*';         VKCode: 0;                Proportion: 1),

        (Caption: '9(';         VKCode: 0;                Proportion: 1),

        (Caption: '0)';         VKCode: 0;                Proportion: 1),

        (Caption: '-_';         VKCode: 0;                Proportion: 1),

        (Caption: '=+';         VKCode: 0;                Proportion: 1),

        (Caption: 'Backspace';  VKCode: VK_BACK;          Proportion: 2),

        (Caption: '';           VKCode: 0;                Proportion: 0),

        (Caption: 'TAB';        VKCode: VK_TAB;           Proportion: 1.5),

        (Caption: 'Q';          VKCode: 0;                Proportion: 1),

        (Caption: 'W';          VKCode: 0;                Proportion: 1),

        (Caption: 'E';          VKCode: 0;                Proportion: 1),

        (Caption: 'R';          VKCode: 0;                Proportion: 1),

        (Caption: 'T';          VKCode: 0;                Proportion: 1),

        (Caption: 'Y';          VKCode: 0;                Proportion: 1),

        (Caption: 'U';          VKCode: 0;                Proportion: 1),

        (Caption: 'I';          VKCode: 0;                Proportion: 1),

        (Caption: 'O';          VKCode: 0;                Proportion: 1),

        (Caption: 'P';          VKCode: 0;                Proportion: 1),

        (Caption: '[{';         VKCode: 0;                Proportion: 1),

        (Caption: ']}';         VKCode: 0;                Proportion: 1),

        (Caption: '#~';         VKCode: 0;                Proportion: 1),

        (Caption: '';           VKCode: 0;                Proportion: 0),

        (Caption: 'CAPS';       VKCode: VK_CAPITAL;       Proportion: 2),

        (Caption: 'A';          VKCode: 0;                Proportion: 1),

        (Caption: 'S';          VKCode: 0;                Proportion: 1),

        (Caption: 'D';          VKCode: 0;                Proportion: 1),

        (Caption: 'F';          VKCode: 0;                Proportion: 1),

        (Caption: 'G';          VKCode: 0;                Proportion: 1),

        (Caption: 'H';          VKCode: 0;                Proportion: 1),

        (Caption: 'J';          VKCode: 0;                Proportion: 1),

        (Caption: 'K';          VKCode: 0;                Proportion: 1),

        (Caption: 'L';          VKCode: 0;                Proportion: 1),

        (Caption: ';:';         VKCode: 0;                Proportion: 1),

        (Caption: '''@';        VKCode: 0;                Proportion: 1),

        (Caption: 'ENTER';      VKCode: VK_RETURN;        Proportion: 2),

        (Caption: '';           VKCode: 0;                Proportion: 0),

        (Caption: 'Shift';      VKCode: VK_LSHIFT;        Proportion: 1.5),

        (Caption: '\|';         VKCode: 0;                Proportion: 1),

        (Caption: 'Z';          VKCode: 0;                Proportion: 1),

        (Caption: 'X';          VKCode: 0;                Proportion: 1),

        (Caption: 'C';          VKCode: 0;                Proportion: 1),

        (Caption: 'V';          VKCode: 0;                Proportion: 1),

        (Caption: 'B';          VKCode: 0;                Proportion: 1),

        (Caption: 'N';          VKCode: 0;                Proportion: 1),

        (Caption: 'M';          VKCode: 0;                Proportion: 1),

        (Caption: ',<';         VKCode: 0;                Proportion: 1),

        (Caption: '.>';         VKCode: 0;                Proportion: 1),

        (Caption: '/?';         vKCode: 0;                Proportion: 1),

        (Caption: 'SHIFT';      VKCode: VK_RSHIFT;        Proportion: 2.5),

        (Caption: '';           VKCode: 0;                Proportion: 0),

        (Caption: 'Ctrl';       VKCode: VK_CONTROL;       Proportion: 2),

        (Caption: ' ';          VKCode: VK_SPACE;         Proportion: 11),

        (Caption: 'Ctrl';       VKCode: VK_CONTROL;       Proportion: 2)

      ) ;

 

Touch has long been present and successful in niche verticals.  All that has
changed is that in recent years touch has found a new vertical that is more
directly exposed to consumers – handheld devices.  Give me a Delphi that can
produce applications for handheld devices and then we can talk.

 

Mac/Linux may be a stepping stone to that ambition, but I see no point in
wasting time on a cross-platform VCL that will have to be maintained
alongside it’s richer and more capable Windows VCL big brother.

 

I was often slapped down for suggesting that a Unicode switch be supported
because of the need to maintain and support two VCL frameworks, one Unicode
and one ANSI (the supposition that this would be necessary was a mistake
imho, but that’s a different discussion).

 

Yet maintaining two VCL’s, one of which is required from a single-source to
support 3 significantly different platforms is somehow less of a problem?

 

 

No, handhelds are one thing.  Desktops or even notebooks, laptops are
something else.  Holding out your hand at arms length to manipulate a screen
directly is neither comfortable nor accurate enough for prolonged daily
activity.

 

The touch support in Delphi is very “cool”.  It’s just not very useful.

 

Having said that, the tablet form factor is the platform where the Delphi
touch support may have a place but then begs the question again of how
relevant cross platform support is in respect of this technology.  How many
Mac/Linux tablets are there?

 

 

Ø  Also apps are moving more to be web enabled, where the UI is done by the
browser instead, 

 

This would seem to contradict your own argument for the need for a cross
platform Delphi.  If the browser is to be the host for the client
application then a Mac or Linux version of Delphi is just as irrelevant as
even a Windows version.  So why are we even bothering to fret about ANY
future direction for Delphi?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20091014/d13bbd08/attachment-0001.html 


More information about the Delphi mailing list