Page d'accueil | Technologies | Delphi | eBooks pour MS Reader | Me contacter
APPLICATIONS




Animation 3D
(Février 2000)

Capture d'écran
Télécharger actisyst.zip (Win32, 499 Ko)

Cette application restitue trois scènes réelles animées en mode filaire : coup de pied volant, homme à cheval, aïkido, visualisables sous différents angles, avec vues multiples.

Retour à la page d'accueil




Automates cellulaires
(Février 2000)

Capture d'écran


Détrônés par les courbes fractales, les automates cellulaires constituent des mondes à part, qui, à partir de règles simples peuvent engendrer des comportements très riches, tel que le lance-glisseurs de l'automate de Conway :



Un automate cellulaire est constitué d'un espace quadrillé composé de cases, ou "cellules", qui évoluent de cycle en cycle au moyen de règles de transitions identiques pour chacune d'entre elles. Chaque cellule se trouve dans un état prédéterminé et l'état d'une cellule au cycle n+1 dépend toujours exclusivement de son état et de celui de ses voisines au cycle n.

Automates cellulaires permet l'animation d'automates cellulaires à partir d'un état initial défini intéractivement. Les différents états possibles pour un automate sont sélectionnables dans la fenêtre "Etats". On peut alors modifier très simplement l'une des cellules constituant l'automate.

Voici la liste des automates actuellement mis en oeuvre dans Automates cellulaires :
Billard (2 états, voisinage de Margolus)
Boulder (éboulement de pierres)
Brian's brain
Codd (8 états, ordinateur plat théoriquement capable de se reproduire)
Fractal
HGlass
Jeu de la vie
Parité
Particules

Retour à la page d'accueil


DelphiDoc
(Mars 2001)


Présentation

DelphiDoc est un utilitaire de génération automatique de documentation de codes sources Pascal Objet au format HTML, dont je suis l'auteur, se présentant sous forme d'expert pour Delphi 5.
Au travers de commentaires spéciaux, DelphiDoc incorpore dans la documentation générée les descriptions correspondants à l'unité, ses constantes, variables, classes, procédures et fonctions.
On se reportera à l'unité Unit1, reprise dans le fichier Unit1.html ci-dessous, pour ce qui concerne la manière d'utiliser les commentaires spéciaux "(**" et "*)" employés par DelphiDoc :

delphidc/Unit1.html


L'utilisation de DelphiDoc requiert l'installation d'Internet Explorer (au minimum la version 5 est recommandée) venant avec celle du parser XML de Microsoft. Vous pouvez le vérifier en constatant la présence du fichier MSXML.DLL dans votre répertoire système.

DelphiDoc s'intègre dans l'IDE de Delphi :




Génération de la documentation

Après son installation, l'expert DelphiDoc est accessible depuis le menu "Voir/DelphiDoc" de Delphi ; celui-ci affiche dans une vue arborescente l'ensemble des unités et fiches du projet courant.
Il est alors possible de produire la documentation pour le projet entier, en sélectionnant d'abord le noud racine, ou celle d'une unité particulière que vous sélectionnez, en actionnant le bouton "Generate doc". Vous pouvez aussi appeler un menu contextuel avec le bouton droite de la souris pour demander la génération de la documentation de l'unité sélectionnée.
Le bouton "View doc", quand à lui, déclenchera l'exécution d'Internet Exporer (ou bien celle de l'exécutable rattaché à l'extension html) ; si c'est le noud racine qui est sélectionné et que la génération s'est bien déroulée, IE ouvrira le fichier index.html, ou bien le fichier html sommaire de l'unité sélectionnée (voir plus bas).
La génération des fichiers HTML ne fonctionnera que sur des unités syntaxiquement correctes, ce qui est assuré par une compilation sans erreur.


Fichiers générés

Voici les fichiers produits, leurs emplacment et leurs descriptions lors de la génération automatique de documentation du projet C:\fichiers\project1.dpr comprenant l'unité Unit1.pas (le . représente le répertoire courant du projet) :


.\Doc\index.html

index.html reprend l'ensemble des unités du projet avec leurs descriptions respectives, ainsi que des liens hypertextes vers celles-ci.


.\Doc\Unit1\Unit1-sommaire.html

