Visualizzazione post con etichetta XE7. Mostra tutti i post
Visualizzazione post con etichetta XE7. Mostra tutti i post

lunedì 22 febbraio 2016

Hotfix per RAD Studio XE8 e XE7



Nei giorni scorsi Embarcadero ha reso disponibili due hotfix per RAD Studio XE7 ed XE8. Una piacevole novità che risponde finalmente con i fatti alla promessa di allargare il periodo di supporto sulle precedenti versioni di Delphi.

Potete trovare a queste pagine i due update:
Gli update in questione saranno disponibili a tutti quelli che hanno attiva assieme alla licenza Delphi una "Update Subscription", se già non l'avete contattate il vostro rivenditore e chiedete una quotazione, il mio consiglio è quello di muovervi verso questa forma di "abbonamento" che vi assicura, oltre ad avere automaticamente tutte le versioni di Delphi che escono, anche tutti gli update anche per le versioni precedenti.



martedì 21 aprile 2015

Evento Delphi Porte Aperte 2015: Programma e iscrizioni


Anche quest'anno Wintech-Italia organizza Delphi Porte Aperte, un evento gratuito di mezza giornata per offrire ai partecipanti una visione sullo stato dell'arte di Delphi (e RAD Studio) e approfondire le caratteristiche più interessanti delle ultime versioni degli ambienti di sviluppo targati Embarcadero.

L'edizione 2015 si terrà (come l'anno scorso) a Padova, presso lo Sheraton Hotel.
Maggiori informazioni:
Quest'anno, una importante novità: la mattina del giorno dell'evento, si terranno due seminari (a un prezzo di lancio) di approfondimento tenuti dagli Embarcadero MVP Andrea Magni e Paolo Rossi.

Gli argomenti dei seminari vertono principalmente su ambiti di automazione industriale e sviluppo di applicazioni business-oriented, particolarmente indicati per chi deve sviluppare applicazioni professionali e moderne:
  • Andrea Magni: "App business con Delphi (mobile e oltre!)"
  • Paolo Rossi: "Delphi per l'automazione industriale"
Per iscriversi ai seminari, potete usare questa pagina del nostro shop on-line.

Un ringraziamento anticipato a Devart e Fast Reports nostri partner nell'organizzazione della giornata e che metteranno a disposizione premi per i partecipanti (maggiori dettagli durante l'evento)!




Vi aspettiamo numerosi!
Qui trovate qualche fotografia dell'edizione 2014 !

Andrea e Paolo


martedì 16 dicembre 2014

RAD Studio XE7 in action Live Bologna: foto, ringraziamenti e codice sorgente

Si è tenuto ieri a Bologna l'evento RAD Studio XE7 in action Live, un evento Embarcadero organizzato da BitTime Software in collaborazione con Wintech-Italia.

L'evento era volto a illustrare le novità introdotte nella VCL (quindi Windows, Desktop) con le ultime versioni di RAD Studio (Delphi e C++ Builder).
In particolare è stata dedicato ampio spazio:

  • a come dare un aspetto moderno alle applicazioni tramite l'uso degli stili VCL;
  • ai nuovi componenti TaskBar e JumpList che migliorano l'integrazione con Windows;
  • alle nuove feature del linguaggio e della RTL (metodi anonimi, generici, AppTethering, nuove estensioni sintattiche, type helpers, ecc);
  • alla nuova Parallel Programming Library;
  • a FireDAC, la libreria di accesso ai dati di RAD Studio inclusa nel prodotto con la versione XE3.
Ringraziandovi per la partecipazione, vi lasciamo qualche fotografia dell'evento:






Qui trovate l'album Google+ con altre fotografie:



Ringraziamo tutti i partecipanti (molto attivi!) e Fabrizio e Valentina di BitTime per l'organizzazione.

Vi ricordiamo che potete trovare il codice sorgente delle demo utilizzate al seguente indirizzo:


Grazie e a presto!

Andrea e Paolo

venerdì 5 dicembre 2014

RAD Studio XE7 in action live: workshop gratuito a Bologna!

