SlideShare a Scribd company logo
1 of 50
Download to read offline
Utiliser des dessins vectoriels
à la place d’images
Webinaire du 28 janvier 2020
(c) Patrick Prémartin / developpeur-pascal.fr
Au programme
• Introduction
• Les résolutions d’écrans
• Les images dans Delphi
• Les dessins vectoriels
• Utilisation dans nos programmes
• Conclusion
(c) Patrick Prémartin / developpeur-pascal.fr
Présentation
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de Patrick Prémartin
• Ancien utilisateur de Turbo Pascal, amoureux de Delphi depuis toujours,
développeur web depuis NCSA Mosaic…
• Prestataire et formateur à travers sa société Olf Software.
• Editeur du blog https://developpeur-pascal.fr/
• MVP Embarcadero depuis octobre 2017.
• Auteur d’articles, de livres, webinariste et parfois même conférencier.
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de Olf Software
• Depuis octobre 2001 la société de services Olf Software propose des
prestations de conseil, développement et formation sur les
technologies liées au web et au développement logiciel.
• La société édite également des livres, des sites Internet et des
logiciels.
• Site web principal : https://olfsoftware.fr
(c) Patrick Prémartin / developpeur-pascal.fr
Formations Delphi
• Olf Software propose des formations en lien avec Delphi.
• Des formations inter entreprises sont organisées régulièrement et
annoncées sur https://se-former-a-delphi.fr/
• Des formations intra entreprise personnalisées sont faisables sur demande
partout en France et en Europe.
• Olf Software est un organisme de formation professionnelle enregistré en
préfecture et référencé sur Datadock.
Nos formations peuvent être prises en charge par les OPCA/OPCO.
(c) Patrick Prémartin / developpeur-pascal.fr
A propos de Barnsten
• La société Barnsten est basée aux Pays-Bas. Elle s’occupe de la
distribution des produits Embarcadero pour la France et le Benelux.
• Barnsten assure également un premier niveau de support utilisateur
et répond à toutes questions liées aux produits et licences. Quand
c’est nécessaire vous serez redirigés vers des partenaires ou
prestataires pouvant répondre à vos problématiques.
• Barnsten organise régulièrement des événements, des formations sur
les produits Embarcadero et cette série de webinaires mensuels.
(c) Patrick Prémartin / developpeur-pascal.fr
Les versions de Delphi
• Plusieurs licences de Delphi existent (vendu seul ou dans RAD Studio):
• Academic : pour les établissements d’enseignement et leurs étudiants
• Community Edition : gratuit pour tous, en licence commerciale limitée
• Professional, Enterprise, Architect : pour les entreprises, selon leurs besoins
• Pour toutes informations sur les licences et les tarifs contactez la
société Barnsten sur https://www.barnsten.com/fr/
(c) Patrick Prémartin / developpeur-pascal.fr
Les webinaires précédents
• Je participe régulièrement à des webinaires. Une page leur est
consacrée sur mon blog à l’adresse https://vasur.fr/webinairesdelphi
• Vous y trouverez les rediffusions en vidéos lorsqu’elles sont
disponibles, un PDF de mes présentations, le lien vers les sources des
exemples présentés et des informations complémentaires.
• S’y trouvent aussi les dates et liens d’inscriptions pour les prochains
webinaires, conférences et formations.
(c) Patrick Prémartin / developpeur-pascal.fr
En bref
• Présentation de la société Barnsten
https://www.barnsten.com
• Présentation de la société Olf Software
https://www.olfsoftware.fr
• Présentation de Patrick Prémartin
https://www.linkedin.com/in/patrickpremartin/
• Les différentes versions de Delphi
https://www.embarcadero.com/fr/products/delphi
• Voir ou revoir les webinaires précédents
https://vasur.fr/webinairesdelphi
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
• Historiquement les logiciels ne gèrent qu’une seule résolution pour
les images qu’ils affichent.
• Avec l’arrivée des smartphones et tablettes les choses ont changé et
nous avons dû nous adapter.
• C’est désormais aussi le cas avec les écrans classiques qui montent
jusqu’à 8K et ont en réalité une double résolution.
(c) Patrick Prémartin / developpeur-pascal.fr
Introduction
• Notre problème c’est que les logiciels existants bavent sur des écrans
récents et qu’il faut donc les mettre à niveau pour conserver un rendu
visuel optimum.
(c) Patrick Prémartin / developpeur-pascal.fr
Les résolutions d’écran
(c) Patrick Prémartin / developpeur-pascal.fr
Les résolutions d’écran
• Avec les écrans actuels nous avons un nombre de pixels logiques sur
lesquels nous travaillons.
• Ces pixels logiques sont affichés à partir d’une multitude de pixels
physiques. On l’appelle la profondeur d’écran.
Ca nous donne la résolution physique des écrans.
• La conséquence directe est que pour afficher une image de bouton en
16x16 pixels certains écrans vont l’afficher en 80x80. Ce qui donne
une impression de flou ou de bavure dans certains programmes.
(c) Patrick Prémartin / developpeur-pascal.fr
Les résolutions d’écran
• A nous de nous débrouiller pour limiter les dégâts visuels et faire en
sorte que nos logiciels desktop ou mobiles s’affichent correctement.
• Les systèmes d’exploitation ont su évoluer pour gérer ces
informations.
• Nos logiciels de développement également.
(c) Patrick Prémartin / developpeur-pascal.fr
Les résolutions d’écran
• Dans Delphi et C++Builder nous avions déjà la résolution du système
d’exploitation pour les programmes VCL sous Windows et il se
débrouillait pour les smartphones et tablettes.
• Depuis la version 10.3 Rio, Windows permettant de gérer une
résolution par écran, Embarcadero a intégré ces API.
• Lorsque plusieurs écrans sont connectés sur le même ordinateur nous
pouvons savoir comment afficher nos fiches sur chaque écran avec la
résolution de chaque écran plutôt qu’une résolution globale.
(c) Patrick Prémartin / developpeur-pascal.fr
Les images dans Delphi
(c) Patrick Prémartin / developpeur-pascal.fr
Les images dans Delphi
• Jusque là nous avions des composants images permettant d’afficher
un visuel dans une taille calculée lors de la création des fiches.
• Désormais nous avons des composants qui permettent de s’adapter
lors de l’utilisation du programme mais ça a un coût.
(c) Patrick Prémartin / developpeur-pascal.fr
Les images dans Delphi
• Chaque image doit être prévue dans plusieurs tailles différentes pour
permettre aux programmes de choisir la plus proche de celle qu’il
doit afficher et prendre celle de dessus pour la réduire plutôt que
celle de dessous pour l’agrandir.
• On part du principe qu’on a moins de perte visuelle pour l’utilisateur
en diminuant la taille d’une image qu’en l’agrandissant.
• Bien entendu ce n’est pas vrai pour les photos, mais pour les icones et
dessins de boutons, en général, ça passe mieux comme ça (à
condition de ne pas avoir un 1024x1024 pour afficher du 16x16).
(c) Patrick Prémartin / developpeur-pascal.fr
Les images dans Delphi
• Pour FireMonkey, le framework multiplateforme fourni par
Embarcadero, tout est graphique et le multi résolutions été prévu dès
le départ puisque la première version était destinée à tourner sous
iOS.
• Le composant TImageList permet de stocker des images dans
différentes tailles. Il gère aussi le découpage de feuilles de sprites ce
qui permet de diminuer le nombre de fichiers à diffuser avec chaque
programme.
(c) Patrick Prémartin / developpeur-pascal.fr
Les images dans Delphi
• Pour la VCL nous avons de nouveaux composants apparus avec la
version 10.3 Rio : TImageCollection et TVirtualImageList.
• TImageCollection est à mettre sur un TDataModule pour stocker les
images.
• TVirtualImageList remplace le TImageList historique. Il est à poser sur
les fiches pour afficher les images dans la résolution de l’écran sur
lequel chaque fiche apparaît.
(c) Patrick Prémartin / developpeur-pascal.fr
Les images dans Delphi
• L’inconvénient de cette solution c’est qu’elle oblige à créer une
multitude d’images de tailles différentes pour un seul visuel.
• Ces fichiers sont importés dans les programmes sous forme de
ressources et en gonflent inutilement la taille.
• Les utilisateurs n’ont pas besoin de tous les visuels embarqués, sauf à
avoir des écrans de tailles différentes sur leurs postes de travail.
(c) Patrick Prémartin / developpeur-pascal.fr
Les images dans Delphi
• Le coût est vite calculé :
• temps de travail à créer les images,
• temps de travail à les importer dans les logiciels,
• temps de travail à les maintenir en fonction de l’évolution du parc d’écrans,
• taille des fichiers à diffuser donc coût de stockage et de bande passante
puisque la plupart des logiciels se téléchargent sur Internet.
• Heureusement il existe des alternatives : les dessins vectoriels.
(c) Patrick Prémartin / developpeur-pascal.fr
Les dessins vectoriels
(c) Patrick Prémartin / developpeur-pascal.fr
Les dessins vectoriels
• Si vous avez connu les débuts de l’informatique moderne et
graphique, vous devez déjà avoir entendu parlé ou vu des cliparts.
• Ces dessins étaient les premiers dessins vectoriels destinés à
agrémenter les documents et présentations.
(c) Patrick Prémartin / developpeur-pascal.fr
Les dessins vectoriels
• L’avantage des dessins vectoriels, plus généralement utilisés en CAO,
c’est qu’ils sont composés de vecteurs.
• Toutes les tailles et positions sont calculées relativement à
l’emplacement sur lequel ils doivent s’afficher.
• Contrairement à une photo, un GIF, JPEG ou PNG, la déformation d’un
dessin vectoriel n’entraine pas de perte car il est redessiné, pas
« tordu » ou « étiré ».
(c) Patrick Prémartin / developpeur-pascal.fr
Les dessins vectoriels
• Dans le domaine d’Internet où la bande passante et les temps
d’affichage sont importants, les images d’illustration ont rapidement
été remplacées par des dessins vectoriels car ils s’affichaient plus vite
et sur toutes les tailles d’écran sans problème.
• C’est pour ça qu’est apparu le format SVG, un standard du W3C, pour
intégrer des dessins vectoriels dans les pages web.
• SVG est une norme et ne nécessite pas de payer de licence pour
l’utiliser, il s’est vite répandu en dehors du oueb dans les logiciels de
dessin, les documents bureautiques et les PDF.
(c) Patrick Prémartin / developpeur-pascal.fr
Les dessins vectoriels
• Comme les dessins vectoriels sont dessinés en fonction de la surface
d’affichage ils n’ont pas de problème de résolution d’écran et passent
correctement sans effet de flou ni baver.
• Il est donc temps de s’en servir également dans nos programmes
quand c’est possible pour limiter la taille des ressources à déployer.
• En revanche il faut quand même avoir conscience qu’ils sont dessinés
à l’affichage, par conséquent ils sont plus lents à afficher qu’une
simple image bitmap surtout s’ils sont complexes.
(c) Patrick Prémartin / developpeur-pascal.fr
Utilisation dans
nos programmes
(c) Patrick Prémartin / developpeur-pascal.fr
Utilisation dans nos programmes
• Avec la VCL aucun composant ne permet en standard d’afficher du
SVG ou des dessins vectoriels. Nous devons le coder nous mêmes en
dessinant sur le TCanvas d’un composant ou passer par une librairie
externe.
(c) Patrick Prémartin / developpeur-pascal.fr
Utilisation dans nos programmes
• Avec FireMonkey nous avons le composant TPath qui permet de
dessiner en vectoriel des formes simples comme complexes.
• Cette jolie voiture en cours de lavage est dessinée avec ce code :
M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0
0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5
0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42
5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0
21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0
7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0
0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5
15.5,3.5A1.5,1.5 0 0,0 17,5Z
(oui, je sais, c’est un peu barbare mais c’est toujours mieux que du binaire)
(c) Patrick Prémartin / developpeur-pascal.fr
Utilisation dans nos programmes
• TPath gère un chemin. Il faut le voir comme la tortue du Logo qui se
promène dans sa zone d’affichage. Chaque lettre est un ordre qui a
des paramètres qui le suivent.
• Il ne permet pas de gérer le format SVG. On doit donc également faire
appel à une librairie extérieure ou tout faire nous-mêmes comme
avec la VCL.
(c) Patrick Prémartin / developpeur-pascal.fr
Utilisation dans nos programmes
• Afficher une image c’est bien, en VCL comme en FMX, mais ce serait
quand même mieux de pouvoir remplacer toutes les images des
différents composants avec des images vectorielles, à commencer par
ces icones de boutons baveuses.
• Pour ça, il y a de nombreuses solutions plus ou moins à jour, plus ou
moins fonctionnelles et surtout plus ou moins coûteuses.
• Vous en retrouverez quelques unes sur la page
https://vasur.fr/svgdansdelphi
(c) Patrick Prémartin / developpeur-pascal.fr
Démo
FireMonkey et son TPath
(c) Patrick Prémartin / developpeur-pascal.fr
Le composant TPath de FMX
• Découvrons ensemble comment utiliser le TPath de FireMonkey.
• D’autres exemples d’utilisations sont proposés dans ces livres :
(c) Patrick Prémartin / developpeur-pascal.fr
Démo
La solution de RiverSoftAVG
(c) Patrick Prémartin / developpeur-pascal.fr
Les composants SVG de RiverSoftAVG
• Je vous propose de découvrir l’approche de RiverSoftAVG qui propose
des composants FMX et VCL et a le gros avantage de référencer le
format SVG en tant que format d’image standard.
• Tout ce qui manipule des images dans Delphi peut aussi manipuler
des images au format SVG.
• Leurs composants sont payants sous forme de licence à vie avec
renouvellement annuel pour bénéficier des mises à jour.
• Rendez-vous sur http://www.riversoftavg.com/svg.htm pour le détail.
(c) Patrick Prémartin / developpeur-pascal.fr
Démo
La solution de TMS Software
(c) Patrick Prémartin / developpeur-pascal.fr
Les composants SVG de TMS Software
• C’est avec les mises à jour de décembre 2019 de ses suites VCL UI
Pack, FNC Core et FNC UI Pack que TMS Software a ajouté la prise en
charge du format SVG dans ses composants.
• Le support du SVG a été ajouté dans les conteneurs d’images utilisés
dans leurs librairies par leurs composants.
• Ils proposent également un descendant de TImageCollection ajoutant
le SVG aux formats habituels. Il permet de fournir des images SVG aux
composants TVirtualImageList fournis par Embarcadero.
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
• La question de la qualité visuelle de nos logiciels est une question
d’actualité pour tout projet.
• Vous vous devez de vous la poser lorsque vous développez ou migrez
vos logiciels vers Windows 10, macOS, Linux, iOS et Android.
• Delphi et C++Builder prennent en charge la résolution des écrans sur
les plateformes sur lesquelles ils tournent.
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
• La gestion des images de tailles différentes est en standard pour la
VCL et FMX.
• Les dessins vectoriels permettent de s’affranchir de problèmes
d’encombrement tout en garantissant un affichage pérenne quelle
que soit l’évolution des écrans sur le long terme.
• En revanche ils alourdissent les temps de réponse si on ne gère pas de
cache sous forme d’image classique dans les composants servant à les
afficher.
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
• Réfléchissez à ce qui est le mieux pour vous en tant que développeur
et surtout pour vos utilisateurs qui auront une bonne ou mauvaise
impression selon que vos fiches sont belles ou détériorées lorsqu’ils
ont de bons écrans.
• Faites ce choix selon la qualité des interfaces utilisateurs désirées.
(c) Patrick Prémartin / developpeur-pascal.fr
Conclusion
• Comme pour les webinaires précédents, ce PDF et l’éventuel replay
seront mis à disposition sur le blog https://developpeur-pascal.fr
• Vous y trouverez également sous peu une liste de librairies gérant les
SVG pour FMX et la VCL. J’ai fait une sélection non exhaustive par
rapport à mes tests, les échos que j’en ai et la description faite par
leurs éditeurs.
• N’oubliez pas en faisant votre choix qu’il vous faut quelque chose de
pérenne et maintenu si vous l’intégrez à vos projets. Alors testez.
(c) Patrick Prémartin / developpeur-pascal.fr
Prochainement
(c) Patrick Prémartin / developpeur-pascal.fr
Prochainement
• Barnsten propose régulièrement des événements liés aux produits
Embarcadero: formations inter entreprises, rencontres développeurs
et meetups, conférences, présentations de produits.
• Si vous désirez participer ou organiser quelque chose chez vous
contactez les sans hésiter sur https://www.barnsten.com
(c) Patrick Prémartin / developpeur-pascal.fr
Prochainement
• Le numéro 237 du magazine
Programmez! proposera un article
d’initiation à FMX Linux. Il sortira en fin
de semaine ou début février.
• Si vous avez des questions sur FMX
Linux et le compilateur Linux fournis
avec Delphi Entreprise, envoyez les moi
sur https://www.developpeur-
pascal.fr/contact/
(c) Patrick Prémartin / developpeur-pascal.fr
Prochainement
• Notre prochain webinaire sera annoncé sous peu. Il devrait avoir lieu
le 25 février.
• Des ateliers et des sessions de formation inter entreprises sont
envisagées.
Contactez-moi sur https://se-former-a-delphi.fr/contact/ si vous
désirez être prévenu ou voulez une formation chez vous sur des sujets
précis.
(c) Patrick Prémartin / developpeur-pascal.fr
Questions / réponses
(c) Patrick Prémartin / developpeur-pascal.fr