Ce fichier constitue le sommaire de l'unité Unit1, ce qui comprend les descriptions éventuelles des éléments de l'unité, les constantes et les variables des parties interface et implélentation, les classes, ainsi que les procédures et fonctions globales.


.\Doc\Unit1\Unit1-TMaClasse.html

Ce fichier décrit la classe TMaClasse déclarée dans Unit1 et toutes ses données membres.


.\Doc\Unit1\Unit1-foncprocs.html

Les procédures et fonctions globales de l'unité Unit1 sont décrites ici.


.\Doc\Unit1\Unit1-index.html

L'index de l'unité Unit1 liste tous les éléments accessibles de l'unité.


Appliqué au projet Delphi 5 project1.dpr comportant l'unité Unit1, DelphiDoc produit les fichiers HTML suivants :

delphidc/index.html

delphidc/Unit1-sommaire.html

delphidc/Unit1-TMaClasse1.html

delphidc/Unit1-TMaClasse2.html

delphidc/Unit1-foncprocs.html

delphidc/Unit1-index.html



Téléchargement de DelphiDoc 1.0.0.7

La version shareware de DelphiDoc 1.0, que vous pouvez télécharger ci-après, générera les fichiers indiqués ci-dessus, mise à part le fichier index.html, dans le répertoire temporaire utilisé par Windows.

delphidc/delphidc.zip

DelphiDoc sera alors disponible au prochain démarrage de Delphi.

La version complète de DelphiDoc peut être commandée auprès du site ShareIt! à l'adresse ci-dessous :
https://secure.element5.com/register.html?productid=141389&language=French

Acquérir la version complète encourage la réalisation d'applications utiles et intéressantes ; d'autre part vous bénéficierez des évolutions futures de DelphiDoc, comme les mises à jour pour les versions suivantes de Delphi, la possibilité de créer vos propres modèles de documentation, etc.


Notes techniques

DelphiDoc utilise le parser XML de IE implementé dans MSXML.DLL aussi bien pour la génération de documents XML issus de l'analyse des unités que pour la création des fichiers HTML à l'aide de feuilles de style XSL.
Ces feuilles de style XSL sont incluses dans le fichier ExprtDelphiDoc.dll dans des composants TRCData dont il est aussi question sur ce site.

Retour à la page d'accueil


eBook Maker
(Juillet 2001)


eBook Maker est une application permettant de créer des fichiers spéciaux d'extension .lit, pour Microsoft Reader, contentant le texte de livres imprimés. Ils peuvent être lus sur un ordinateur personnel (PC), un assistant personnel (PDA) ou sur tout autre appareil électronique conçu pour la lecture d'eBook.




Chaque eBook requiert un fichier .opf le décrivant avant d'être construit au format de Reader ; il comprend des informations importantes telles que les fichiers à utiliser ou l'image de couverture.
On pourra se reporter à la spécification de l'Open eBook Standard grâce au lien : http://openebook.org pour de plus amples informations.
eBook Maker génère pour vous ce fichier en permettant la modification de chaque élément présent dans la vue en arborescence dans la partie gauche de l'application. Dans cette version, eBook Maker fournit une aide succinte sur chacun d'eux, présente si l'on a cliqué sur le bouton « Help ».
La génération du fichier .lit s'opère ensuite par le menu « Read » tandis qu'une fenêtre en montre la progression ; celle-ci peut aussi reporter des messages d'avertissement si par exemple des balises ne sont pas reconnus.
Si Microsoft Reader est installé sur votre machine, le menu « Open in Reader » permettra d'ouvrir directement le dernier eBook généré dans cette application.

eBook Maker est une application shareware que vous pouvez tester pendant un mois ; au-delà de cette période d'utilisation, l'achat d'une licence est nécessaire ce qui donnerait droit à des mises à jour gratuites pour les futures versions et encouragerait son auteur.

Ressources

Open eBook Standard
http://openebook.org

eBook Maker
ebmaker.zip


Retour à la page d'accueil




Fractales IFS
(Février 2000)

Capture d'écran
Télécharger ifs.zip (Win32, 145 Ko)

Ce programme permet de créer de manière intéractive des courbes fractales de type particulaire, en employant la méthode IFS qui est à l'origine de la compression d'images par les courbes fractales.
La méthode est ici utilisée dans le sens simple de la décompression.
Par exemple, le triangle de Sierpinski peut être obtenu par calcul à partir des coefficients de trois transformations affines.