Si terrà a Bologna, lunedì 15 dicembre 2014, il prossimo evento RAD Studio XE7 in action live: un workshop gratuito organizzato da bit Time Software e Wintech Italia, in collaborazione con Embarcadero.



L'evento è focalizzato sulle novità introdotte nelle ultime versioni di RAD Studio ed è in particolare rivolto agli sviluppatori di applicazioni VCL Desktop che desiderano ammodernare le proprie applicazioni sfruttando le nuove funzionalità offerte dall'ambiente di sviluppo.

Alcuni degli argomenti trattati: Novità del linguaggio e della RTL, Parallel Computing Library, Librerie REST e FireDAC.
Un pomeriggio denso di informazioni per chi vuole proiettare nel futuro le proprie applicazioni.

Le sessioni tecniche sono affidate a Wintech-Italia e saranno tenute da:
  - Andrea Magni, Embarcadero MVP
  - Paolo Rossi, Embarcadero MVP

Vi rimando alla pagina dell'evento per l'agenda dettagliata, il modulo di iscrizione e i dettagli sulla location:


Vi aspettiamo numerosi!

Andrea

giovedì 6 novembre 2014

Google Material Design e FireMonkey?

Google Material Design

Qualche settimana fa Google ha rilasciato ufficialmente le specifiche del Material Design, le nuove linee guida per la GUI delle applicazioni Android.
Si tratta di una documentazione molto estesa che riguarda moltissimi aspetti della GUI delle applicazioni mobile e sicuramente ci vorrà del tempo prima che tutte queste proposte vengano assorbite dagli sviluppatori di tutto il mondo.
Alcune applicazioni molto popolari però hanno già pubblicato degli aggiornamenti includendo elementi del Material Design e ovviamente non c'è miglior fonte di ispirazione delle applicazioni di Google stessa (Chrome, Google+, Play Store, Play Music, ...).

Da qualche giorno stavo cercando di mimare il comportamento dell'app Android Google+ per quanto riguarda le animazioni di entrata/uscita delle barre superiori e del pulsante delle azioni situato nella parte inferiore dello schermo.