More Related Content

Similar to Utiliser des dessins vectoriels à la place d'images

Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLpprem
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphipprem
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphipprem
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMXpprem
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphipprem
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéopprem
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourpprem
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXpprem
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !pprem
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de donnéespprem
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...pprem
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
Yannick DUPUIS
Yannick DUPUISYannick DUPUIS
Yannick DUPUISYannick D.
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxFrédéric Harper
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?Frédéric Harper
 
Boite à outil du formateur sur SpeachMe Academy
Boite à outil du formateur sur SpeachMe AcademyBoite à outil du formateur sur SpeachMe Academy
Boite à outil du formateur sur SpeachMe AcademyGeoffrey SpeachMe
 

Similar to Utiliser des dessins vectoriels à la place d'images (20)

Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCL
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphi
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphi
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMX
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphi
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéo
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jour
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMX
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Yannick DUPUIS
Yannick DUPUISYannick DUPUIS
Yannick DUPUIS
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Formation ps
Formation psFormation ps
Formation ps
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?
 
Logiciels 3d-112-ktcufc
Logiciels 3d-112-ktcufcLogiciels 3d-112-ktcufc
Logiciels 3d-112-ktcufc
 
Boite à outil du formateur sur SpeachMe Academy
Boite à outil du formateur sur SpeachMe AcademyBoite à outil du formateur sur SpeachMe Academy
Boite à outil du formateur sur SpeachMe Academy
 