Avec Fractales IFS définissez graphiquement un nombre quelconque de transformations affines à l'aide de la souris, puis lancez le tracé de la courbe en sélectionnant l'article de menu Fractale/Tracé pour un nombre de points donné.
Voici une autre image générée à partir de quatre transformations affines :


Trois fichiers exemples sont fournis avec ce programme : fougere.ifs, sierpins.ifs et vonkoch.ifs (donnant une partie de l'île de Von Koch).
Il est possible ensuite de copier la courbe fractale dans le Presse-papiers, afin de la récupérer dans un logiciel de dessin, ou de l'enregistrer au format .BMP, en sélectionnant respectivement Fractale/Copier l'image dans le Presse-papiers et Fractale/Enregistrer l'image...
Il est important de comprendre le mode de construction d'une transformation, représentée par un rectangle, pour avoir une idée de la courbe fractale associée à un jeu de transformations affines.
Rappelons qu'une fractale possède la propriété importante d'autosimilarité qui traduit l'invariance d'échelle : ainsi toute partie de la courbe est semblable au tout.

Au démarrage du programme, la fenêtre de l'application représente le carré initial [0,1]x[0,1]. La création du rectangle lié à une transformation affine s'effectue par un cliquer-glisser pour définir les dimensions initiales du rectangle (comm il est nécessaire d'employer des transformations "contractantes", le programme n'autorise la création que de rectangles plus prtits que le carré initial).
Plusieurs manipulations sont possibles sur un rectangle : il suffit de cliquer avec le bouton gauche de la souris à proximité du bord d'un quadrilatère pour faire apparaître un menu flottant.

Retour à la page d'accueil


JRELauncher
(Octobre 2001)


JRELauncher est une application Windows permettant l'exécution d'un programme Java en invoquant JRE (Java Runtime Environment) avec les arguments souhaités. Ainsi, l'exécution d'une application Java à partir d'un exécutable Windows sera plus élégante, au lieu d'un démarrage à partir d'un fichier BAT ou de l'invite de commandes de Windows.



En créant un raccourci vers JRELauncher, vous pouvez saisir des arguments qui seront transmis à JRE ; par exemple :

JRELauncher.exe -cp "%JXTA_HOME%\jxta.jar";"%JXTA_HOME%\log4j.jar";. net.jxta.impl.peergroup.Boot /debug

JRELauncher s'exécutera de manière cachée et laissera place à votre application Java graphique. A des fins de déboguage, en passant l'argument /debug, JRELauncher affichera les arguments passés au shell Windows avant l'appel au JRE.
Techniquement, JRELauncher se sert de l'information de la base de registres pour situer tout d'abord javaw.exe du JRE installé sur votre machine.
Comme l'exemple le laisse supposer, les variables d'environnement (de la forme %VARIABLE%) sont remplacées par leurs valeurs. On pourra avoir recours aux guillements en particulier si ces variables contiennent des chemins comportant des espaces.
JRELauncher est application freeware que vous pouvez télécharger à partir du lien donné plus bas.

Ressources

Télécharger JRELauncher :
jrelauncher.zip


Retour à la page d'accueil


JXTA
(Juillet 2002)


JXTA

JXTA (pour juxtapose) est une plate-forme de développement d'applications P2P (peer-to-peer ou poste-à-poste) initié à l'origine par Sun Microsystems.
Défini par une série de protocoles légers conçus pour gérer n'importe quelle application P2P, JXTA est compatible avec l'ensemble des plates-formes informatiques.
Programmé initialement en Java, et gérant les transferts de données en XML, JXTA est capable de tourner sur n'importe quel OS, et donc sur n'importe quelle machine dotée d'un minimum de capacité de traitement, du PC de bureau au téléphone mobile.


NetSend

Cet article présente l'application NetSend qui est une application JXTA permettant, tout comme la commande NET SEND de Windows NT, d'où elle tire son nom, d'envoyer des messages vers une machine du réseau.
Une fois l'application démarrée, une boîte de dialogue permet à l'utilisateur d'envoyer un message personnel, en utilisant la syntaxe " <Nom de machine> <Message> ", à une autre machine du réseau qui exécute NetSend. Le message apparaît alors instantanément dans une fenêtre modale sur la machine distante, avec le nom du pair à l'origine du message.
Les sources de cette application, NetSendApp.java et NetSend.java, sont disponibles dans la rubrique Ressources à la fin de l'article.


Environnement de développement

L'environnement de développement de NetSend est le suivant :

- OS : Windows 2000 Professionnel
- JDK : 1.4
- JXTA : JXTA build 49b, 08-02-2002
- EDI : Forte for Java v. 3.0

Nous avons défini la variable d'environnement système JXTA_HOME, en accédant aux propriétés système de Windows 2000, avec pour valeur, le chemin contenant les binaires de JXTA. Cette variable sera utilisée dans les fichiers de commande permettant de démarrer l'application NetSend.
Dans le prohet de l'EDI Forte for Java, il est nécessaire d'ajouter jxta.jar dans les fichiers systèmes pour pouvoir compiler les sources de NetSend.


Exécution de NetSend

Voici la commande qui permet d'exécuter NetSend :

java -classpath "%JXTA_HOME%\jxta.jar";"%JXTA_HOME%\log4j.jar";"%JXTA_HOME%\jxtasecurity.jar";"%JXTA_HOME%\jxtaptls.jar";"%JXTA_HOME%\cryptix32.jar";"%JXTA_HOME%\cryptix-asn1.jar" NetSend


Conception de NetSend

NetSend peut servir d'exemple quand à la manière de démarrer une application sur la plate-forme JXTA qui s'accompagne de la publication des trois annonces liées à celle-ci, et de la création d'un groupe.
En effet, un pair déclare les ressources disponibles sur le réseau par des annonces prenant la forme de documents XML ; ces ressources peuvent ainsi être découvertes et utilisées par les autres pairs.
Les pairs qui démarrent NetSend rejoignent un groupe particulier et publient chacun une annonce de " Pipe ", sorte de canal de communication, qu'un autre pair peut utiliser afin d'y envoyer un message.

L'annonce du Pipe possède un identificateur unique et il faut prendre en compte le mécanisme de mise en cache des annonces découvertes. C'est pourquoi, à la première exécution, NetSend sauvegarde l'annonce du Pipe créé dans un fichier nommé PipeAdv.xml, afin de le réutiliser pour les exécutions suivantes et de garder ainsi le même identificateur.


Ressources

http://www.jxta.org

http://platform.jxta.org

Téléchargement la plate-forme JXTA avec des programmes de démonstration :
http://download.jxta.org/easyinstall/install.html


Livres :
JXTA : Java P2P Programming (D. Brookshier, ...)
JXTA (B. Wilson)
http://www.brendonwilson.com/projects/jxta


Les fichiers sources de NetSend
NetSend.zip


Retour à la page d'accueil




Lexica
(Février 2000)

Capture d'écran


Lexica propose l'édition et la conception de documents hypertextes, au format RTF, entre lesquels vous pouvez définir des liens dynamiquement, tandis que vos documents sont organisés hiérarchiquement dans des dossiers.
La recherche de texte intégrale et la définition de mots clés pour un classement dans un index sont les autres fonctionnalités de Lexica, associée à visualisation des informations dans un navigateur hyperbolique.


Lexica se rapproche le plus de l'application WinHelp et de ses fichiers d'aide HLP, mais avez-vous déjà essayé de construire l'un de ces fichiers ? La conception d'aide dans Lexica ne nécessite l'application d'aucune règle stricte, ni l'utilisation d'un compilateur, puisque que c'est dynamiquement que documents, liens, mots clés se construisent.

Cette application s'appuie sur le SGBDO POET (Persistent Objects and Extended database Technology).
Si vous êtes intéressé par ce programme fonctionnant sous Windows (Win32), je pourrais vous envoyer la dernière version.

Retour à la page d'accueil


OBJECT EVERYWHERE Editeur
(Décembre 2000)


« OBJECT EVERYWHERE Editeur » est une application Java permettant de modifier le fichier XML servant à conserver tous les articles de ce site, en dehors de toute considération de présentation.




La séparation du contenu des articles de la manière dont ils vont être présentés dans des pages HTML offre une très grande souplesse dans la chaîne de publication du site. En effet on pourra dissocier la modification du « contenu » qui est ici un ensemble d'articles décrit par un fichier XML associé une grammaire (la DTD), de sa présentation obéissant à des règles de style (fichiers XSL).
Contenu et règles de style peuvent même évolués de manière indépendante.

Utiliser une application spécifique pour modifier la base des articles me paraît important, parce que cela permet de s'affranchir de toute connaissance préalable d'XML et d'être certain d'obtenir un document « bien formé » et « valide ».

La capture d'écran ci-dessous présente la page permettant le modifier le corps d'un article.




Une fois le document modifié on peut alors passer à la génération des pages HTML en utilisant un parseur XSL. XSL est une des applications d'XML qui, au travers de fichiers de style XSL, génère en sortie des balises HTML à partir d'un fichier XML.
La création des fichiers de style demande une connaissance précise des balises servant à manipuler les éléments du fichier d'entrée.
La génération des pages HTML peut s'effectuer, soit de manière dynamique côté serveur (avec une servlet par exemple) ou client (applet par exemple), soit de manière statique. Dans ce dernier cas, les fichiers HTML sont produits avant de les envoyer sur le site web. C'est le cas de ce site et vous avez, sous les yeux, le résultat de cette transformation obtenue avec quatre fichiers de style XSL.


Les outils

« OBJECT EVERYWHERE Editeur » a été développé en Java, avec Forte for Java, et les composants beans XML Master d'IBM. Ces derniers rendent le développement d'application XML rapide, puisque l'on peut utiliser des composants visuels prenant en charge automatiquement la modification du fichier XML. Ceux-ci sont associés à des éléments XML représentés par des composants non visuels. D'autre part on est assuré de produire un document conforme à sa DTD (Document Type Definition).
La transformation XML-HTML est prise en charge par le produit IBM XSL Editor, mais peut l'être aussi avec un autre parser XSL.


Ressources

Les composants Java beans XML Master sont disponibles sur le site d'IBM alphaWorks :
http://www.alphaworks.ibm.com/tech/xmas

XSL Editor est accessible sur ce même site :
http://www.alphaworks.ibm.com/tech/xsleditor


Retour à la page d'accueil


SharedMem
(Janvier 2002)


Il est possible de partager un espace de mémoire entre plusieurs applications au travers d'une DLL qui est chargée par chacune d'elles. Cet article vous permettra de télécharger cette DLL ainsi que son code source pour Delphi.

Au premier chargement, la DLL crée un fichier mappé en mémoire qui permettra aux différentes applications de lire ou d'écrire dans cette mémoire qui est ainsi allouée. Celle-ci est désallouée au moment où la DLL est déchargée par la dernière application qui l'utilise.
Les deux fonctions exportées suivantes permettent d'écrire et de lire dans la zone de mémoire partagée :

procedure SetSharedMem(lpszBuf: PChar);
procedure GetSharedMem(lpszBuf: PChar; cchSize: Integer);


Ressources

Télécharger SMem.dll ainsi qu'un programme d'exemple (testé avec Delphi 6 sous Windows 2000)
SMem.zip


Retour à la page d'accueil


XMLStorage
(Mai 2002)


XMLStorage est un outil freeware permettant la création et la gestion de bases de données (simples) XML pour la sauvegarde et la restitution de documents XML.

Techniquement, une base de données XMLStorage est un fichier composite OLE dont les éléments sont organisés comme dans un système de fichiers : les éléments conteneurs sont appelés stockages (l'équivalent des répertoires) et peuvent comprendre d'autres stockages et des flux (l'équivalent des fichiers). Chaque flux représente un document XML.
D'autre part XMLStorage permet un accès multi-utilisateurs sur une base de données.

Une particularité d'XMLStorage est que tout ou partie de la base de données peut être vue comme un document XML. A partir d'un stockage, XMLStorage peut créer un document XML construit avec les données de tous les éléments appartenant à ce stockage. Ce document est référencé par un pointeur d'interface IXMLDOMDocument, ce qui permet toutes les opérations liées à cette interface (sauvegarde par save, interrogation par selectSingleNode, etc.).

La capture d'écran ci-dessous présente l'application XMLStgApp, fourni avec XMLStorage, après avoir ouvert un fichier de test et sélectionné le stockage " Contacts " comprenant deux documents XML :



XMLStorage est fourni avec l'application XMLStgApp.exe qui permet la création et la modification des fichiers composites qui ont l'extension xst par défaut. Il est ainsi possible d'importer un document XML dans un flux par le menu d'importation, ou d'exporter (copier) dans un fichier, les données XML d'un flux par le menu exporter.
D'autre part le menu " XML/Requête " permet d'effectuer une interrogation de la base de données en utilisant une chaîne de requête XPath saisie par l'utilisateur. Le menu " Options " de la boîte de dialogue de requête permet de choisir la manière d'afficher le résultat. Par exemple, à partir du fichier Test.xst fourni, pour obtenir l'adresse e-mail du contact dont le nom est " Goetzmann ", vous pouvez saisir la chaîne de requête :

//CONTACT[NOM='Goetzmann']/EMAIL


Interface de programmation

L'interface de programmation repose sur des objets automation, de sorte que tout langage supportant les objets COM et tout langage de script peut utiliser XMLStorage.
On se reportera au document XMLStorageAPI.rtf pour une description complète de l'interface de programmation avec des exemples de code en Pascal Objet et JavaScript.


Ressources

Télécharger XMLStorage 0.9 (activeX et documentation)
XMLStorage.zip


Retour à la page d'accueil


XML-UI
(Septembre 2001)


XML-UI permet la création dynamique d'interfaces utilisateurs pour la gestion de données provenant d'un document XML.
Les contrôles graphiques de l'interface utilisateur sont définis dans un autre document XML avec les noms des éléments du document que l'on souhaite modifier. D'autre part XML-UI comprend la présentation de plusieurs volets s'enchaînant les uns à la suite des autres au travers de liens, ainsi que la gestion optionnelle des éléments ou le parcours d'une collection d'éléments.
XML-UI peut être utile pour offrir une interface utilisateur afin modifier des paramètres issues de fichiers de configuration en XML.


Exécution

XML-UI nécessite le parseur XML de Microsoft qui est installé sur votre machine si vous avez déjà une version d'Internet Explorer 4.01 ou supérieure.
L'application XML-UI doit être exécutée avec deux arguments :

XMLUI doc_xml docUI_xml

où doc_xml est le chemin et le nom du fichier XML à modifier, et docUI_xml le chemin et le nom du fichier XML décrivant les éléments de l'interface utilisateur, leurs associations avec les éléments de doc_xml, ainsi que la navigation entre les différents volets.
Je vous propose plusieurs exemples à examiner pour faire vos premiers pas avec XML-UI. Le premier exemple s'attarde d'avantage sur une description générale d'XML-UI. Vous pourrez vous reporter à la rubrique " Références " de la documentation pour lister tous les contrôles d'interface utilisables dans XML-UI.


Exemples


Exemple 1

Le premier exemple est la gestion d'une liste de contacts représentée dans le fichier Contacts.xml et que l'on ouvrira dans XML-UI avec le fichier d'interface utilisateur ContactUI.xml en double-cliquant sur le lien " Contacts ".



L'élément document de Contacts.xml est " CONTACTS " ; celui-ci contient une collection d'éléments nommés " CONTACT " de sous-élements " NOM ", " PRENOM " et " EMAIL ".
Voici un extrait du document XML :

<CONTACTS>
<CONTACT>
<NOM>Goetzmann</NOM>
<PRENOM>Bertrand</PRENOM>
<EMAIL>bgoetzmann@object-everywhere.com</EMAIL>
</CONTACT>
<CONTACT>
...
</CONTACT>
</CONTACTS>

Quand au document ContactUI.xml, celui-ci doit obéir à la dtd XML-UI.dtd pour garantir que celui-ci est valide (à venir) : l'élément document doit être " XML-UI " et contenir au moins un sous-élément de nom PANEL avec un attribut " name " fixé à " default ". Les contrôles graphiques définis sous cet élément seront créés dynamiquement pour constituer le premier volet qui apparaîtra à l'écran.
Nous trouvons donc dans ContactUI.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<XML-UI>
<PANEL name="default" title="Contacts" nodes="CONTACTS/CONTACT" navigation="yes" crd="yes">
<EDIT node="NOM" desc="Nom :" width="200"/>
<EDIT node="PRENOM" desc="Prénom :" width="200"/>
<EDIT node="EMAIL" desc="email :" width="200"/>
</PANEL>
</XML-UI>

Tout d'abord, l'attribut " encoding " de la déclaration XML de la première ligne permettra la présence des caractères accentués. Ici l'élément document " XML-UI " ne comporte qu'un sous-élément " PANEL " dont l'attribut " name " est bien " default ".
La valeur de l'attribut " title " sera utilisée comme nom de fenêtre de l'application XML-UI et aussi affichée dans le volet supérieur.
L'attribut " nodes ", quand à lui, opère une sélection vers le document doc_xml: ici on souhaite gérer tous les éléments " CONTACT " placés sous " CONTACTS ".
On examinera l'exemple 3 pour préciser une sélection qui soit relative à celle définie pour un autre volet.
Pour permettre une navigation dans une collection d'éléments de doc_xml, il suffit d'affecter la valeur " yes " à l'attribut " navigation " pour faire apparaître la barre de navigation, tandis que l'attribut " crd " permettra l'ajout ou la suppression d'un nouvel élément.
Sous l'élément " PANEL " nous trouvons les éléments qui seront représentés dans XML-UI par des contrôles fenêtrés et comportant un attribut " node " précisant le nom du sous-élément ou de l'attribut de " CONTACT " auquel le contrôle sera lié. Pour spécifier qu'il s'agit d'un nom d'attribut, celui doit être précédé du caractère " @ ".
Dans la barre de boutons, le bouton " Valider " permet de placer en mémoire les données saisies dans les différents contrôles fenêtrés dans le volet présenté, tandis que la sélection du bouton " Annuler " initialisera ces mêmes contrôles avec les données en mémoire.
Une sélection du bouton " Enregistrer " équivaut à une validation puis à l'enregistrement des données en mémoire dans le fichier doc_xml passé en argument.

On pourra fermer l'application avec les boutons " OK " et " Annuler " situés en bas à droite de la fenêtre de l'application. Cliquez sur " OK " pour enregistrer les modifications avant fermeture, et sur " Annuler " pour fermer l'application sans enregistrer.


Exemple 2
Le deuxième exemple montre une utilisation des liens pour naviguer entre trois volets différents et modifier des options de configuration du fichier XML Liens.xml et que l'on ouvrira, dans XML-UI, avec le fichier d'interface utilisateur LiensUI.xml en double-cliquant sur le lien " Liens ".



Le fichier LiensUI.xml définit quatre volets dont les noms sont " default ", " activex ", " eai " et " ids ". Utiliser plusieurs volets avec des liens, définis avec l'élément " LINK ", pour aller d'un volet à un autre, permet de regrouper de manière logique, dans chaque volet, des paramètres à modifier.
C'est l'attribut " dest " de l'élément " LINK " qui définit quel est le volet qui apparaîtra. En cas de besoin, le bouton " Volet précédent " permettra de revenir au volet précédent et le bouton " Début " vous ramènera au volet " default ".


Exemple 3

La troisième exemple est le plus sophistiqué. On souhaite modifier une série d'articles contenus dans le fichier articles.xml. Cliquer sur le lien " Articles " pour modifier ce fichier avec le fichier de description d'interface articlesUI.xml.



L'interface fait ici usage de tous les contrôles fenêtrés d'XML-UI.
Chaque article est décrit par les éléments " titre " ou " description " par exemple, et possède un corps qui une collection d'éléments " para ".
Dans l'interface utilisateur, le contrôle LISTBOX permet de représenter de manière synthétique l'ensemble des paragraphes d'un article. La rubrique " Références " de la documentation décrit l'utilisation de ce contrôle pour ajouter, supprimer ou modifier le texte afférent à un élément.
L'élément " LISTBOX " du fichier articlesUI.xml contient l'attribut " subpanel " qui, lorsque l'on aura double-cliqué sur une ligne du contrôle, fera apparaître une boîte de dialogue contenant le volet précisé dans celui-ci.
Au volet " corps " correspond la chaîne de sélection " ./corps " (attribut " nodes ") pour signifier que la sélection, dans le fichier articles.xml, s'opérera à partir de la chaîne de sélection du volet appelant.
D'autre part le contrôle LISTBOX étant rattaché à l'élément " para ", les contrôles du volet sont liés à des attributs de cet élément.


Ressources

Télécharger XML-UI 0.9
xmlui.zip


Retour à la page d'accueil


XPOS
(Juillet 2001)


XPOS est un utilitaire de diagnostique et de test de contrôles OPOS sur un système d'encaissement ; XPOS détecte tous les OPOS déclarés, compatibles avec la norme OPOS 1.4, en présentant leurs propriétés, ce qui comprend les informations de version des parties contrôle objet (CO) et service objet (SO).

D'autre part, si le contrôle "Script Control" de Microsoft est installé, XPOS permet l'exécution de scripts VBScript pour tester les contrôles OPOS.
Il suffit d'écrire des sous-programmes VBScript dans la page réservée à cet effet, de sauvegarder le script en sélectionnant le bouton "Enregistrer", puis d'exécuter le sous-programme en actionnant le bouton "Exécuter" après avoir saisi son nom.
XPOS déclare automatiquement des variables référençant les contrôles OPOS que vous pouvez utiliser dans les sous-programmes.
Les propriétés et méthodes utilisées doivent être conformes à l'interface de programmation décrite dans le document "OLE for Retail POS, Application Programmer's Guide. Release 1.4".
Si nécessaire, le composant Script Control peut être téléchargé à partir du lien mentionné plus bas dans la partie Ressource.

Les évènements OPOS sont également gérés par XPOS pour permettre un rafraîchissement automatique de l'affichage des propriétés des contrôles OPOS.

Voici la liste des périphériques d'encaissement pris en charge actuellement par XPOS :
Scanner
Printer
LineDisplay
Keylock
MSR
POSKeyboard
CashDrawer


Ressources

XPOS 1.0
xpos.zip

Script Control
http://msdn.microsoft.com/scripting/default.htm?/scripting/scriptcontrol/default.htm


Retour à la page d'accueil


XRegistry
(Juin 2001)


L'application XRegistry permet le recensement d'instances d'objets COM qui sont alors rendus accessibles pour d'autres modules, exécutables ou DLL, à l'aide d'un nom unique.
En particulier, XRegistry peut maintenir des pointeurs d'interface COM IUnkown ou IDispatch, que toute application peut réclamer pour ensuite les utiliser.
Une application a ainsi un moyen simple d'accéder à une instance d'objet COM qu'une autre application aurait créé et recensé préalablement.

XRegistry est une application autonome et un serveur automation, de progID "XRegistry.Registry", implémentant l'interface IRegistry, et dont nous détaillons les méthodes ci-dessous.


Accéder à XRegistry

Il n'est pas nécessaire que XRegistry soit déjà exécuté pour l'utiliser. Une application pouvant créer des objets automations pourra en obtenir une référence par une instruction du type :

Reg := CreateOleObject('XRegistry.Registry'); // Reg est un Variant

A la première exécution de XRegistry, sa fenêtre d'application est minimisée.
Un nouvel appel de ce type, quelle que soit l'application cliente, renverrait le même pointeur d'interface, parce qu'une seule instance du programme est autorisée.


Recenser un objet

Recenser une instance d'objet s'effectue par la méthode :

procedure AddObject(const Name: WideString; Ptr: OleVariant);

Le premier argument est le nom qui servira d'identificateur pour recenser l'objet Ptr qui a le type compatible OLE automation OleVariant ; Ptr peut ainsi être un pointeur d'interface ou une valeur d'un type de base.
Lorsqu'un objet est recencé, le nom passé ici en argument est affiché dans l'application XRegistry.
Une exception est lancée si il existe déjà un objet portant le même nom.


Obtenir un objet

La méthode pour obtenir un objet recensé est tout aussi simple :

function GetObject(const Name: WideString): OleVariant;

GetObject renvoie l'objet correspondant au nom passé en argument. Une exception se produit si le nom ne correspond à aucune entrée de XRegistry.


Retirer un objet

Comme son nom l'indique la méthode :

procedure RemoveObject(const Name: WideString);

permet de "dé-recenser" un objet inscrit dans XRegistry.
Une exception peut se produire si le nom passé en argument de la méthode ne correspond à aucune entrée.


Ressource

Téléchargez XRegistry 1.0
xregistry.zip


Retour à la page d'accueil