Oltre a dare all'utente una sensazione di responsività dell'applicazione (c'è molta enfasi circa le transizioni animate nel Material Design), questo approccio permette anche di dedicare il massimo spazio disponibile alla lista dei contenuti che vogliamo presentare e al contempo poter usufruire di una barra del titolo di dimensioni decenti e che possa ospitare controlli anche complessi (ComboBox, Slider, trackbar ecc..).

Un tentativo

Con un po' di attenzione a non complicare troppo le cose, ho provato a replicare lo stesso effetto con Delphi XE7.
Ho scelto di usare una TListView come contenitore principale (popolandola con un TPrototypeBindSource) e l'ho posizionata sulla form (Align = Client).
Per poter aggiungere sopra di essa gli altri controlli interessati (le barre del titolo ed eventuali altri pannelli animati) senza interferire con la ListView stessa, ho aggiunto al suo interno un TLayout con Align = Contents (un valore introdotto nelle ultime versioni di Delphi che permette al layout di coprire l'intera area della listview), di modo da poter avere una sorta di secondo layer su cui poggiare altri componenti costituitivi delle barre superiori e della pulsantiera inferiore.


Sfruttando la proprietà ScrollViewPos della TListView (per capire come l'utente sta muovendo la lista), l'evento OnPaint della stessa (per avere una forte frequenza di aggiornamento, avendo cura di aggiungere qualche accorgimento per evitare di peggiorare troppo le prestazioni) e aggiungendo qualche effetto (TShadowEffect) qua e là, il risultato mi sembra abbastanza soddisfacente e si tratta in tutto di poche decine di righe di codice.
Ecco un paio di screenshot (che non rendono molto l'idea, trattandosi per lo più di animazioni) del risultato finale:


Si tratta ovviamente di un approccio minimale e per riuscire ad avere uno scostamento iniziale della listview tale da non far finire i primi item sotto i pannelli di intestazione, ho dovuto sacrificare la possibilità di sfruttare gli ItemHeader, forzandone uno di altezza pari ai pannelli di intestazione stessi (un po' un trucchetto, diciamo).

Vi invito a scaricare i sorgenti e provare direttamente (anche su Win32 ma meglio su un dispositivo mobile) o di installare direttamente l'APK di cui trovate il link qui sotto.

Update: ho aggiunto un video dimostrativo (grazie alla app gratuita Mirror)!

Source code e APK

sabato 4 ottobre 2014

Leggere e produrre Barcode con Delphi XE7 (Update)

Introduzione

In un precedente blog post, avevamo visto come sia possibile comandare via Intent applicazioni di terzi (Barcode Scanner) per implementare facilmente la funzionalità di lettura (e produzione) di un codice a barre dalla vostra applicazione Delphi (XE5) per Android.

Ho deciso, dopo alcune richieste pervenute via email, di pubblicare questo aggiornamento che sfrutta il supporto (introdotto nella versione XE6 e illustrato da Brian Long in un suo blog post) per gestire l'evento onActivityResult.

Motivazioni

Nella vecchia versione di questo esempio (per XE5), infatti, sfruttavo gli appunti di sistema e la gestione degli eventi dell'applicazione per capire quando, una volta avviata Barcode Scanner in modalità di lettura, l'utente avesse effettivamente concluso la scansione di un codice a barre.
Grazie al fatto che Barcode Scanner copia il codice scansionato negli appunti, potevo così ottenere nella mia applicazione Delphi la stringa con il testo corrispondente al codice a barre.

L'approccio, un po' primitivo, era dovuto al fatto che l'Intent veniva lanciato chiamando startActivity (una sorta di ShellExecute nel mondo Android) che non prevede un meccanismo di notifica al termine dell'Activity lanciata (nel nostro caso, al termine della scansione di un codice a barre o quando l'utente annulla l'operazione).

Nuovo approccio

Da XE6 in poi, invece, è possibile chiamare startActivityForResult che lancia l'Activity e chiede di essere notificati dell'esito dell'Activity (un po' come ShellExecuteEx permette di attendere la fine del processo lanciato nel mondo Windows). Tale notifica avviene tramite il sistema di messaging della RTL di Delphi (unit System.Messaging) e quindi è facilissimo registrare un nostro metodo (HandleActivityMessage nel mio codice) come message-listener di un messaggio specifico (TMessageResultNotification, qui c'è la lista dei messaggi supportati) ed eseguire il nostro codice applicativo al momento opportuno e con tanto di accesso a tutti gli eventuali parametri di uscita dell'Activity eseguita (nel nostro caso, ad esempio, il valore e il tipo di codice a barre scansionato).


Il codice di subscribe per il TMessageResultNotification e il metodo HandleActivityMessage

La gestione di onActivityResult, con l'estrazione degli SCAN_RESULT

Risultato della scansione: codice e tipo

Conclusioni e materiale

Di sicuro, rispetto alla versione XE5:

  • non si rischiano interferenze nella gestione degli appunti o se altre applicazioni vengono avviate (bastava l'arrivo di una telefonata e il meccanismo precedente smetteva di funzionare);
  • si ottiene l'accesso ai parametri "accessori" come il tipo di codice a barre effettivamente scansionato.

Inoltre, questo approccio è generale e può essere usato con qualunque applicazione e con qualunque Activity/Intent supportati (non solo quindi per Barcode Scanner!)

Link: Codice sorgente Delphi XE7
Link: Demo APK (da installare sul vostro dispositivo Android)

Buon lavoro e a presto,

Andrea


mercoledì 10 settembre 2014

FreeDrawing e XE7: multitouch, nuovo menù, immersive mode e splashscreen!

A pochi giorni dall'uscita di RAD Studio XE7, sono riuscito ad aggiungere (con facilità) alcune nuove funzionalità introdotte con XE7 anche alla mia applicazione FreeDrawing (versione 1.0.14)!

I principali cambiamenti:


Supporto multitouch

Ora è possibile usare più di un dito per comporre il proprio disegno. Inoltre, il passaggio dal tradizionale evento OnMouseMove al nuovo OnTouch ha portato anche un sensibile miglioramento nel riconoscimento del tocco;

Disegno multitouch

Immersive Full-Screen mode

l'utente ora può concentrarsi sul proprio disegno sfruttando tutta la superficie tattile disponibile, anche questo grazie al supporto introdotto con XE7 a questa funzionalità di Android 4.4+ ;


Nexus 5, Immersive Full-Screen mode

Nexus 5, Immersive Full-Screen mode, con sticky flag


Splashscreen

Aggiunto senza sforzo grazie al supporto introdotto in XE7;

Nuovo menù con TMultiView

In occasione della semplificazione delle impostazioni relative al tratto, ho reimplementato il menù dell'applicazione utilizzando il TMultiView (altra novità di XE7). Anche in questo caso, tutto è stato molto semplice e ora su dispositivi differenti (smartphone e tablet) si ottiene una rappresentazione del menù idonea al contesto (per esempio con un drawer sui dispositivi più piccoli e con un docked panel sui tablet in orientamento orizzontale).


Tablet Nexus 7, orientamento verticale (notare il pulsante del menù in alto a sinistra)

Tablet Nexus 7, orientamento verticale, drawer aperto


Tablet Nexus 7, orientamento orizzontale, docked panel
Una cosa molto piacevole (che non avevo ancora letto da nessuna parte) è che il drawer si apre anche facendo uno scorrimento del tocco dal bordo sinistro del tablet all'interno del display (quello che chiamano "inward swipe").

Considerazioni:

  • Il nuovo XE7 mi sembra davvero più stabile e veloce delle versioni precedenti, anche nelle fasi di compilazione per le piattaforme mobile (non ho misurato precisamente ma la sensazione è abbastanza netta compilando per Android);
  • Il componente TMultiView è veramente comodo da usare e risolve un problema decisamente ostico da affrontare altrimenti (offrire la migliore esperienza d'uso all'utente a prescindere dal dispositivo che sta usando);
  • Veramente semplice sfruttare anche il supporto multitouch (comunque concordo con Andrey Yefimov e mi sarebbe piaciuto [se possibile] che il parametro Action di OnTouch fosse declinato per ogni elemento di Touches);
  • Il prossimo passo è aggiornare anche la versione iOS (e nell'occasione sfruttare le nuove tecnologie FireUI per differenziare leggermente l'interfaccia fra le versioni iOS e Android)!
  • Ho fatto provare il supporto multitouch ad un paio di amici (Davide & Davide, che ringrazio) possessori di Microsoft Surface Pro e funziona, a breve cercherò di compilare una versione di FreeDrawing anche per Windows (su dispositivi touchscreen)!
Un'applicazione Delphi XE7 di test multitouch in esecuzione su Surface Pro
Microsoft Surface Pro (Tablet Windows)


A presto e buon lavoro!

Andrea

martedì 9 settembre 2014

Delphi XE7: Le novità in dettaglio

Delphi XE7

Da qualche giorno Embarcadero ha rilasciato la versione XE7 dei suoi strumenti RAD (Delphi XE7, C++ Builder XE7, RAD Studio XE7), questa nuova release introduce davvero tante funzionalità distribuite in diverse aree: RTL, FMX e VCL. Vediamo di seguito le principali.

Risorse online



FireUI: Revolutionary Multi-Device Development


In XE7 lo sviluppo Multi-Device, ovvero dispositivi con fattore di forma e dimensioni diverse, è stato semplificato con la modalità di progettazione di FireUI. Il classico "Form Designer" è stato infatti esteso e rinominato "Multi-Device Designer". La nuova modalità dello sviluppo delle form si basa sul concetto di form "master" per condividere tutto il codice e l'interfaccia utente e di viste ereditate (ad esempio per differenti dimensioni e fattori di forma) che contengono la UI o il codice particolare. Queste viste (form) ereditate contengono solo il codice specifico differente dalla vista master, mentre si può continuare a cambiare la vista master avendo la sicurezza che i cambiamenti saranno propagati alle viste ereditate.

XE7 contiene già un set di viste predefinite: Windows Desktop, Surface Pro, Mac Desktop, iPhone, iPad, diversi telefoni e tablet Android ed anche la vista ottimizzata per i Google Glass.

Interessante anche il nuovo componente MultiView Smart Menu (TMultiView) che gestisce automaticamente la posizione, l'orientamento e lo stile di un'area (ad esempio usata per mostrare il menu dell'applicazione) a seconda del fattore di forma e della piattaforma su cui gira l'applicazione. Ad esempio un menu può essere mostrato come un "drawer" in dispositivi con un piccolo schermo o come un pannello "docked" sui dispositivi con schermo grande, tutto ciò avviene semplicemente mettendo il componente sul form ed impostandone alcune proprietà. Ovviamente è anche possibile una personalizzazione via codice completa.

Altra funzionalità molto importante per la gestione di dispositivi hardware molto diversi è la nuova API (FMX) chiamata "Behavior Services". I Behavior Services consentono di ottenere informazioni dai dispositivi hardware su cui gira l'applicazione. Questa API è ad esempio sfruttata proprio dal componente TMultiView per recuperare il tipo di piattaforma, l'orientamento, il fattore di forma, ecc...

Risorse online sull'argomento


Bluetooth e Bluetooth LE con supporto AppTethering

Questa a mio avviso è una delle novità più interessanti, soprattutto per il supporto Bluetooth LE che giocherà un ruolo fondamentale nei prossimi anni nel mondo degli smartphone e più in generale dei dispositivi portatili (e indossabili).
Grazie a ciò AppTethering, acquista quindi il supporto Bluetooth in aggiunta all'attuale supporto WiFi. Da XE7 AppTethering permette anche di connettersi fuori dalla propria subnet.
Da notare che il supporto Bluetooth e Bluetooth LE è inserito a livello di RTL, ciò significa che potranno beneficiarne tutte le applicazioni scritte con Delphi: VCL e FMX

Sempre restando in tema di dispositivi mobili, indossabili e "gadget" vari, XE7 può interfacciarsi con dispositivi anche molto diversi dai tradizionali smartphone, per citarne alcuni: Google Glass, Emotiv Epoc, Amazon FireTV, Ouya, Leap Motion, Kinect, Parrot: AR Drone, Chromecast.
Come vedete non avete che l'imbarazzo della scelta per divertirvi usando i gadget "del momento"! :-)

Risorse online sull'argomento

Parallel Programming library

In Delphi XE7 c'è un'aggiunta molto interessante, la nuova libreria di programmazione parallela (Parallel Programming Library). Potete trovare la libreria in questione nella unit System.Threading (essendo nella RTL è quindi a disposizione di tutte le piattaforma supportate da Delphi). Con la nuova libreria è possibile scrivere codice che riesce a sfruttare al massimo le caratteristiche dell'hardware a disposizione sulla macchina in deployment (numero di core e carico di lavoro). La libreria mette a disposizione diverse classi che consentono operazione quali il "Parallel For", la schedulazione di task, il wait for tasks e i "Future".  
A mio avviso l'introduzione di questa libreria va a colmare una mancanza storica nella class library di Delphi permettendo la scrittura di codice "parallelo" facilmente scalabile su architetture Multi-Core. 

Risorse online sull'argomento

Enterprise Mobility Services (EMS)

Enterprise Mobility Services (EMS) è una soluzione pronta all'uso per mettere in deployment application server che usano tecnologie standard (chiamate REST e dati JSON) e che possono ospitare moduli di accesso dati e business logic. 
Per far capire meglio di che si tratta, dico subito EMS va a posizionarsi nello stesso dominio applicativo di DataSnap ma l'approccio è sicuramente differente: DataSnap consente di costruire un server REST da zero (o quasi, sfruttando wizard e codice del framework) mentre EMS fornisce un server pronto all'uso e facile al deployment, personalizzabile tramite moduli (packages).
Con EMS è possibile esporre API REST in modo molto semplice creando un package Delphi registrando una o più risorse con i rispettivi metodi di accesso, il tutto tramite i comodi wizard messi a disposizione da Delphi.
EMS fornisce anche una semplice ma efficace interfaccia amministrativa da cui poter tracciare gli accessi, gli utenti, l'uso delle risorse (REST) e provvedere statistiche in tempo reale (real-time analytics).
Vedremo se questo modello di costruzione di server REST incontrerà il favore degli sviluppatori Delphi, sicuramente è un modello interessante in alternativa a DataSnap.

Risorse online sull'argomento

Nuova libreria XML Cross-Platform

Con Delphi XE7 viene introdotta una nuova libreria (un nuovo vendor) XML: OmniXML, un progetto open source (ora su Google Code) iniziato da Miha Remec e portato avanti da Primož Gabrijelčič.
OmniXML è una libreria interamente Delphi molto performante e completa con accesso al DOM classico e tramite XPath. Il progetto originale (che io uso da diversi anni) contiene anche un serializzatore (in XML ovviamente) di oggetti Delphi davvero molto comodo soprattutto come gestore della configurazione.

Risorse online sull'argomento

String-Like Operations Supported on Dynamic Arrays

L'unico cambiamento del compilatore in XE7 (almeno cambiamento visibile) è il supporto degli operatori classici sugli array dinamici, ad esempio questo codice  in XE è valido:


Oltre agli operatori standard è possibile usare le funzioni stringa classiche: Insert, Delete, Concat, ecc...
La funzionalità può non essere da "slogan" ma io ritengo le aggiunte al linguaggio sempre importantissime e segno che Delphi viene spinto dal team di sviluppo Embarcadero sempre più avanti aggiornando anche il compilatore!

Risorse online sull'argomento

Altre novità XE7

Le novità non finiscono certo qui, io ho dettagliato quelle più importanti per me ma ce ne sono davvero tante (spazio magari per un prossimo articolo).
Ho categorizzato le altre novità (così come il documento what's new di Embarcadero) in FireMonkey, IDE, VCL, ecc...

FireMonkey

  • New Google Mobile Ads API for Android
  • Native Presentation of TEdit and TCalendar on iOS
  • Multi-Monitor Support
  • Multi-Touch Support and Gestures Changes
  • Full-Screen Immersive Mode for Android
  • FireMonkey Save State Feature
  • Dialog Box Methods Support Anonymous Methods to Handle Their Closing
  • General refactoring of FireMonkey Libraries
  • Platform Assistant Changes for XE7

IDE

  • Changes in the Form Designer for Multi-Device Applications
  • Project Files Automatically Added to the Deployment Manager
  • Entitlement List Added for Android
  • Splash Screen Support for Android
  • Git Version Control System Integrated in the IDE
  • Add Java Libraries to Your Applications for Android from the Project Manager

RTL

  • New Unit for Web Encoding and Decoding
  • PCRE 8.35 for Windows and Mobile Platforms
  • Zlib 1.2.8

VCL

  • New Component for Windows Taskbar Jump Lists

Database

  • FireDAC Changes
  • Parse Provider Support for Your Android Push Notification Applications
  • BDE Removed (ma questa è una novità?? Si!)
  • Enhancements to the Data Explorer

Debugger

  • New PAServer Manager App on the Mac
  • MultiByte Support for Mobile Debuggers
  • Binary info.plist File Deployed

Conclusioni

Beh, che dire.. Wow! E' stato un lungo lavoro elencare e dettagliare alcune novità, figuratevi provarle e cominciare ad integrare queste funzionalità nel nostro codice! ;-)

A parte gli scherzi, una release davvero importante! Importante di sicuro per gli sviluppatori mobile e FireMonkey ma anche per gli sviluppatori classici VCL che possono scegliere XE7 come versione su cui standardizzare (magari per qualche versione) lo sviluppo dei vostri applicativi Windows.

Se dopo la lettura di questo articolo avete deciso che non potete non avere XE7 vi rimando al nostro shop per l'acquisto!





Al prossimo articolo!
Paolo.