More from pprem

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game enginepprem
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environmentpprem
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeypprem
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilespprem
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Androidpprem
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLpprem
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeypprem
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de fraispprem
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succèspprem
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internetpprem
 
Trafic
TraficTrafic
Traficpprem
 

More from pprem (13)

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game engine
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkey
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobiles
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Android
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCL
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de frais
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succès
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internet
 
Trafic
TraficTrafic
Trafic
 

Utiliser des dessins vectoriels à la place d'images

  • 1. Utiliser des dessins vectoriels à la place d’images Webinaire du 28 janvier 2020 (c) Patrick Prémartin / developpeur-pascal.fr
  • 2. Au programme • Introduction • Les résolutions d’écrans • Les images dans Delphi • Les dessins vectoriels • Utilisation dans nos programmes • Conclusion (c) Patrick Prémartin / developpeur-pascal.fr
  • 3. Présentation (c) Patrick Prémartin / developpeur-pascal.fr
  • 4. A propos de Patrick Prémartin • Ancien utilisateur de Turbo Pascal, amoureux de Delphi depuis toujours, développeur web depuis NCSA Mosaic… • Prestataire et formateur à travers sa société Olf Software. • Editeur du blog https://developpeur-pascal.fr/ • MVP Embarcadero depuis octobre 2017. • Auteur d’articles, de livres, webinariste et parfois même conférencier. (c) Patrick Prémartin / developpeur-pascal.fr
  • 5. A propos de Olf Software • Depuis octobre 2001 la société de services Olf Software propose des prestations de conseil, développement et formation sur les technologies liées au web et au développement logiciel. • La société édite également des livres, des sites Internet et des logiciels. • Site web principal : https://olfsoftware.fr (c) Patrick Prémartin / developpeur-pascal.fr
  • 6. Formations Delphi • Olf Software propose des formations en lien avec Delphi. • Des formations inter entreprises sont organisées régulièrement et annoncées sur https://se-former-a-delphi.fr/ • Des formations intra entreprise personnalisées sont faisables sur demande partout en France et en Europe. • Olf Software est un organisme de formation professionnelle enregistré en préfecture et référencé sur Datadock. Nos formations peuvent être prises en charge par les OPCA/OPCO. (c) Patrick Prémartin / developpeur-pascal.fr
  • 7. A propos de Barnsten • La société Barnsten est basée aux Pays-Bas. Elle s’occupe de la distribution des produits Embarcadero pour la France et le Benelux. • Barnsten assure également un premier niveau de support utilisateur et répond à toutes questions liées aux produits et licences. Quand c’est nécessaire vous serez redirigés vers des partenaires ou prestataires pouvant répondre à vos problématiques. • Barnsten organise régulièrement des événements, des formations sur les produits Embarcadero et cette série de webinaires mensuels. (c) Patrick Prémartin / developpeur-pascal.fr
  • 8. Les versions de Delphi • Plusieurs licences de Delphi existent (vendu seul ou dans RAD Studio): • Academic : pour les établissements d’enseignement et leurs étudiants • Community Edition : gratuit pour tous, en licence commerciale limitée • Professional, Enterprise, Architect : pour les entreprises, selon leurs besoins • Pour toutes informations sur les licences et les tarifs contactez la société Barnsten sur https://www.barnsten.com/fr/ (c) Patrick Prémartin / developpeur-pascal.fr
  • 9. Les webinaires précédents • Je participe régulièrement à des webinaires. Une page leur est consacrée sur mon blog à l’adresse https://vasur.fr/webinairesdelphi • Vous y trouverez les rediffusions en vidéos lorsqu’elles sont disponibles, un PDF de mes présentations, le lien vers les sources des exemples présentés et des informations complémentaires. • S’y trouvent aussi les dates et liens d’inscriptions pour les prochains webinaires, conférences et formations. (c) Patrick Prémartin / developpeur-pascal.fr
  • 10. En bref • Présentation de la société Barnsten https://www.barnsten.com • Présentation de la société Olf Software https://www.olfsoftware.fr • Présentation de Patrick Prémartin https://www.linkedin.com/in/patrickpremartin/ • Les différentes versions de Delphi https://www.embarcadero.com/fr/products/delphi • Voir ou revoir les webinaires précédents https://vasur.fr/webinairesdelphi (c) Patrick Prémartin / developpeur-pascal.fr
  • 11. Introduction (c) Patrick Prémartin / developpeur-pascal.fr
  • 12. Introduction • Historiquement les logiciels ne gèrent qu’une seule résolution pour les images qu’ils affichent. • Avec l’arrivée des smartphones et tablettes les choses ont changé et nous avons dû nous adapter. • C’est désormais aussi le cas avec les écrans classiques qui montent jusqu’à 8K et ont en réalité une double résolution. (c) Patrick Prémartin / developpeur-pascal.fr
  • 13. Introduction • Notre problème c’est que les logiciels existants bavent sur des écrans récents et qu’il faut donc les mettre à niveau pour conserver un rendu visuel optimum. (c) Patrick Prémartin / developpeur-pascal.fr
  • 14. Les résolutions d’écran (c) Patrick Prémartin / developpeur-pascal.fr
  • 15. Les résolutions d’écran • Avec les écrans actuels nous avons un nombre de pixels logiques sur lesquels nous travaillons. • Ces pixels logiques sont affichés à partir d’une multitude de pixels physiques. On l’appelle la profondeur d’écran. Ca nous donne la résolution physique des écrans. • La conséquence directe est que pour afficher une image de bouton en 16x16 pixels certains écrans vont l’afficher en 80x80. Ce qui donne une impression de flou ou de bavure dans certains programmes. (c) Patrick Prémartin / developpeur-pascal.fr
  • 16. Les résolutions d’écran • A nous de nous débrouiller pour limiter les dégâts visuels et faire en sorte que nos logiciels desktop ou mobiles s’affichent correctement. • Les systèmes d’exploitation ont su évoluer pour gérer ces informations. • Nos logiciels de développement également. (c) Patrick Prémartin / developpeur-pascal.fr
  • 17. Les résolutions d’écran • Dans Delphi et C++Builder nous avions déjà la résolution du système d’exploitation pour les programmes VCL sous Windows et il se débrouillait pour les smartphones et tablettes. • Depuis la version 10.3 Rio, Windows permettant de gérer une résolution par écran, Embarcadero a intégré ces API. • Lorsque plusieurs écrans sont connectés sur le même ordinateur nous pouvons savoir comment afficher nos fiches sur chaque écran avec la résolution de chaque écran plutôt qu’une résolution globale. (c) Patrick Prémartin / developpeur-pascal.fr
  • 18. Les images dans Delphi (c) Patrick Prémartin / developpeur-pascal.fr
  • 19. Les images dans Delphi • Jusque là nous avions des composants images permettant d’afficher un visuel dans une taille calculée lors de la création des fiches. • Désormais nous avons des composants qui permettent de s’adapter lors de l’utilisation du programme mais ça a un coût. (c) Patrick Prémartin / developpeur-pascal.fr
  • 20. Les images dans Delphi • Chaque image doit être prévue dans plusieurs tailles différentes pour permettre aux programmes de choisir la plus proche de celle qu’il doit afficher et prendre celle de dessus pour la réduire plutôt que celle de dessous pour l’agrandir. • On part du principe qu’on a moins de perte visuelle pour l’utilisateur en diminuant la taille d’une image qu’en l’agrandissant. • Bien entendu ce n’est pas vrai pour les photos, mais pour les icones et dessins de boutons, en général, ça passe mieux comme ça (à condition de ne pas avoir un 1024x1024 pour afficher du 16x16). (c) Patrick Prémartin / developpeur-pascal.fr
  • 21. Les images dans Delphi • Pour FireMonkey, le framework multiplateforme fourni par Embarcadero, tout est graphique et le multi résolutions été prévu dès le départ puisque la première version était destinée à tourner sous iOS. • Le composant TImageList permet de stocker des images dans différentes tailles. Il gère aussi le découpage de feuilles de sprites ce qui permet de diminuer le nombre de fichiers à diffuser avec chaque programme. (c) Patrick Prémartin / developpeur-pascal.fr
  • 22. Les images dans Delphi • Pour la VCL nous avons de nouveaux composants apparus avec la version 10.3 Rio : TImageCollection et TVirtualImageList. • TImageCollection est à mettre sur un TDataModule pour stocker les images. • TVirtualImageList remplace le TImageList historique. Il est à poser sur les fiches pour afficher les images dans la résolution de l’écran sur lequel chaque fiche apparaît. (c) Patrick Prémartin / developpeur-pascal.fr
  • 23. Les images dans Delphi • L’inconvénient de cette solution c’est qu’elle oblige à créer une multitude d’images de tailles différentes pour un seul visuel. • Ces fichiers sont importés dans les programmes sous forme de ressources et en gonflent inutilement la taille. • Les utilisateurs n’ont pas besoin de tous les visuels embarqués, sauf à avoir des écrans de tailles différentes sur leurs postes de travail. (c) Patrick Prémartin / developpeur-pascal.fr
  • 24. Les images dans Delphi • Le coût est vite calculé : • temps de travail à créer les images, • temps de travail à les importer dans les logiciels, • temps de travail à les maintenir en fonction de l’évolution du parc d’écrans, • taille des fichiers à diffuser donc coût de stockage et de bande passante puisque la plupart des logiciels se téléchargent sur Internet. • Heureusement il existe des alternatives : les dessins vectoriels. (c) Patrick Prémartin / developpeur-pascal.fr
  • 25. Les dessins vectoriels (c) Patrick Prémartin / developpeur-pascal.fr
  • 26. Les dessins vectoriels • Si vous avez connu les débuts de l’informatique moderne et graphique, vous devez déjà avoir entendu parlé ou vu des cliparts. • Ces dessins étaient les premiers dessins vectoriels destinés à agrémenter les documents et présentations. (c) Patrick Prémartin / developpeur-pascal.fr
  • 27. Les dessins vectoriels • L’avantage des dessins vectoriels, plus généralement utilisés en CAO, c’est qu’ils sont composés de vecteurs. • Toutes les tailles et positions sont calculées relativement à l’emplacement sur lequel ils doivent s’afficher. • Contrairement à une photo, un GIF, JPEG ou PNG, la déformation d’un dessin vectoriel n’entraine pas de perte car il est redessiné, pas « tordu » ou « étiré ». (c) Patrick Prémartin / developpeur-pascal.fr
  • 28. Les dessins vectoriels • Dans le domaine d’Internet où la bande passante et les temps d’affichage sont importants, les images d’illustration ont rapidement été remplacées par des dessins vectoriels car ils s’affichaient plus vite et sur toutes les tailles d’écran sans problème. • C’est pour ça qu’est apparu le format SVG, un standard du W3C, pour intégrer des dessins vectoriels dans les pages web. • SVG est une norme et ne nécessite pas de payer de licence pour l’utiliser, il s’est vite répandu en dehors du oueb dans les logiciels de dessin, les documents bureautiques et les PDF. (c) Patrick Prémartin / developpeur-pascal.fr
  • 29. Les dessins vectoriels • Comme les dessins vectoriels sont dessinés en fonction de la surface d’affichage ils n’ont pas de problème de résolution d’écran et passent correctement sans effet de flou ni baver. • Il est donc temps de s’en servir également dans nos programmes quand c’est possible pour limiter la taille des ressources à déployer. • En revanche il faut quand même avoir conscience qu’ils sont dessinés à l’affichage, par conséquent ils sont plus lents à afficher qu’une simple image bitmap surtout s’ils sont complexes. (c) Patrick Prémartin / developpeur-pascal.fr
  • 30. Utilisation dans nos programmes (c) Patrick Prémartin / developpeur-pascal.fr
  • 31. Utilisation dans nos programmes • Avec la VCL aucun composant ne permet en standard d’afficher du SVG ou des dessins vectoriels. Nous devons le coder nous mêmes en dessinant sur le TCanvas d’un composant ou passer par une librairie externe. (c) Patrick Prémartin / developpeur-pascal.fr
  • 32. Utilisation dans nos programmes • Avec FireMonkey nous avons le composant TPath qui permet de dessiner en vectoriel des formes simples comme complexes. • Cette jolie voiture en cours de lavage est dessinée avec ce code : M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0 0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5 0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42 5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0 21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0 7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0 0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5 15.5,3.5A1.5,1.5 0 0,0 17,5Z (oui, je sais, c’est un peu barbare mais c’est toujours mieux que du binaire) (c) Patrick Prémartin / developpeur-pascal.fr
  • 33. Utilisation dans nos programmes • TPath gère un chemin. Il faut le voir comme la tortue du Logo qui se promène dans sa zone d’affichage. Chaque lettre est un ordre qui a des paramètres qui le suivent. • Il ne permet pas de gérer le format SVG. On doit donc également faire appel à une librairie extérieure ou tout faire nous-mêmes comme avec la VCL. (c) Patrick Prémartin / developpeur-pascal.fr
  • 34. Utilisation dans nos programmes • Afficher une image c’est bien, en VCL comme en FMX, mais ce serait quand même mieux de pouvoir remplacer toutes les images des différents composants avec des images vectorielles, à commencer par ces icones de boutons baveuses. • Pour ça, il y a de nombreuses solutions plus ou moins à jour, plus ou moins fonctionnelles et surtout plus ou moins coûteuses. • Vous en retrouverez quelques unes sur la page https://vasur.fr/svgdansdelphi (c) Patrick Prémartin / developpeur-pascal.fr
  • 35. Démo FireMonkey et son TPath (c) Patrick Prémartin / developpeur-pascal.fr
  • 36. Le composant TPath de FMX • Découvrons ensemble comment utiliser le TPath de FireMonkey. • D’autres exemples d’utilisations sont proposés dans ces livres : (c) Patrick Prémartin / developpeur-pascal.fr
  • 37. Démo La solution de RiverSoftAVG (c) Patrick Prémartin / developpeur-pascal.fr
  • 38. Les composants SVG de RiverSoftAVG • Je vous propose de découvrir l’approche de RiverSoftAVG qui propose des composants FMX et VCL et a le gros avantage de référencer le format SVG en tant que format d’image standard. • Tout ce qui manipule des images dans Delphi peut aussi manipuler des images au format SVG. • Leurs composants sont payants sous forme de licence à vie avec renouvellement annuel pour bénéficier des mises à jour. • Rendez-vous sur http://www.riversoftavg.com/svg.htm pour le détail. (c) Patrick Prémartin / developpeur-pascal.fr
  • 39. Démo La solution de TMS Software (c) Patrick Prémartin / developpeur-pascal.fr
  • 40. Les composants SVG de TMS Software • C’est avec les mises à jour de décembre 2019 de ses suites VCL UI Pack, FNC Core et FNC UI Pack que TMS Software a ajouté la prise en charge du format SVG dans ses composants. • Le support du SVG a été ajouté dans les conteneurs d’images utilisés dans leurs librairies par leurs composants. • Ils proposent également un descendant de TImageCollection ajoutant le SVG aux formats habituels. Il permet de fournir des images SVG aux composants TVirtualImageList fournis par Embarcadero. (c) Patrick Prémartin / developpeur-pascal.fr
  • 41. Conclusion (c) Patrick Prémartin / developpeur-pascal.fr
  • 42. Conclusion • La question de la qualité visuelle de nos logiciels est une question d’actualité pour tout projet. • Vous vous devez de vous la poser lorsque vous développez ou migrez vos logiciels vers Windows 10, macOS, Linux, iOS et Android. • Delphi et C++Builder prennent en charge la résolution des écrans sur les plateformes sur lesquelles ils tournent. (c) Patrick Prémartin / developpeur-pascal.fr
  • 43. Conclusion • La gestion des images de tailles différentes est en standard pour la VCL et FMX. • Les dessins vectoriels permettent de s’affranchir de problèmes d’encombrement tout en garantissant un affichage pérenne quelle que soit l’évolution des écrans sur le long terme. • En revanche ils alourdissent les temps de réponse si on ne gère pas de cache sous forme d’image classique dans les composants servant à les afficher. (c) Patrick Prémartin / developpeur-pascal.fr
  • 44. Conclusion • Réfléchissez à ce qui est le mieux pour vous en tant que développeur et surtout pour vos utilisateurs qui auront une bonne ou mauvaise impression selon que vos fiches sont belles ou détériorées lorsqu’ils ont de bons écrans. • Faites ce choix selon la qualité des interfaces utilisateurs désirées. (c) Patrick Prémartin / developpeur-pascal.fr
  • 45. Conclusion • Comme pour les webinaires précédents, ce PDF et l’éventuel replay seront mis à disposition sur le blog https://developpeur-pascal.fr • Vous y trouverez également sous peu une liste de librairies gérant les SVG pour FMX et la VCL. J’ai fait une sélection non exhaustive par rapport à mes tests, les échos que j’en ai et la description faite par leurs éditeurs. • N’oubliez pas en faisant votre choix qu’il vous faut quelque chose de pérenne et maintenu si vous l’intégrez à vos projets. Alors testez. (c) Patrick Prémartin / developpeur-pascal.fr
  • 46. Prochainement (c) Patrick Prémartin / developpeur-pascal.fr
  • 47. Prochainement • Barnsten propose régulièrement des événements liés aux produits Embarcadero: formations inter entreprises, rencontres développeurs et meetups, conférences, présentations de produits. • Si vous désirez participer ou organiser quelque chose chez vous contactez les sans hésiter sur https://www.barnsten.com (c) Patrick Prémartin / developpeur-pascal.fr
  • 48. Prochainement • Le numéro 237 du magazine Programmez! proposera un article d’initiation à FMX Linux. Il sortira en fin de semaine ou début février. • Si vous avez des questions sur FMX Linux et le compilateur Linux fournis avec Delphi Entreprise, envoyez les moi sur https://www.developpeur- pascal.fr/contact/ (c) Patrick Prémartin / developpeur-pascal.fr
  • 49. Prochainement • Notre prochain webinaire sera annoncé sous peu. Il devrait avoir lieu le 25 février. • Des ateliers et des sessions de formation inter entreprises sont envisagées. Contactez-moi sur https://se-former-a-delphi.fr/contact/ si vous désirez être prévenu ou voulez une formation chez vous sur des sujets précis. (c) Patrick Prémartin / developpeur-pascal.fr
  • 50. Questions / réponses (c) Patrick Prémartin / developpeur-pascal.fr