Académique Documents
Professionnel Documents
Culture Documents
Support de cours
Le document que vous avez entre les mains n’a pas la fina-
lité de remplacer les documentations techniques ou com-
merciales livrées avec WINDEV, WEBDEV ou WINDEV Mobile.
Ce document n’est pas un cours d’auto-formation, mais
uniquement un support “papier” à la présentation tech-
nique que vous avez suivie.
Ce document a été réalisé par l’équipe de la LST.
4 Sommaire
8 PC SOFT à votre service
10 WINDEV
Présentation rapide de WINDEV et de ses fonctionnalités
12 WEBDEV
Présentation rapide de WEBDEV et de ses fonctionnalités
14 WINDEV Mobile
Présentation rapide de WINDEV Mobile et de ses fonctionnalités
18 Organigramme
Le champ organigramme permet de représenter des éléments hiérarchisés entre eux.
Voici un survol des fonctionnalités disponibles pour ce champ.
40 iOS : création rapide d’une interface graphique présentant une liste et un détail
42 iOS : 7 conseils
Sous iOS, le “look and feel” est spécifique. Voici 7 conseils pour le mettre en place dans vos applications WINDEV Mobile.
48 Site WEBDEV : création rapide d’une zone répétée “produits” et d’une fiche référençable
50 Zoom automatique sur une image
Lors de l’affichage d’une “fiche produit”, il est souvent intéressant de permettre à l’utilisateur de voir en détail le produit : le zoom
automatique le fait en un clic.
53 Découverte du zoning
Le mode d’édition par zoning permet de réaliser des mises en page complexes sans utiliser de cellules et en permettant le redimensionnement
a posteriori !
64 Internationalisation et Unicode
WINDEV, WEBDEV et WINDEV Mobile permettent de développer des applications multilingues.
Des outils (WDMsg, WDTrad, ...) permettent également de faciliter la traduction des ressources de vos applications.
Petit guide pas à pas pour traduire vos applications.
74 Kinect
Interfacez vos applications WINDEV avec un boîtier Kinect et créez dès aujourd’hui les applications de demain !
Support Technique
et déjà la prochaine intervention !
Gratuit développement!
Quelques exemples de sujets traités :
• Simplification du code et mise en place de nouvelles techniques :
Le site du support technique gratuit (www.pcsoft.fr/st) met gratui-
HyperFileSQL Client/Serveur, Socket, Web Services, Composants,
tement à votre disposition un ensemble d’informations destinées à
Patchs, Configurations, …
vous aider à mieux développer :
• Transformation de modules développés avec WINDEV en Services
• les FAQ
Web.
• les téléchargements
• Optimisation de traitements avant la recette de l’application,
• les forums développeurs professionnels (News Group)
validation d’analyse avant de débuter une application.
Vous avez une question ? Contactez le Support Technique Gratuit
PC SOFT !
• Avec l’utilitaire RequêteAuST (média conseillé). Votre requête sera
généralement traitée sous 48 heures.
• Par téléphone au 04.67.03.17.17 (préparez votre numéro de série
et votre question svp) ou par courrier.
Envoi par email : merci de ne pas attacher de fichiers de taille supé-
rieure à 10 Mo sans l’accord préalable de votre destinataire. Sinon
Formation
votre fichier sera refusé par le système. Séminaires de fo
rmation pour W
Assistance Directe
WEBDEV et WIN INDEV,
DEV MOBILE
PC SO FT organise à Paris
, chaque semaine,
à WINDEV, WEBD des séminaires de
EV et WINDEV Mob formation
en main, Perfecti ile, de différents
Un complément efficace du onnement, Expert, niveaux : Prise
Client/Serveur, ..
Support Technique Gratuit Ces séminaires, .
animés par des
tés, permettent ingénieurs PC SO
Tout projet important ou stratégique doit bénéficier d’une “Assistance de découvrir et FT expérimen-
WINDEV Mobile se de maîtriser WIND
Directe” ! lon un plan effic EV, WEBDEV et
Consultez le calen ace.
L’Assistance Directe permet d’une part de bénéficier d’un contact drier des sémina
des stages et les ires joint à cette
contenus pédago LST (le détail
téléphonique immédiat avec un ingénieur spécialisé, et d’autre part site Web : www. giques sont dispo
pcsoft.fr), vous tro nibles sur notre
de choisir les sujets à traiter, et ce pour une durée que vous définissez votre expérience uverez LA forma
et à votre besoin. tion adaptée à
vous-même. Cela vous permet de résoudre immédiatement les sujets
qui vous posent problème. Suivre une forma
tion organisée pa
c’est se donner r PC SOFT est toujo
les moyens de ma urs rentable :
Le contact téléphonique est garanti sous 8 heures ouvrables, ce qui les meilleurs délai îtriser WINDEV et
s, ou d’en découv WEBDEV dans
vous permet une meilleure efficacité. puissante ! rir la face cachée
, encore plus
Ce service est disponible sur abonnement. Inscrivez-vous vit
e!
Contactez le service commercial pour plus d’informations (Fabrice Ces séminaires pe
uvent également
CHAMBON au 04-67-032-032). en France et à l’é être organisés da
tranger. ns vos locaux,
Le montant de ce
s formations est dé
ductible du “1,5
% Formation”.
8 - LA LETTRE DU SUPPORT TECHNIQUE PC SOFT
Présentation
W
INDEV permet de développer MySQL**, AS/400*, Oracle*, SQL Server*, tion du cycle de vie de vos applications ainsi
simplement tout type d’appli- Access**, ODBC, OLE DB, ...). que leur administration.
cations Windows et Linux dans · Un éditeur UML permettant une modélisa- Une aide en ligne vous guide tout au long
les domaines de la gestion, de tion objet de vos données et traitements. du développement de votre application.
l’industrie, du médical, etc. · Un éditeur d’IHM avec correcteur d’inter- Cette aide inclut également une aide à
face en temps réel. la correction d’erreurs.
Présentation · Un éditeur de code évolué (avec assis-
Les différents éditeurs seront utili-
tants, vérification du code saisi, coloration
Les applications développées peuvent inclure syntaxique, aide contextuelle, …) incluant sés, depuis la définition d’une analyse
l’accès à des bases de données. un puissant débogueur. jusqu’à l’installation, en passant par
WINDEV propose un puissant moteur de base · Un éditeur de requêtes pour les sélections toutes les phases du développement
de données : HyperFileSQL. d’enregistrements dans les fichiers. (création des fenêtres, des états, des
Il est conseillé d’utiliser HyperFileSQL pour · Un éditeur d’états. traitements...), sans oublier les sau-
vos applications afin d’obtenir les meilleu- · Un éditeur d’aide. vegardes.
res performances dans vos traitements de · Un éditeur d’installation.
fichiers. Une version HyperFileSQL Client/ · Un éditeur de dossier technique.
Les bases de données
Serveur est aussi disponible. * accès natif optionnel, ** accès natif Le moteur HyperFileSQL sera utilisé pour
L’environnement de développement inté- inclus. les fichiers de données des applications.
gré de WINDEV se compose de différents La base de données HyperFileSQL est
éditeurs : Les outils disponible en mode Classic ou Client/
· Un éditeur de projet permettant de visua- Des outils facilitant le développement sont Serveur et est librement diffusable avec
liser le tableau de bord du projet. également fournis (WDMAP, WDSQL, ...) ainsi les applications WINDEV.
· Un éditeur d’analyses permettant l’accès à que de nombreux exemples et assistants L’utilisation d’autres moteurs de base
tout type de base de données (HyperFileSQL, réutilisables. de données est également possible sur
HyperFileSQL Client/Serveur, xBase, Des centres de contrôle permettent la ges- le même principe.
W
EBDEV est un AGL (Atelier de un puissant débogueur. du développement (création de pages,
Génie Logiciel) orienté déve- • Un éditeur de styles incluant police, cou- traitements, états, etc.), sans oublier les
loppement de sites Intranet leur, position, etc. sauvegardes.
et Internet. • Un éditeur de requêtes pour les sélections
WEBDEV permet de développer tout type d’enregistrements dans les fichiers. Les Concepts Internet
de sites dynamiques incluant l’accès à • Un éditeur d’états.
des bases de données. Il permet aussi de • Un éditeur de dossier technique reprenant Les différents services de
développer des sites semi-dynamiques et intégralement toutes les informations tech- l’Internet
statiques ou PHP. niques de votre projet.
Le terme Internet regroupe plusieurs services
• Un éditeur d’installation.
Présentation de * accès natif optionnel, ** accès natif
d’utilisation différente :
• FTP (File Transfer Protocol) est un ser-
WEBDEV inclus
vice permettant de transférer des fichiers
WEBDEV est composé de différents éditeurs : L’éditeur d’installation assure la mise en d’un ordinateur vers un autre à travers
• Un éditeur de projet permettant de visua- place des sites créés, ainsi que leur main- Internet.
liser et d’agir sur le graphe du projet. tenance. Cet outil permet de réaliser une • SMTP (Simple Mail Transfer Protocol) per-
• Un éditeur de pages. installation sur le serveur via FTP ou par met d’envoyer des messages ou mails à un
• Un éditeur d’analyses permettant l’accès à média physique (CD, Zip, etc.). utilisateur défini. Chaque utilisateur doit
tout type de base de données (HyperFileSQL, Des outils facilitant le développement disposer d’une adresse Email qui lui sert
HyperFileSQL Client/Serveur, MySQL**, sont également fournis (WDMAP, WDOUTIL, de boîte aux lettres.
xBase, AS/400*, Oracle*, SQL Server*, WDSQL, etc.) ainsi que de nombreux exem- • HTTP (HyperText Transfer Protocol). HTTP
Access**, OLE DB, etc.). ples et assistants réutilisables. est un protocole de niveau application qui
• Un éditeur de code évolué (avec assis- Les principaux éditeurs sont utilisés, depuis est utilisé pour le transfert de pages sur
tants, vérification du code saisi, coloration la définition d’une analyse jusqu’à l’ins- Internet.
syntaxique, aide contextuelle, …) incluant tallation, en passant par toutes les phases Chacun de ces services nécessite un gestion-
W
INDEV Mobile permet de déve- Environnement Des outils facilitant le développement
lopper simplement tout type sont également fournis (WDREGISTRE,
d’applications destinées à être L’environnement de développement intégré WDCAPTURE, WDSYNCHRO, ...) ainsi
utilisées sur un Pocket PC, un de WINDEV Mobile se compose de différents que de nombreux exemples et assistants
Smartphone, un téléphone ou une tablette éditeurs : réutilisables.
Android, un téléphone Windows Phone 7, un • Un éditeur de projet permettant de visua-
Des centres de contrôle permettent la ges-
iPhone ou un iPad et la plupart des terminaux liser et d’agir sur le graphe du projet.
tion du cycle de vie de vos applications ainsi
mobiles (Symbol, Psion, ...). • Un éditeur d’analyses permettant l’accès à
que leur administration.
tout type de base de données (HyperFileSQL,
HyperFileSQL Client/Serveur,...).
Une aide en ligne vous guide tout au long
Présentation • Un éditeur UML permettant une modélisa-
du développement de votre application.
tion objet de vos données et traitements.
Les applications développées peuvent accé- Cette aide inclut également une aide à la
• Un éditeur d’IHM avec correcteur d’inter-
der à des bases de données. correction d’erreurs.
face en temps réel.
WINDEV Mobile inclut un puissant moteur de • Un éditeur de code évolué (avec assis-
base de données : HyperFileSQL Mobile. Le moteur HyperFileSQL Mobile sera utilisé
tants, vérification du code saisi, coloration
pour les fichiers de données de l’application
Il est conseillé d’utiliser HyperFileSQL pour syntaxique, aide contextuelle) incluant un
(ou SQLite sur Android).
vos applications afin d’obtenir les meil- puissant débogueur
leures performances dans vos traitements • Un éditeur de requêtes pour les sélections
L’utilisation d’autres moteurs de base de
de fichiers. Une version HyperFileSQL Client/ d’enregistrements dans les fichiers.
données est également possible sur le même
Serveur est aussi disponible. • Un éditeur d’états.
principe.
• Un éditeur d’installation.
WINDEV Mobile permet également d’accé-
• Un éditeur de dossier technique reprenant
der aux bases de données SQLite pour les
intégralement toutes les informations tech-
applications Android.
niques de votre projet.
Projet d’illustration également possible d’ajouter un champ • le type de flèche qui relie les différents
par le menu “Insertion .. Champ .. Champ éléments.
Le projet utilisé pour illustrer ce sujet est Organigramme”.
“WD Organigramme TDF17” (présent sur Toutes les options peuvent bien évidemment
le DVD). Le champ organigramme peut être rempli par être modifiées par la suite dans la fenêtre
programmation ou se baser sur une source de description du champ organigramme.
Présentation du de données existante (fichier ou requête).
champ FAA du champ
Si le champ organigramme est basé sur
Le champ organigramme permet de repré- une source de données, il est nécessaire Le champ organigramme dispose de plu-
senter des éléments hiérarchisés entre eux. d’indiquer pour chaque information d’un sieurs FAA (Fonctionnalités Automatiques
Par exemple : élément organigramme la rubrique qui lui de l’Application).
• les collaborateurs de la société, en fonc- est associée.
tion de leur hiérarchie. L’utilisateur peut en effet :
• les différentes filiales d’un groupe, avec Par défaut, WINDEV détecte automatique- • zoomer en utilisant le raccourci “Ctrl +
leurs dépendances. ment les informations dont le nom corres- roulette souris”.
• les différentes étapes d’un processus de pond [Fig. 1]. • se déplacer dans l’organigramme avec la
fabrication. souris. Deux “range slider” sont également
• ... Attention : il est important de renseigner disponibles sur les côtés du champ pour
correctement la liaison récursive qui définit faciliter le zoom et le déplacement.
Création d’un champ la hiérarchie de l’organigramme. • enregistrer l’organigramme dans une
image (pour l’imprimer par exemple).
Pour créer un champ organigramme, il Cette fonctionnalité est également dis-
L’assistant de création du champ permet
suffit d’utiliser la barre d’outils et de ponible par programmation via la fonction
également de choisir :
dropper le champ dans la fenêtre. Il est OrgaSauveImage.
• l’orientation du champ,
PERSONNALISER L’AFFICHAGE
D’UN CHAMP ORGANIGRAMME
Projet d’illustration réalisé directement depuis la description Dans notre exemple, l’organigramme hié-
du champ organigramme en sélectionnant rarchique (plan 1) utilise la fenêtre interne
Le projet utilisé pour illustrer ce sujet est comme fenêtre interne pour les éléments “FI_VUEORGAELEMENT_PERSONNEL”. Cette
“WD Organigramme TDF17” (présent sur “Fenêtre prédéfini - Ajouter et person- fenêtre interne a été personnalisée pour
le DVD). naliser la fenêtre prédéfinie” [Fig. 1]. La afficher des informations supplémentaires
fenêtre “FI_WinDevVueOrgaElement” sera (email, numéro de téléphone) ainsi qu’un
alors ajoutée au projet. bouton pour envoyer un email au collabora-
Importer la fenêtre teur directement depuis le champ.
interne 2. Il est également possible d’importer cette
// Recherche le collaborateur
// à partir de son ID
HLitRecherchePremier(Personnel,
IDPersonnel,
Fig. 2 Fig. 3
gOrgaElement.ID)
// Remplit les informations
// du collaborateur
LIB_ORGAELEMENT_TELEPHONE =
Personnel.Téléphone
BTN_ORGAELEMENT_EMAIL..
Libellé = Personnel.Email
LIB_ORGAELEMENT_TITRE =
Personnel.Nom+ESP+
Personnel.Prénom
Projet d’illustration • le champ ruban est contextuel. Cela Création d’un champ
signifie que selon le positionnement de
Le projet utilisé pour illustrer ce sujet est l’utilisateur, le champ ruban se positionne
ruban
“WD Ruban TDF17” (présent sur le DVD). automatiquement sur le volet qui contient Pour créer un champ ruban, comme pour tous
les options adaptées. Bien évidemment, il les champs dans WINDEV, il suffit d’utiliser
Présentation du est nécessaire de programmer cet affichage la barre d’outils et de dropper le champ
champ contextuel. dans la fenêtre. Il est également possible
d’ajouter un champ par le menu “Insertion
Un champ ruban se présente sous la forme Le champ ruban se décompose en 2 types .. Ruban”.
d’un large bandeau qui occupe toute la d’éléments.
largeur de la fenêtre. 1. Les volets, qui correspondent aux menus La gestion (ajout, modification, suppression)
généraux de l’application (Fichier, Affichage, des volets et des regroupements s’effectue
Ce champ offre plusieurs avantages à l’uti- Options, etc.). Les volets sont affichés en depuis la fenêtre de description du champ,
lisateur par rapport à un menu classique : haut du ruban. Chaque volet contient un ou onglet “Général” [Fig. 1].
• l’utilisateur peut facilement visualiser plusieurs regroupements.
toutes les options disponibles en parcou- Lorsque les volets et regroupements sont
2. Les regroupements, qui permettent de
rant simplement les volets. Dans un menu définis, il suffit d’ajouter les champs dans
regrouper différents champs portant sur
standard, il est nécessaire de parcourir les les regroupements, comme pour un champ
une même fonctionnalité.
menus et sous-menus. conteneur standard.
• le champ ruban est un champ visuel, qui Il est possible d’ajouter tout type de champs
peut contenir différents champs (un bouton souhaité : bouton, combo, interrupteur,
d’accès, une jauge, etc.). champ de saisie, champ notation, jauge, etc.
<Champ ruban>.<Regroupement>
Fig. 1
Rendre le ruban contextuel
L’un des avantages du champ ruban est de
proposer un affichage contextuel des options
disponibles.
tion, couleur, opacité, ... Dans l’état “ETAT_Catalogue”, l’ajout Fusion de PDF
• de la fonction iParamètreFiligrane. Il est du signet est effectué dans la rupture La fonction WLangage PDFFusionne permet
possible de préciser directement un texte “Catégorie”. de fusionner des fichiers PDF, qu’ils aient
à la fonction pour obtenir un filigrane avec // Ajout du signet sur été générés avec WINDEV ou non.
les paramètres par défaut. // la catégorie Cette fonction propose deux syntaxes :
// Paramètre le filigrane iAjouteSignet(... • une syntaxe à laquelle on donne directe-
MonFiligrane est un Filigrane PRODUIT.LibCatégorie, ment la liste des fichiers PDF à fusionner.
MonFiligrane.Angle = 45 PRODUIT.LibCatégorie)
// Fusion de PDF
MonFiligrane.Opacité = 75
PDFFusionne(sFichierFinal,
MonFiligrane.Position = ... Notre astuce sFichier,sFichierCGV)
iCentreH +iCentreV Si l’utilisation de signets est conseillée sur
MonFiligrane.Taille = ... les documents de taille importante, l’uti- • une syntaxe qui attend en paramètre un
iAutomatique lisation abusive de signets risque vite de tableau de chaînes. Il est alors possible
MonFiligrane.Texte = ... de remplir un tableau avec les listes des
perdre l’utilisateur.
“Confidentiel” chemins de fichiers PDF. Cette syntaxe est
// Impression d’un filigrane N’hésitez pas à utiliser des ruptures dans
utile lorsque le nombre de fichiers PDF n’est
// paramétré vos états pour les structurer et à ajouter
pas connu à l’avance.
iParamètreFiligrane(... des signets dans ces ruptures.
iFiligraneImpression, // Liste les fichiers PDF
MonFiligrane) PDF : RTF et fusion // de “C:\Mes Documents”
// Imprime l’état sListePDF =...
iImprimeEtat(... fListeFichier(...
ETAT_STATISTIQUES_VENTE) Images et tableaux en RTF “C:\Mes documents\*.PDF”)
... Lors de l’impression d’états contenant du // Conversion
// Impression d’un filigrane RTF avec des images et/ou des tableaux, il ChaîneVersTableau(sListePDF,
// avec paramètre par défaut est conseillé d’utiliser la fonction iPara- tabFichiersPDF, RC)
iParamètreFiligrane(... mètre avec la constante iRTFAvecImage- // Fusionne tous les PDFs
“Confidentiel”) sEtTableaux. PDFFusionne(sFichierFinal,
// Imprime l’état tabFichiersPDF)
iImprimeEtat(... // Gestion du RTF par WINDEV
iParamètre(... Remarque : pour fusionner des PDF ayant un
ETAT_STATISTIQUES_VENTE)
iRTFAvecImagesEtTableaux,Vrai) mot de passe, utilisez la fonction WLangage
PDFFusionneAvecMotDePasse.
Depuis l’aperçu Ce paramétrage permet d’avoir un rendu RTF
La fenêtre d’aperçu avant impression offre géré par WINDEV, optimisé pour ce contenu.
également la possibilité d’ajouter un fili-
grane. Fig. 1
Cette fonctionnalité est particulièrement
utile si un utilisateur souhaite réimprimer
un duplicata de facture pour son client par
exemple : il lui suffit d’ajouter un filigrane
et de réimprimer l’état.
L’utilisateur peut alors facilement para-
métrer son filigrane via la fenêtre [Fig. 1].
Signets
Les signets permettent d’accéder rapide-
ment à une position définie de l’état, ce qui
facilite la navigation de l’utilisateur dans
les éditions de taille importante (comme
les catalogues).
Important : lors d’un export au format
PDF, les signets de l’état sont également
exportés !
Pour créer un signet dans un état, il suffit
d’utiliser la fonction WLangage iAjouteSi-
gnet. Cette fonction peut être utilisée dans
n’importe quel code de l’état : rupture,
corps, champs, ...
Cette fonction attend en paramètre ;
• l’identifiant du signet,
• le libellé du signet,
• l’identifiant du signet parent (optionnel).
Projet d’illustration Par défaut, l’Action Bar contient l’icône Chaque volet peut être associé à une fenêtre
de l’application et le titre de la fenêtre. interne, ce qui permet d’afficher un contenu
Le projet utilisé pour illustrer ce sujet est différent selon le volet sélectionné (indiqué
l’exemple “Android Restaurant TDF17” (pré- par un liseré bleu sous le libellé).
sent sur le DVD).
Ajout d’options
En édition, sur la partie droite de l’Action
Bar, un bouton avec 3 traits est affiché.
Projet d’illustration l’installation de ce SDK sont décrites dans seul type de tablette : le matériel utilisé
WINDEV Mobile et dans l’aide en ligne. est donc connu).
Le projet utilisé pour illustrer ce sujet est
Dans ce cas, nous vous conseillons d’utiliser
l’exemple “Android Restaurant TDF17” (pré- Note : pendant la création du projet, il est la détection automatique des caractéris-
sent sur le DVD). possible d’indiquer les langues utilisées dans tiques : cela permet à WINDEV Mobile de
Le projet “Android Restaurant TDF17” est le projet. En effet, WINDEV Mobile 17 permet créer automatiquement les fenêtres à la
la version obtenue après les différentes de développer des applications avec des bonne taille.
opérations décrites dans ce sujet. langues non latines (russe, chinois, hébreu,
arabe, etc.).
Traitement de la reconnais-
sance vocale
Une fois l’option ajoutée, il suffit de
provoquer le déclenchement de la
reconnaissance vocale par la fonction
ReconnaissanceVocaleDéclenche du
WLangage.
POUR TOUTE CHAÎNE sProposition Il suffit enfin de mettre à jour la zone répé-
DE sListeProposition tée pour afficher les résultats.
SEPAREE PAR RC
Si vous ne disposez pas de périphériques
// Recherche en base
HLitRecherchePremier(... correspondants à la résolution souhaitée,
Génération de
Plat,NomPlat,sProposition) ou pour tester l’application sur un autre
SI HTrouve() ALORS l’application format (ou une autre version d’Android),
// Affichage du résultat vous pouvez créer des émulateurs spécifiques
La génération de l’application se déroule
OuvreFille(FEN_Détails) directement depuis cette fenêtre à l’aide
// On sort du traitement de façon habituelle, il faut cependant noter
du bouton “Créer un émulateur”.
RETOUR que l’utilisation du champ “Action Bar”
FIN nécessite une version Android supérieure
FIN ou égale à 3 [Fig. 1].
De plus, pour utiliser une carte Google Map
// Aucun plat trouvé
Erreur(“Aucun plat trouvé”) dans une application Android, il suffit d’obte-
nir une clé auprès des services de Google.
Si vous n’en avez pas, il suffit de cliquer sur
Traitement des phrases : res- le bouton “Obtenir une clé”, et de suivre
triction de l’analyse au résultat la procédure (gratuit). Retrouvez plus de
le plus pertinent détails sur la gestion des cartes Google Map
Dans la première solution proposée (limi- dans le sujet suivant.
ter la recherche au premier résultat), le
code serait alors de la forme suivante (dans
l’exemple, la recherche est effectuée par Fig. 1
la fonction HFiltreContient, mais il est
possible d’utiliser HFiltre) :
sRecherche est une chaîne
sRecherche = ExtraitChaîne(...
sListeProposition,1,RC)
// Mise en place du filtre
HFiltre(Plat, IDPlat,...
hValMin, hValMax, ...
“DescriptionPlat ~[ ” +...
sRecherche)
Astuce : L’opérateur tilde – crochet (“~[”)
utilisé ici permet de réaliser une condition
“contient” dans un filtre, mais peut aussi
être utilisée dans un traitement de compa-
raison de chaînes.
Projet d’illustration Champ carte” de WINDEV Mobile), il est queurs dans le catalogue [Fig. 1].
possible de le configurer depuis sa fenêtre • etc.
Le projet utilisé pour illustrer ce sujet est de description :
l’exemple “Android Restaurant TDF17” (pré- • le mode d’affichage par défaut, plan ou
sent sur le DVD), dans la fenêtre “FEN_ satellite. Ajout des marqueurs
CARTEGEO”.
L’ajout de marqueurs s’effectue par la
fonction WLangage CarteAjouteMarqueur.
Création du champ Dans l’exemple “Android Restaurant TDF17”,
carte il suffit de parcourir le fichier “Restaurants”
définit dans l’analyse.
Pour afficher une carte dans une application
Android, WINDEV Mobile dispose d’un champ POUR TOUT Restaurant
dédié : le champ carte. RestoPosition est une
• si l’utilisateur peut zoomer ou non. géoPosition
RestoPosition..Latitude =...
Restaurant.Latitude
RestoPosition..Longitude = ...
Restaurant.Longitude
MarqueurResto est
un Marqueur
Une fois le champ ajouté et positionné • l’image des marqueurs. Le catalogue de MarqueurResto..Position = ...
dans la fenêtre (par la barre d’icônes ou WINDEV Mobile contient de nombreux mar-
RestoPosition
depuis l’option “Insertion .. Champs ..
Création de
l’application
Pour utiliser une carte Google Map dans une
application Android, il est nécessaire d’obte-
nir une clé auprès des services de Google.
Si vous n’en avez pas, il suffit de cliquer
sur le bouton “Obtenir une clé” situé dans
l’assistant de génération de l’application
[Fig. 2] et de suivre la procédure (gratuit).
MarqueurResto..Nom = ...
Restaurant.NomRestaurant
Fig. 1
CarteAjouteMarqueur(...
CARTE_Resto,MarqueurResto)
FIN
La fonction CarteAjouteMarqueur prend
en paramètre :
• le nom du champ carte,
• la latitude du marqueur,
• la longitude du marqueur.
Modification des
marqueurs
Il est possible de modifier a poste-
riori un marqueur grâce à la fonction
CarteModifieMarqueur du WLangage.
Utilisation
Une fois le Webservice déployé et le compo-
sant interne intégré, il est possible d’accéder
L
a tablette “Kindle Fire” est une
tablette distribuée par Amazon et
qui tourne sous Android. Fig. 1
WINDEV Mobile permet de développer des applications pour tous les périphériques Android :
vous disposez de fenêtres adaptées à tous les écrans, simplement.
Projet / Configuration
Il est possible de créer une ap-
plication iOS soit :
• lors de la création d’un nou-
veau projet,
• sur un projet existant en
créant une configuration iOS.
Dans le cas d’un projet mul-
tiplate-formes, les fonctionna-
lités spécifiques seront indi-
quées.
Base de données
Les applications iPhone / iPad
peuvent accéder en natif à des
bases de données HyperFile-
SQL :
• stockées directement sur le
périphérique,
• à distance (WiFi, 3G, etc.)
pour un serveur HyperFileSQL
Client/Serveur.
Création de fenêtres
Pour créer rapidement des fe-
nêtres iOS, un assistant spéci-
fique est disponible dans WIN-
DEV Mobile.
Ascenseur automatique
Les applications iOS sont orga-
nisées en hauteur. Pour accé-
der aux champs, l’utilisateur
peut scroller, comme dans une
page Web.
Pour le développeur, il suffit
d’agrandir la fenêtre : WIN-
DEV Mobile gèrera automati-
quement le défilement de la
fenêtre.
Go et Simulateur
Pour mettre au point rapide-
ment le code et l’interface
d’une application iOS, WIN-
DEV Mobile dispose d’un simu-
lateur intégré.
Le développeur peut alors uti-
liser le débogueur, tester la
rotation de son application et
corriger rapidement sans dé-
ployer sur un terminal.
IOS : 7 CONSEILS
Sous iOS, le “look and feel” est spécifique. Voici 7 conseils pour le mettre
en place dans vos applications WINDEV Mobile.
2
Projet d’illustration Une barre en de changer d’application.
Sur la droite, il est possible d’ajouter les bou-
Le projet utilisé pour illustrer ce sujet est haut : la barre de tons de l’application : ajouter, modifier, etc.
l’exemple “iOS CRM TDF17” (présent sur navigation Reportez-vous au point 5 de ce sujet pour
le DVD). plus de détails sur les boutons à utiliser à
1
cet endroit.
3
La barre de navigation est située en haut
Quel gabarit des fenêtres.
utiliser ? Une barre en
bas : barre
d’outils ou de
Dans WINDEV Mobile, la création d’une barre thèmes
Par défaut, le gabarit proposé par WINDEV de navigation peut être effectuée :
Mobile lors de la création d’un projet iOS • à la création de la fenêtre depuis l’assis- La barre située en bas des fenêtres peut
est le gabarit “ActivePhone5”. tant. être de deux types :
• a posteriori, depuis l’éditeur par le menu • une barre d’outils : les boutons permettent
Le gabarit “ActivePhone5” permet de réaliser “Insertion .. Barre de navigation”. d’effectuer des actions disponibles pour le
rapidement des interfaces ayant l’aspect contenu en cours (supprimer le contact, lui
graphique des applications natives iOS. Par défaut, WINDEV Mobile crée le bouton envoyer un email, etc.).
“Retour” (à gauche) et également un libellé
Il est cependant possible d’utiliser un autre pour le titre de la fenêtre.
gabarit pour avoir une interface spécifique
ou si l’application est une application mul- Le bouton “Retour” est un bouton indispen-
tiplates-formes iOS / Android par exemple. • une barre de thèmes : les boutons per-
sable dans une application iOS. Il n’existe en
mettent alors de naviguer entre différents
effet qu’un bouton physique sur les périphé-
“plans” de la fenêtre (liste des contacts,
riques iOS et ce bouton permet uniquement
Pour définir que la saisie d’une date ou d’une • Sur la droite, les boutons d’actions de
heure s’effectuera avec le rouleau système l’application (carrés). Plusieurs types de
du périphérique, il suffit de sélectionner, boutons sont proposés dans les styles du
dans la fenêtre de description du champ, gabarit.
le masque de saisie :
• “Rouleau Date”
7
• un libellé avec un sous-libellé dirigeant des lignes par programmation (par exemple,
vers une liste de choix, une liste d’options ou une liste de valeurs
Un champ • etc. possibles en fonction d’un choix ou d’une
spécifique : Le base de données).
une interface connue par l’utilisateur, Cette fonction va ouvrir une fenêtre de
en utilisant ses paramètres habituels. capture du code-barre : il suffit alors de
cadrer le code-barres et de valider.
En retour, l’application reçoit le chemin
complet de la photo de la vidéo (ou // Capture un code-barres
une chaîne vide en cas d’annulation MonCB est un CodeBarres = ...
ou d’erreur). CBCapture()
Sur iOS, la photo est stockée dans un Cette fonction renvoie un type de données
répertoire interne à l’appareil qui n’est spécifique correspondant à une variable de
pas accessible directement. Pour mémo- type CodeBarres.
riser l’image capturée, deux solutions :
• mémoriser le contenu (binaire) de Il est alors possible de lire le contenu du
l’image en base de données (dans une QR Code grâce à la propriété ValeurBrute
rubrique de type mémo). de la variable.
Projet d’illustration • utiliser la fonction AlbumSauve, pour
// Récupère le contenu
mémoriser l’image dans l’album photos de
Le projet utilisé pour illustrer ce sujet est // du QR Code
l’appareil.
l’exemple “iOS Capture TDF17” (présent sResultat est une chaîne = ...
sur le DVD). MonCB..ValeurBrute
L’image pour alors être réutilisée via la
fonction AlbumSélecteur : cette fonction Rappel : WINDEV et WEBDEV permettent
ouvre en effet un sélecteur basé sur le
Prise de photos ou de répertoire des photos de l’appareil.
d’afficher ou d’imprimer des QR Codes grâce
au champ code-barres ou à la fonction iIm-
vidéos primeCodeBarre du WLangage.
La prise de photos ou de vidéos peut être Sur Android, la photo est stockée sur la
utile dans de nombreuses applications SDcard de l’appareil et est également ajou-
mêmes professionnelles. tée automatiquement à l’album.
Génération terminée ?
Une fois la génération terminée, le réper-
toire de génération contient les éléments
suivants :
1. Un répertoire “lib”. Ce répertoire contient
le Framework WINDEV Mobile pour iOS.
2. Un répertoire au nom du projet conte-
nant :
• La bibliothèque “.WDL” des objets du
projet. Cette bibliothèque est identique
à la bibliothèque générée sous WINDEV ou
WEBDEV. Fig. 2
• Plusieurs fichiers nécessaires au compila-
teur Xcode sur le MAC.
3. Un dossier nommé “<Nom du projet>.xco-
deproj”. Dans ce dossier, le fichier “project.
pbxproj” correspond au projet à ouvrir sous
Xcode sur le MAC.
Création de
l’exécutable
Lorsque le projet WINDEV Mobile pour
iPhone/iPad est généré sur le poste de déve-
loppement, les fichiers générés doivent
être transférés sur un poste Mac pour être
compilés.
Pour compiler le projet sous Xcode :
1. Dans la liste déroulante en haut à gauche,
sélectionnez les options de compilation.
Sélectionnez alors le scheme correspondant Fig. 3
à votre application puis la cible de compi-
lation (appareil actuellement connecté ou
un simulateur).
2. Pour lancer la compilation, cliquez sur
l’option de menu “Product .. Clean” puis
sur l’option de menu “Product .. Build”.
3. Un compte-rendu de compilation appa-
Projet / Configuration
Pour créer un site référen-
çable, il faut que la partie à ré-
férencer du site soit constituée
de pages AWP (ou PHP).
Ces pages pourront ensuite
être avec ou sans contexte se-
lon les besoins du site.
Il est bien entendu possible de
mixer les différents types de
pages dans un même site.
Charte graphique
Si vous ne disposez pas d’une
charte graphique initialement,
WEBDEV vous propose un en-
semble d’ambiances et de pa-
lettes ainsi que des modèles de
pages prédéfinis.
Une palette est suggérée avec
chaque ambiance, mais vous
pouvez bien entendu sélec-
tionner celle correspondant le
plus à vos besoins.
Zones répétées
Les zones répétées sont à privi-
légier (par rapport aux tables)
pour des données à référencer.
Les zones répétées peuvent
être mono ou multi-colonnes
mais devront posséder un
nombre de lignes fixes (pour
limiter la taille de la page) et
de préférence non Ajax.
Refactoring pour le
style
Pour donner rapidement un
aspect graphique soigné à un
contenu d’une zone répétée,
il est possible de créer rapi-
dement des cellules avec des
bordures en sélectionnant les
champs à encadrer et en uti-
lisant l’option “Refactoring ..
Créer une cellule avec la sélec-
tion” de WEBDEV.
Des ruptures ?
Les ruptures permettent de
grouper les données par caté-
gorie selon le critère défini par
les attributs de la zone répé-
tée.
Les ruptures sont très utiles
pour renvoyer un ensemble de
produits selon des critères (ce
qui est toujours bon pour le
référencement).
Rappel
Avant les versions 17, pour afficher une Et la programmation ?
popup dans une page WEBDEV, il fallait : Les fonctions WLangage CelluleAffiche–
• créer une cellule dans la page, Dialogue et CelluleFermeDialogue sont
• rendre cette cellule invisible, compatibles avec les pages Popup.
• rendre cette cellule superposable, Les popups ouvertes sont alors indiquées Donc en cas de permutation de cellules
• forcer son positionnement automatique dans la barre de documents de WEBDEV. en popup (pour bénéficier de la souplesse
pour éviter les ascenseurs, d’édition des popups), le code existant
• afficher cette cellule par la fonction reste compatible et fonctionnel.
WLangage CelluleAfficheDialogue.
Un nouveau jeu de fonctions PopupXXX est
également disponible :
Bien évidemment, cette solution fonctionne
• PopupAffiche permet d’afficher une page
toujours dans WEBDEV 17.
Popup à une position donnée (définie par une
constante ou par les coordonnées X et Y).
Mais nous vous conseillons fortement d’uti- Permutation à partir d’une
liser la nouvelle gestion des popups, plus cellule // Affiche la popup au centre
simple et plus claire. PopupAffiche(POPUP_MaPopup,
Dans les projets contenant déjà des cellules
popupCentre)
pour gérer les popups, il est possible de
transformer ces cellules en pages Popup • PopupFerme permet de masquer une page
Nouvelle gestion indépendantes par l’option “Champ .. Popup ouverte par PopupAffiche.
Avec les versions 17, il devient possible de Permuter .. Cellule/Page popup”. // Ferme la popup
manipuler et d’éditer les popups comme PopupFerme(POPUP_MaPopup)
des éléments indépendants.
REQ_NoteMoyenneProduit.Moyenne
Et comme tous les champs, le champ nota-
tion peut être relié à la base de données,
depuis l’onglet “Liaison”.
Mais aussi :
zone répétée
avec rupture
enroulable,
gestion des
popups,
Unicode, ...
54 - TDF TECH 2012 - www.pcsoft.fr
Edition
par zoning
Champ Notation
Zoom
automatique
sur image
1 Utiliser des clés et Une application souhaite interroger ce fichier Cas 2 : une clé définie sur la
par l’intermédiaire d’une requête pour récu- date, un parcours restreint
des clés pérer les commandes : Pour accélérer la recherche, une clé (avec
composées • qui datent d’aujourd’hui, doublons) est définie sur la rubrique “date”
• dont le montant est supérieur à 50 €. du fichier “Commande”.
Une clé, un index, est une rubrique triée Seules 25 commandes en base répondent à Dans ce cas, le moteur HyperFileSQL dispose
par le moteur HyperFileSQL et qui va servir ces deux critères. d’un index qui lui indique, pour chaque date,
aux recherches, aux parcours, ... Voici le comportement du moteur les numéros des différents enregistrements
HyperFileSQL selon les clés définies (ou qui correspondent.
non définies). Seuls les enregistrements qui corres-
Principe de
pondent à la date du jour vont donc être
fonctionnement des parcourus.
Cas 1 : aucune clé, un parcours
clés fastidieux Mais pour chaque enregistrement parcouru,
Pour illustrer le fonctionnement des clés, Si aucune clé n’est définie dans le fichier, le le deuxième critère (montant) doit être
voici un cas concret expliqué pas à pas. moteur HyperFileSQL n’a pas d’autres choix analysé.
que de parcourir chaque enregistrement Si 5 000 commandes ont été passées ce jour,
Soit un fichier “Commande” qui contient
et de regarder si les deux critères (date 5 000 enregistrements seront tout de même
comme rubriques (entre autres) :
et montant) correspondent à la demande. parcourus, pour seulement 25 enregistre-
• une date,
• un montant total. Autrement dit, TOUS les enregistrements ments ramenés.
vont être parcourus. Plus le fichier com-
Ce fichier contient plusieurs millions de
porte d’enregistrements, plus la recherche
commandes.
sera longue.
3
est créée.
Dans ce cas, le moteur HyperFileSQL dispose
d’un index qui lui indique directement les Recalculer les
numéros d’enregistrements qui correspon-
dant à la date du jour et ayant un montant
statistiques
supérieur à 50.
Seuls les enregistrements correspondant
aux deux critères souhaités sont lus : le Le troisième conseil pour optimiser les accès
parcours est optimisé ! à une base de données est de recalculer
régulièrement les statistiques sur les fichiers
2
de données.
Ces statistiques sont utilisées pour optimiser
Utiliser des clés les recherches en fonction des données
discriminantes réelles contenues dans la base.
Pour lancer le recalcul des statistiques, il
est possible d’utiliser :
• la fonction WLangage hStatsCalcule, pour
L’utilisation de clés est donc un gage d’opti- effectuer un recalcul ponctuel par exemple,
misation des requêtes ... à condition de • le Centre de Contrôle HyperFileSQL, pour
définir les bonnes clés ! définir une tâche planifiée de recalcul heb-
domadaire par exemple.
Il est fortement déconseillé de créer toutes
les clés composées possibles pour un fichier :
L’ajout de tâches planifiées est disponible
• l’ajout de clés composées fait grossir l’in-
dans l’onglet “Éléments planifiés”. Il suf-
dex du fichier. Plus un index est conséquent,
plus la lecture de celui-ci est ralentie. Au
lieu d’optimiser le traitement, cela risque
de le ralentir.
• le nombre important de clés composées
devient difficilement gérable et risque de
perdre le développeur.
Pour choisir les bonnes clés composées,
WINDEV, WEBDEV et WINDEV Mobile mettent
à disposition du développeur l’optimiseur
de requêtes.
Modifier le mode
d’édition d’une page
Le choix du mode d’édition est un paramé-
trage spécifique à chaque page.
Définir un ancrage
La définition d’un ancrage s’effectue sur
les champs via l’option “Ancrage” du menu
contextuel du champ [Fig. 1].
Cette fenêtre permet de définir pour un
Ancrages utilisés
• Sur la cellule et le champ
“Votre demande” : “le champ
s’étire vers la droite et vers
le bas”, “Adaptée au naviga-
teur”.
• Sur le champ “Votre adresse
email” : “le champ s’étire vers
la droite”, “Adaptée au navi-
gateur”.
• Sur les deux boutons : “le
champ se déplace vers la droite
et vers le bas”, “Adaptée au
navigateur”.
Page “Découverte”
(après)
Lorsque le navigateur est
agrandi, la cellule centrale suit
l’agrandissement en hauteur et
en largeur, pour occuper tout
l’espace.
Les boutons sont, eux, tou-
jours placés en bas à droite
de la page, sous le champ de
saisie.
Ancrage utilisé
• Sur le champ zone répétée :
“le champ s’étire vers le bas”,
“Adaptée au contenu”.
Autres modifications
• Le nombre de lignes réser-
vées a été supprimé (mis à 0)
pour la zone répétée.
• Le bloc gris contenant les in-
formations a été remonté juste
sous la zone répétée. Il sera
automatiquement poussé vers
le bas par la zone répétée.
Page “Emotion”
(après)
Quel que soit le nombre de
lignes affichées dans la zone
répétée, le bloc suivant est
automatiquement collé.
La mise à forme s’adapte au
contenu et tout reste harmo-
nieux.
Ancrage utilisé
• Sur le champ image : “le
champ s’étire vers le bas”,
“Adaptée au contenu”.
Page “Sensation”
(après)
Lorsque l’image qui est affi-
chée dans le champ est plus
haute que la hauteur du
champ, le champ est automa-
tiquement agrandi pour affi-
cher une image correcte, qui
respecte les proportions origi-
nales.
1
• les heures, Convertir les chaînes simples en messages
Préparer le projet • les dates, multilangues”. WINDEV va parcourir tout le
à être traduit • les durées, code source des éléments demandés (projet,
• ... élément courant, etc.) et demander pour
chaque chaîne si elle doit être convertie.
Par défaut, ce sont les options linguistiques
Langues de l’application du PC de l’utilisateur qui sont utilisées. Attention : ne convertissez que les chaînes
La gestion des langues de l’application est qui sont des messages à destination des
accessible dans la fenêtre de description du Lors de la validation de la description du
utilisateurs (Info, Erreur, etc.) et pas les
projet, onglet “Langues” [Fig. 1]. projet, toutes les langues sélectionnées sont
chaînes internes au fonctionnement de
automatiquement ajoutées aux éléments
l’application.
Il est possible d’ajouter jusqu’à 64 langues du projet (fenêtres, champs, collections
Le code risquerait de ne plus fonctionner
dans une application. de procédures, ...) [Fig. 2].
et les ressources seraient extraites, et donc
Vous disposez même de 20 langues per- traduites, inutilement.
sonnalisées pour des langues spécifiques : Messages multilangues
vous pouvez donc livrer une version ch’ti Par défaut, les chaînes présentes dans l’édi- // Message d’information
de votre application ! teur de code ne sont pas traduites. // à traduire
Info(“Aucune donnée” )
Pour chaque langue du projet, il est possible Pour qu’une chaîne soit traduite, il est néces- ...
de définir les options linguistiques (format saire de la convertir en message multilangue. // Chaînes internes
d’affichage) pour : // ne pas traduire
• les nombres, Cette opération peut être effectuée par INILit(“PARAM”, “SAUV”, “”,
• les monétaires, le menu “Code .. Message Multilangues .. sFichierINI)
2 Traduire l’applica-
tion avec WDMsg
Cet outil :
Les messages multilangues se distinguent En utilisant la fonction ChaîneConstruit, le
• extrait toutes les ressources à traduire :
des chaînes classiques par un petit drapeau traducteur aura la ressource complète et
les libellés, les bulles de survol, les titres
en fin de chaîne. pourra donc la traduire dans son intégralité
de fenêtre, les messages, etc.
en respectant les constructions grammati-
Remarque : en version 17, il est possible
d’affecter directement dans le code une Fig. 1
chaîne avec du chinois, du grec, du russe,
de l’hindi, ...
Notre conseil
Lorsqu’une chaîne est construite avec des
paramètres, il est conseillé d’utiliser la
fonction ChaîneConstruit plutôt que de
concaténer les chaînes.
Extraction
L’extraction des messages par WDMsg est Réintégration
effectuée par le menu “Outils .. WDMsg .. Lorsque la traduction est terminée, les
Extraction des messages”. ressources peuvent être réintégrées dans le
projet initial via l’option de menu “Outils
4
L’assistant demande alors de choisir la langue .. WDMsg .. Réintégration des messages” :
à extraire. Cette langue sera la langue de il suffit de préciser la langue à réintégrer.
référence pour le traducteur (certains cabi-
3
nets traduisent uniquement à partir d’une
Adapter la base
langue donnée, l’anglais par exemple). de données
Changer la
Il est possible d’extraire les ressources de langue du projet
tout ou partie d’un projet : il est possible
par exemple de demander la traduction
Dans une application qui gère différentes
d’une seule fenêtre uniquement.
langues avec différents alphabets, il est
Une fois les ressources réintégrées, il est pos- nécessaire d’adapter les rubriques chaîne
Notre conseil
sible de changer la langue de l’application : de la base de données.
WDMsg peut effectuer l’extraction des res-
sources soit dans un fichier texte, soit dans • directement sous l’éditeur. Cela permet
d’avoir un rendu de l’application dans une Pour stocker des chaînes dans des alphabets
un fichier HyperFileSQL.
langue. Il suffit pour cela d’utiliser le rac- non latins, il est en effet nécessaire d’utiliser
Nous vous conseillons d’utiliser le fichier
courci “Ctrl + Alt + L” (ou le menu “Affichage des rubriques Unicode.
HyperFileSQL pour 3 raisons :
• La rapidité : le chargement et l’enregis- .. Langue affichée .. <Langue>”).
• en exécution. Le changement de la langue Rappel Ansi/Unicode :
trement des ressources sont beaucoup plus
utilisée dans une application est effectué • La norme Ansi code 1 caractère sur 1
rapides dans ce format.
par programmation via la fonction WLangage octet : la limite est donc de 255 caractères.
• L’unicité : un fichier HyperFileSQL permet
Nation. • La norme Unicode code 1 caractère sur
de gérer toutes les langues du projet. Avec
2 octets : la limite monte donc à 65 535
le format texte, il faudra générer autant
Attention : si la langue du projet est modi- caractères.
de fichiers qu’il existe de langues dans
l’application. fiée dans une fenêtre (par une option de
menu par exemple), il est nécessaire d’ap- L’Unicode permet ainsi de gérer tous les
• La simplicité : quand vous passez par un
peler la fonction Utilise pour rafraîchir la alphabets existants.
cabinet de traduction qui a son propre outil
de traduction, les processus d’import/export fenêtre avec la nouvelle langue.
sont simplifiés avec le fichier HyperFileSQL. Nos conseils
// Passe l’application
Il suffit en effet de parcourir le fichier pour 1. Il n’est pas conseillé de passer en Unicode
// en anglais
récupérer les traductions à faire. Nation(nationAnglais) toutes les rubriques chaînes : passez uni-
// Rafraîchit la fenêtre quement les rubriques nécessaires, qui
L’assistant d’extraction permet également
Utilise(MaFenêtre) stockeront des données dans des alphabets
de limiter le nombre d’extractions, en ne différents.
récupérant que les ressources ajoutées ou En effet, le passage d’une rubrique chaîne
Bien évidemment, lors du changement de
modifiées depuis la dernière extraction : en Unicode augmente la taille des fichiers
langue, tous les champs s’adaptent à la
moins de ressources à faire traduire, c’est de données et donc ralentit légèrement
langue et surtout à son sens d’écriture.
autant d’heures de traduction non facturée l’accès aux données.
et donc économisées !
Par exemple, si l’application est traduite
en arabe : Par exemple, pour un produit :
• le menu de l’application sera positionné • le libellé sera affiché dans plusieurs alpha-
Traduction
à droite, bets (dans les applications, sites, etc.) :
Pour lancer la traduction des messages, il
• la saisie sera effectuée de droite à gauche, donc la rubrique correspondante devra donc
suffit d’utiliser le menu “Outils .. WDMsg
• etc. être Unicode.
.. Traduction des messages”.
• la référence interne du produit, non visible
par les clients, pourra rester en chaîne Ansi
L’outil WDTrad se lance : c’est cet outil qui
“standard”.
gère la phase de traduction proprement dite.
Ce module est bien évidemment inclus avec
5 Passage en mode
Unicode
l’application :
• les champs des fenêtres doivent afficher
des données Unicode,
• les variables doivent manipuler ces don-
nées correctement. En effet, il n’est pas
possible de manipuler des données Unicode
avec des chaînes Ansi.
Un audit important
Lors du passage en mode “Unicode”, WINDEV
réalise un audit du projet pour le passage en
Unicode pour faciliter la transition et mettre
en avant les traitements qui pourraient
ou des structures contenant des chaînes de passage à l’Unicode”.
poser problème.
doivent être vérifiés : il faut appeler la
version Unicode de l’API ou modifier les Remarque : il est bien évidemment toujours
Par exemple :
chaînes en chaîne Ansi. possible d’utiliser une chaîne au format Ansi
• la fonction ChangeAlphabet devient obso-
• etc. dans un projet “tout Unicode”.
lète. Elle peut donc être supprimée.
Il suffit de le préciser dans la déclaration
• si les fonctions fChargeTexte et fSauve-
L’audit remonte également des comporte- de la variable.
Texte manipulent des fichiers d’échange
ments différents, qui sont moins sensibles : sMaChaineANSI est
entre applications, il faut être sûr que les
autres applications gèrent les fichiers en
• l’utilisation des fonctions Minuscule ou une chaîne ANSI
Majuscule.
Unicode. De même pour toutes les fonctions
de manipulations de fichiers : fEcritLigne,
• la comparaison de chaînes via les fonctions
Min, Max ou un opérateur de comparaison.
fLitLigne, fEcrit, etc.
• les appels d’API (par les fonctions API ou
Cet audit est disponible à tout moment via le
AppelDLL32) qui manipulent des chaînes
menu “Projet .. Audit d’édition .. Assistant
1
ces champs, la propriété ..DndCible est des constantes (dndXXX).
donc utilisée.
Définir les sources Dans notre exemple, les deux événements
et les cibles du // Indique que le champ est gérés sont le survol et le lâcher.
// cible d’un “drag and drop”
“drag and drop” MoiMême..DndCible = dndProgrammé
// Active le drag and drop
2
// sur l’image du plan
La première étape dans la mise en place DnDEvénement(Survol,
du drag and drop est l’identification des
Déclarer les IMG_PLAN, dndSurvol)
champs qui vont être utilisés dans le “drag événements à DnDEvénement(Lacher,
IMG_PLAN, dndLâcher)
gérer
3
and drop”.
// Modifie le curseur
DnDCurseur(dndDéplacer)
Projet d’illustration d’ouvrir une session sur Outlook via la fonc- et RendezVousSuivant.
tion OutlookOuvreSession. Cette fonction • remplir l’agenda à l’aide de la variable
Le projet utilisé pour illustrer ce sujet est permet ensuite d’accéder à tous les éléments mRendezVous.
“WD Ouverture TDF17” (présent sur le DVD). de Outlook (rendez-vous, tâches, etc.). AgendaEvt est un RendezVous
// Parcourt les rendez-vous
Pour obtenir une liste complète des possi- Si aucun profil n’est précisé en paramètre, SI RendezVousPremier(nIDSession)
bilités d’interaction avec Outlook et Lotus la fonction : ALORS
Notes, vous pouvez consulter les pages d’aide • affichera une fenêtre de choix du profil TANTQUE
suivantes : si plusieurs profils sont définis. mRendezVous.EnDehors=Faux
• “http://doc.pcsoft.fr/?3032137&name= // Importe les données
• utilisera le profil du poste dans le cas
acceder-outlook”, // de l’événement
contraire.
AgendaEvt .Auteur = “”
• “http://doc.pcsoft.fr/?3032136&name=
// Ouvre une session AgendaEvt .Contenu =
acceder-lotus-notes”. nIDSession = ... mRendezVous.Notes
N’hésitez pas également à tester les dif- OutlookOuvreSession(“”) AgendaEvt .DateDébut =
férents exemples livrés en standard dans mRendezVous.DateDébut
La manipulation des rendez-vous peut être
WINDEV : AgendaEvt .DateFin =
effectuée par les fonctions RendezVousXXX
mRendezVous.DateFin
• “Accès aux bases Notes et Outlook” du WLangage. AgendaEvt .ID =
(exemple unitaire WINDEV)
mRendezVous.ID
• “WD Outlook “ (exemple Complet WINDEV). Lors de la lecture d’un rendez-vous par une AgendaEvt .Lieu =
de ces fonctions, une variable WLangage mRendezVous.Lieu
mRendezVous est automatiquement rem- AgendaEvt .Titre =
Ouverture sur Outlook plie avec les informations du rendez-vous mRendezVous.Objet
Outlook.
AgendaEvt .Catégorie =
La fenêtre “FEN_Agenda” du projet per-
mRendezVous.Catégorie
met d’afficher les rendez-vous d’un agenda ...
Outlook afficher dans un champ Agenda. Pour notre exemple, il suffit donc de : // Ajoute le rendez-vous
Dans un premier temps, il est nécessaire
• parcourir les rendez-vous du profil à AgendaAjouteRendezVous(...
l’aide des fonctions RendezVousPremier AGD_SansNom1,AgendaEvt)
IMPRIMEZ VOS
PLANNINGS ET
VOS AGENDAS
SIMPLEMENT
Projet d’illustration contextuel du champ, accessible par clic ExécuteFAA, en précisant le champ concerné
droit : il suffit alors de cliquer sur l’option et la FAA à exécuter. L’impression d’un plan-
Le projet utilisé pour illustrer ce sujet est “Imprimer”. ning est exécutée en utilisant la constante
“WD Planning TDF17” (présent sur le DVD). faaImprimerPlanning par exemple.
Une fenêtre de paramétrage d’impression
Retrouvez deux articles sur la création et [Fig. 1] permet alors de choisir : // Impression du planning
la personnalisation du champ planning dans • l’orientation d’impression : portrait ou ExécuteFAA(PLN_LOCATIONS,
les pages “Annexes” de ce support de cours. paysage. faaImprimerPlanning)
• le style d’impression : jour, semaine, mois.
Remarque :
Impression • l’étendue, c’est-à-dire la période à impri-
La fonction WLangage DésactiveFAA permet
automatique mer. Cette période est définie par une date
de désactiver la possibilité d’imprimer un
de début et une date de fin.
planning, pour un champ planning donné ou
WINDEV dispose en standard de FAA (les
pour toute une application.
Fonctionnalités Automatiques de l’Applica- Impression // Empêche l’impression
tion). Ces FAA permettent aux utilisateurs
d’applications WINDEV de bénéficier de programmée DésactiveFAA(PLN_LOCATIONS,
faaImprimerPlanning)
Fonctionnalités avancées (export Word ou Comme pour toutes les FAA disponibles, il est
Excel, mémorisation de valeur, etc.) sans possible d’exécuter la FAA d’impression de
code de la part du développeur. planning par programmation. Cela permet
Personnaliser
En version 17, les champs agenda et planning de proposer la fonctionnalité via un bouton l’impression
disposent d’une nouvelle FAA “Imprimer”. ou une option de menu par exemple.
Il est possible de personnaliser l’état utilisé
L’impression d’un champ agenda ou plan- L’exécution d’une FAA par programma- lors de l’impression en créant un état de type
ning s’effectue simplement via le menu tion s’effectue via la fonction WLangage “Planning”. L’exemple “WD Planning TDF17”
Fig. 1 Fig. 4
// Récupère le nombre de
// capteurs connectés
nNbCapteurs = ...
KinectCapteurOccurrence()
Terminer la capture
objet KinectSourceAudio. Cet objet dispose Exemple livré
de différentes propriétés qui permettent
Pour stopper la capture, il suffit d’utiliser notamment de supprimer les bruits, para- L’exemple “WD Kinect TDF17 - Exemple”
la fonction KinectArrête. métrer le mode et l’angle d’orientation des est un exemple d’utilisation didactique du
Si cette fonction n’est pas utilisée, le com- micros (“beam”). composant “Kinect”.
posant se chargera d’effectuer les libérations
nécessaires. L’activation des micros est effectuée par la Cet exemple permet de :
fonction KinectAudioActiveSource. • afficher le flux vidéo (avec ou sans ske-
// Arrête le capteur leton),
KinectArrête(MaKinect) MaSourceAudio est une • afficher le flux 3D (avec ou sans skeleton),
KinectSourceAudio dynamique • afficher et enregistrer le flux audio,
Remarque : la libération des ressources // Active la source audio • afficher la position de la source audio.
allouées à l’utilisation de la Kinect peut SI KinectOptionActivée(MaKinect,
prendre plusieurs secondes. kciAudio) ALORS
MaSourceAudio = ...
KinectAudioActiveSource(
Skeleton MaKinect)
FIN
Un skeleton est une représentation sous
forme de points (coordonnées) d’une per-
sonne. Les différents points sont les points Fonctions utilitaires
caractéristiques d’un être humain : tête,
cou, épaule, coude, mains, ... Le composant “WD Kinect”
propose plusieurs fonctions
La Kinect peut détecter jusqu’à 6 personnes, utilitaires pour faciliter l’uti-
mais seuls 2 skeletons peuvent être suivis lisation et l’analyse des élé-
simultanément. Les autres personnes sont ments récupérés (vidéo, audio,
alors simplement identifiées par leur bary- skeletons, ...) :
centre (point central). • les fonctions KinectFluxXXX
VersChamp permettent d’affi-
Un skeleton est représenté par la classe cher automatiquement un flux
KinetSkeleton du composant. 3D ou vidéo dans un champ
image.
• les fonctions Skeleton
Spécificités 3D et VecteurXXX permettent de
vidéo faciliter l’analyse des positions
des skeletons.
Les informations 3D détectées par la Kinect
Par exemple la fonction
sont récupérées par l’intermédiaire de
SkeletonVecteurRectangle
faisceaux infrarouges : selon la distance à
détermine le rectangle dans
laquelle un point infrarouge est “stoppé”
lequel le skeleton est défini.
(par un corps, un objet, ...), la Kinect déter-
mine une profondeur. • les fonctions
KinectAudioCaptureDébut
Par défaut, la Kinect est programmée pour et KinectAudioCaptureFin
gérer des éléments situés entre 80cm et 4m permettent d’enregistrer dans
de distance. La propriété DistanceType de un fichier le flux audio capté
l’objet KinectFlux3D permet de réduire par la Kinect.
cet intervalle à 40cm-3m (pour détecter • la fonction KinectSkeleton
des éléments très proches, par exemple SeuilStabilité permet de
si la Kinect est disposée juste au-dessus modifier le seuil de stabilité
de l’écran). des skeletons. En effet, un
ABONNEZ-VOUS !
L11181
Tarif modifiable sans préavis Vos Nom & Prénom : ...........................................................................
Votre Société : ..................................................................................
Bulletin d’abonnement à retourner avec Votre Adresse précise : ........................................................................
votre règlement à : .....................................................................................................
PC SOFT Code Postal : .............................. Ville : .............................................
Lettre du Support Technique Pays : ........................................ Tel : ...............................................
BP 44 408 Adresse Email : .................................................................................
34197 MONTPELLIER Cedex 05
France Je choisis un abonnement “LST PC SOFT” pour : À partir du numéro : ..............
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
Projet d’illustration Création d’un champ L’assistant demande alors de définir les
éléments correspondant aux informations :
Les exemples “WD Planning” et “WD planning • obligatoires [fig. 4] : titre, dates de début
Agenda”, livrés en standard avec WinDev Pour créer un champ planning, il suffit, dans et de fin, ressource.
illustrent l’utilisation des champs Planning l’éditeur de fenêtres ou de pages, d’utiliser • facultatives [fig. 5] : contenu, auteur,
et Agenda de WinDev. le bouton “Créer un champ Planning”. lieu, invités, etc.
Suppression
Lorsque le champ planning est lié à une base
de données, la FAA de suppression d’un
rendez-vous n’est pas activée par défaut,
pour éviter les risques de suppression par
inadvertance qui supprimeraient directe-
ment dans la base de données.
Pour proposer cette option aux utilisateurs,
il suffit de l’activer, via l’option “Autoriser
la suppression” de l’onglet “Contenu” de la
description du champ planning.
Fig. 2
Remplir un planning
par programmation
Si le planning est un planning “programmé”,
le remplissage doit être effectué à l’aide
de la fonction PlanningAjouteRendezVous.
Cette fonction accepte deux syntaxes :
• la première syntaxe attend en paramètres
les informations obligatoires (titre, res-
source, dates de début de fin).
PlanningAjouteRendezVous(...
PLN_RendezVous, “Marcel”,
Et voilà, le planning est créé et opération- “Réunion commerciale”,
nel ! Il est bien évidemment possible de dDateDebut, dDateFin, Fig. 3
paramétrer ce planning dans les moindres “REUNION”)
détails, nous le verrons dans l’article suivant, • la seconde syntaxe attend en paramètre
mais pour l’instant regardons comment le une variable de type RendezVous. Ce type
manipuler. de variable permet de renseigner directe-
ment toutes les informations (obligatoires
Utilisation du champ et facultatives) d’un rendez-vous.
planning Rendezvous est un RendezVous
Rendezvous.DateDébut = ...
En exécution, le champ planning dispose dDateDebut
de FAA (Fonctionnalités Automatiques de Rendezvous.DateFin = ...
l’Application). dDateFin
Rendezvous.Titre = ...
Il est par exemple possible de changer le
“Réunion commerciale” Fig. 4
mode d’affichage du planning : au mois, à Rendezvous.Ressource = ...
la semaine entière, au jour, etc. “Marcel”
Ces FAA permettent également de : PlanningAjouteRendezVous(...
• ajouter un rendez-vous. Il suffit pour cela PLN_RendezVous, Rendezvous)
de sélectionner une période et d’utiliser
l’option “Nouveau rendez-vous” du menu Notre astuce
contextuel.
Si vous remplissez des plannings avec de
• modifier un rendez-vous, via l’option
nombreuses ressources / de nombreux ren-
“Éditer le rendez-vous” du menu contextuel.
dez-vous, n’hésitez pas à désactiver l’affi-
• déplacer un rendez-vous à la souris, en
chage du planning avant remplissage pour
sélectionnant le rendez-vous et en faisant
éviter tout effet de “paint” et accélérer
un “glisser déplacer”. Il est alors possible Fig. 5
l’affichage du champ.
d’affecter un rendez-vous à une autre res-
source. // Désactive l’affichage
• augmenter sa durée, en redimensionnant PLN_RendezVous..
AffichageActif = Faux
le rendez-vous.
// Traitement de remplissage
Les modifications effectuées dans le planning ...
sont automatiquement répercutées dans la // Réactive l’affichage
base de données ou dans la variable utilisée. PLN_RendezVous..
AffichageActif = Vrai
// Change la granularité
Modification des // d’un rendez-vous :
liste (cadre extérieur, horaires ouvrables,
jours fériés, etc.) [fig. 2],
paramètres // 60 minutes • modifier les couleurs et polices.
PLN_RendezVous..
Le planning dispose de nombreux paramètres
GranularitéRendezVous=60
qui permettent d’adapter le champ à tous
// Change l’heure de début
Affichage d’un
types de besoin : taille de rendez-vous,
// des heures ouvrables : rendez-vous
plages horaires, etc. // 08h30
PLN_RendezVous.. Par défaut, l’affichage d’un rendez-vous
En édition HeureOuvrableDébut = “0830” comprend [fig. 3] :
Bien évidemment, tous les paramètres du • un bandeau “titre”,
champ planning peuvent être modifiés depuis
l’éditeur de fenêtres (ou éditeur de pages).
Personnalisation du • un libellé “contenu”,
• une image,
Il suffit pour cela d’ouvrir la fenêtre de
style • un pictogramme indiquant la récursivité
description du champ planning, onglet Par défaut, le champ planning utilise le style d’un rendez-vous.
“Détails” [fig. 1]. par défaut du gabarit associé au projet.
Sous WINDEV, cet affichage est en fait déter-
Mais il est tout à fait possible de person-
En exécution naliser tous les éléments graphiques d’un
miné par une fenêtre interne, qui peut être
La modification des paramètres d’un champ complètement remaniée dans l’éditeur de
champ planning.
planning peut être effectuée par program- fenêtres.
mation, en utilisant les propriétés associées Il suffit pour cela de :
Pour récupérer la fenêtre interne d’affi-
au champ planning. • ouvrir la fenêtre de description du champ
chage, il suffit de sélectionner l’option
Par exemple : planning, onglet “Style”.
“Fenêtre prédéfinie” dans l’onglet “Général”
• sélectionner l’élément à modifier dans la
de la fenêtre de description du champ plan-
L’URL Rewriting permet un référen- page donnée est donc référençable par les Par exemple, la page “recherche” de
cement accru des pages. moteurs de recherche. l’exemple “WEBIMMO” attend différents
Le développement d’un site en mode paramètres :
Projet d’illustration AWP nécessite de gérer par program- • la région de recherche,
mation les contextes. WEBDEV dis- • le type de bien,
Le projet utilisé pour illustrer ce sujet • la surface demandée,
pose de différentes fonctions prévues
est “WEBIMMO” (fourni en standard dans • etc.
à cet effet : DéclareContexteAWP,
WEBDEV).
ConfigureContexteAWP, etc. L’adresse de la page après l’URL Rewriting
est : “http://www.monsite/recherche-dept-
Rappel sur WEBDEV Le premier point de base à respecter pour
cp-cat-prixmin-prixmax-surface-type-bien.
faire un site référençable est donc d’utiliser
WEBDEV permet de créer des sites Internet, le mode AWP. awp”.
Intranet, et Extranet. Il existe un certain nombre de règles à Cette adresse se compose :
respecter pour optimiser le référencement. • du nom de domaine : “www.monsite”,
WEBDEV dispose de plusieurs technologies
• du nom de la page : “recherche”,
intégrées : Remarque : Pour plus de détails sur le réfé- • des paramètres, inclus dans le nom de
• le mode standard, qui gère les contextes rencement et sa mise en place dans un site la page et séparés par un tiret (“-”). Il est
de manière automatique, WEBDEV, vous pouvez consulter la LST 76. possible de séparer les paramètres par un
• le mode AWP (“Active WebDev Page”), qui
slash (“/”).
permet de créer des sites avec des pages
adressables individuellement, Utiliser l’URL Rewriting
Un point important pour le référencement,
Notre astuce
• le mode PHP, qui permet de développer
en WLangage des sites PHP. mais souvent négligé, est le nommage des
pages et des paramètres.
Mode standard En effet, les noms des pages et les para-
Le mode standard est le mode de dévelop- mètres de l’URL sont également référencés.
pement par défaut de WEBDEV. Le dévelop- Un nom de page “clair” optimise donc le
pement est très proche de celui de WINDEV. référencement.
Pour des questions de sécurité, l’URL d’une Il est possible de réécrire les URL d’accès
page donnée change à chaque session : la aux pages : il s’agit du mécanisme d’URL
page ne peut donc pas être référencée par Rewriting.
les moteurs de recherche comme Google.
Les moteurs de recherche indexent le nom
Pour un Intranet ou un Extranet, il n’y a des pages avec un poids plus fort que les
rien de mieux d’un point de vue sécurité. Dans la partie basse, vous pouvez tester
paramètres.
Un seul point d’entrée au site est défini, il l’URL Rewriting avec une adresse spécifique
Mais, la plupart du temps, un des para-
s’agit de la page d’accueil. pour savoir quelle page sera appelée et avec
mètres contient l’information importante,
La mise en place d’un système d’identifi- quels paramètres.
par exemple le nom du produit à afficher.
cation (login/mot de passe) et le site est Il suffit donc de cocher les pages sur les-
Le nom du produit se retrouve donc réfé-
sécurisé ! quelles l’URL Rewriting doit être activé,
rencé avec un poids moins fort que le nom
c’est-à-dire les pages qui acceptent des
Mais si le site concerné est un site de vente de la page en elle-même, qui est souvent
paramètres et dont le contenu varie en
en ligne, avec un catalogue de produits par plus générale.
fonction de ces paramètres (page de détails
exemple, il est souhaitable que tous les Avec l’URL Rewriting, l’URL ne contient plus d’un produit, page de recherche, etc.).
Notre astuce
Si une information d’audit ne vous intéresse
pas, il est possible de l’ignorer afin qu’elle
ne ressorte plus dans les prochains audits du
projet : il suffit d’utiliser l’option “Ignorer
cette information” du menu contextuel.
Le bouton “Voir les informations ignorées”
permet d’afficher toutes les informations
d’audit qui ont été marquées comme à
ignorer et éventuellement de les réactiver.
Remarque :
Il est possible d’imprimer le résultat de
l’audit statique via le bouton “Imprimer”.
Dangers potentiels
Cette catégorie regroupe les problèmes qui
peuvent avoir une incidence relativement
importante sur le projet :
• le projet est de taille conséquente mais
n’utilise pas le GDS,
• un élément du projet est extrait du GDS
depuis plus de 15 jours,
• des fenêtres, pages ou états qui ne sont
pas à jour de leurs modèles,
• un accès natif est utilisé mais n’est pas
installé ou n’est pas à jour de la version
majeure,
• etc.
Qualité
WinDev, WevDev et WinDev Mobile disposent projet : il suffit de cliquer sur le bouton
de nouveaux outils pour améliorer la qualité “Audit Statique”. Cette catégorie regroupe les problèmes
et la performance des applications, dont d’amélioration et d’optimisation :
Le menu “Projet .. Audit d’édition” permet
les “audits”. • des requêtes peuvent être optimisées.
également de lancer une analyse :
• le projet contient du code mort. Il s’agit
L’audit statique analyse les sources du pro- • du projet complet (option “Rapport géné-
de procédures déclarées qui ne sont jamais
jet, les fenêtres, les champs, le code et crée ral”).
utilisées.
un rapport de tous les problèmes potentiels • de certains éléments du projet seulement :
• le projet contient des éléments orphelins.
qui ont été détectés. analyse des requêtes, du code mort, des
Il s’agit de fenêtres, pages ou états qui sont
éléments orphelins, etc.
définis mais qui ne sont jamais appelés.
WINDEV analyse le projet et en ressort un
Audit de projet rapport concernant les améliorations qu’il
• etc.
Le lancement de l’audit statique s’effectue est possible d’effectuer au niveau du projet. Notre astuce
directement depuis le tableau de bord du Dans le cas du code mort et des éléments
Pour chaque ligne d’information d’audit, si
Notre conseil
Dans le cas de fautes qui sont des mots
corrects, mais inconnus du dictionnaire, il
est conseillé de désactiver l’erreur depuis
l’audit plutôt que d’ajouter le terme dans
Auditer une
application par
programmation
L’audit dynamique peut également être
programmé. Cette fonctionnalité est très
utile pour récupérer les informations de
l’application déployée chez le client, mais
également pour auditer uniquement un
traitement spécifique de l’application.
WINDEV dispose en standard de la famille de
fonctions dbgXXX. Cette famille regroupe
toutes les fonctions utiles au débogage
d’applications : assertions, logs d’exécu-
tion, logs d’audit, etc.
Pour activer l’audit, il suffit d’utiliser la
fonction dbgActiveAudit. Cette fonction
attend en paramètre :
• le chemin complet du fichier d’audit
généré. Par défaut, le fichier est généré
dans le répertoire d’exécution, avec un nom
qui contient la date et heure de création.
• les options de l’audit. Par défaut, l’audit
démarre immédiatement et enregistre tous
L’audit dynamique permet d’analyser l’exé- de bord et via le bouton “Go” de la barre les événements.
cution d’une application et de visualiser les d’outils. // Active l’audit dynamique
warnings et conseils d’optimisation qui ont • par programmation directement, avec la dbgActiveAudit()
été détectés. fonction WLangage dbgActiveAudit.
Les fonctions dbgSauveDumpDébogage et
dbgSauveDumpMémoire permettent res-
L’audit automatique assure donc la qualité Notre conseil pectivement d’enregistrer dans un fichier
des applications avant même leur diffusion. Il est conseillé d’activer l’audit dynamique spécifique :
à 2 moments principaux : • un dump de débogage. Ce dump permet de
L’audit détecte les bugs avant qu’ils ne se • lors de la phase de tests manuels ou auto- positionner le débogueur avec les différentes
produisent en clientèle et améliore ainsi la matiques, via le “Go minutieux”. L’audit informations de l’application au moment de
qualité perçue tout en réduisant les coûts va permettre de détecter les problèmes l’appel à la fonction.
de maintenance. potentiels avant même que l’application ne
// Mémorise un dump de débogage
soit livrée : par exemple des libellés ou des
dbgSauveDumpDébogage()
champs de saisie affectés par programmation
Lancer un audit et qui se retrouvent tronqués. • un dump mémoire. Ce dump fournit
dynamique Rappel : un article sur la mise en place de une description détaillée des éléments en
tests automatiques est disponible dans le mémoire et de leur consommation.
Le lancement de l’audit dynamique peut
support de cours du TDF Tech 2009. // Mémorise un dump mémoire
être effectué de deux façons différentes :
• lors de la phase de recettage chez les dbgSauveDumpMémoire()
• depuis l’environnement, avec le “Go
clients, via les fonctions du WLangage.
Minutieux”. Ce mode “Go” est disponible
L’audit permettra de remonter des pro-
via le bouton “Audit dynamique” du tableau
blèmes spécifiques aux clients et à leur
W
INDEV dispose en standard de • Le débogueur “L’objet n’a pas été instancié”)
plusieurs outils et fonctionna-
lités pour aider le développeur Les assertions Pour définir une assertion, il suffit d’utiliser
à mettre au point et optimiser la fonction dbgAssertion du WLangage avec
les applications. Une assertion permet de vérifier une condi- en paramètre la condition à vérifier, et le
tion lors de l’exécution de l’application. message à afficher si jamais elle ne l’est pas.
Dans cet article, nous allons étudier les • Si la condition n’est pas vérifiée, une boîte
principales fonctionnalités offertes par d’information s’affiche avec le détail de la Par défaut, les assertions sont actives uni-
WINDEV sur ce domaine afin de vous aider vérification. quement en mode test. Il est possible de les
à choisir lesquels sont les plus adaptés selon activer en déploiement, il suffit d’utiliser
vos projets. Le développeur a alors accès à la pile d’exé- la fonction dbgactiveAssertion, avec le
cution, c’est-à-dire tous les appels qui ont paramètre Vrai.
abouti à ce résultat.
Principales
// Variable CClient Différence fondamentale
fonctionnalités clClient est un CClient La condition utilisée dans l’assertion n’est
Les principales fonctionnalités offertes par exécutée par le WLangage que lorsque les
WINDEV en termes de mise au point sont
// Création du client assertions sont actives. Le fonctionnement
CréerClient(clClient)
les suivantes : peut donc être différent en mode test et
• Les assertions // L’objet clClient doit en mode exécutable.
• Les traces // avoir été instancié
• Les logs d’exécution dbgAssertion(clClient<>Null, Il faut être particulièrement vigilant lors de
l’utilisation de fonctions dans la condition
fournie à la fonction dbgAssertion. En effet,
si la fonction utilisée réalise une initialisation
ou une connexion, cette opération ne sera
pas réalisée dans l’application utilisée en
mode “exécutable”.
Notre conseil
Les assertions peuvent servir pour des cas
“spécifiques” ou vérifier les “prérequis”
d’une fonction. C’est-à-dire le cas qui ne
devrait jamais arriver mais qui arrive tou-
jours un jour : une chaîne vide alors que l’on
attend un nom logique, un chemin vers un
fichier inexistant, etc.
Les traces
La fonction WLangage Trace permet d’affi-
cher des informations pendant l’exécution permettre de fiabiliser l’application.
de l’application. Cette fonction est très
couramment utilisée lors des phases de
développement d’une application. Le débogueur
Dans WINDEV, le débogueur permet de débo-
En revanche, beaucoup moins de
guer dans différentes configurations :
développeurs connaissent la possibilité de
• Déboguer le projet en mode test
personnaliser le fonctionnement des traces.
• Déboguer un exécutable, en local ou à
Cette personnalisation est effectuée grâce
distance (en lançant l’application WDDebug
à la fonction TraceDébut du WLangage.
sur le poste distant).
// la fenêtre de trace • Déboguer un site, en local ou à distance
// est affichée par dessus • Déboguer directement sur un terminal
// les autres fenêtres et mobile
// un fichier de trace est • Déboguer un composant, depuis le projet
// sauvegardé hôte, ou depuis un exécutable
TraceDébut(trFenêtre + ... • Déboguer des procédures et des triggers
trDessusTout + trFichier, stockés
fRepExe() +[“\”]+ ...
”TraceExecution.txt”)
Le débogueur permet alors de :
• Faire du débogage multithread
Il est alors possible de :
• Évaluer des variables dynamiquement
• Afficher les traces dans une fenêtre,
• Définir l’instruction suivante à exécuter
c’est le fonctionnement par défaut avec la
• Modifier le code à la volée, c’est le Edit
constante trFenêtre
and Continue
• Enregistrer les traces dans un fichier avec
• Visualiser le contexte HyperFileSQL d’un
la constante trFichier.
fichier ou d’une source de données
• Désactiver les traces par programmation
• Faire des points d’arrêts conditionnels....
avec la constante trDésactivée
Le volet du débogueur
Il est également possible de retrouver les
assertions, et les traces directement dans
l’éditeur dans le volet du débogueur.
G
oogle Play Store est une plate- Vous êtes maintenant prêt à déployer une Play Store : choisissez le suffisamment
forme de téléchargement en ligne application Android ! simple et explicite.
accessible directement depuis un • un texte de description de l’application.
terminal mobile Android. Compte marchand • une icône haute résolution de l’application
Si vous souhaitez distribuer des applica- PNG ou JPEG en 512x512. Cette icône est
Cette plateforme permet donc de télécharger tions Android payantes, il est nécessaire de obligatoire.
des applications, mais également (et surtout) paramétrer un compte marchand “Google • une image en 1024x500 (format PNG ou
de mettre une application à disposition Checkout” avec davantage d’informations : JPEG) qui servira de “bannière” sur le mar-
des utilisateurs Android. Ces applications • les coordonnées personnelles du contact. ket (exemple ici pour notre application
peuvent être gratuites ou payantes. Par défaut, les informations du compte “WM Note De Frais” : “https://play.google.
Google utilisé sont récupérées. com/store/apps/details?id=com.pcsoft.
Les applications Android développées avec
• les coordonnées publiques : raison sociale, wm_note_de_frais”).
WINDEV Mobile peuvent bien évidemment
site de l’entreprise, etc. • le type de l’application (s’agit-il d’un jeu
être déployées sur cette plateforme.
• les informations financières. ou d’une application ?) et la catégorie cor-
Cet article présente la marche à suivre pour • ... respondante (application de communication,
déployer une application WINDEV Mobile de finance, social, etc.)
Android sur Google Play Store. Déployer une application • ...
Pour déployer une application, il suffit de
PC SOFT a publié sur Google Play Store
plusieurs exemples d’application :
cliquer sur le bouton “Publier une applica- Notre conseil
tion” dans votre page. Les titres et descriptifs peuvent être saisis
• “WM FTP Client”,
• “WM Lecteur RSS” dans plusieurs langues. Il suffit de cliquer sur
• “WM Note de frais”, le lien “Ajouter une langue” et de sélection-
• “WB Quizz”, ner les langues souhaitées. Pour renseigner
• ... les textes dans une langue donnée, il suffit
Avant le déploiement effectif de l’applica- alors de cliquer sur le lien correspondant.
Création d’un compte tion sur Google Play Store, il est nécessaire N’hésitez pas à renseigner différentes
et identification de rassembler quelques éléments essentiels : langues, surtout si votre application est
• le fichier .APK, qui correspond à l’applica- multilingue !
Dans un premier temps, il est nécessaire de tion proprement dite. Ce fichier est généré Lorsque toutes les informations relatives à
créer un compte sur la page “https://play. par WINDEV Mobile via le menu “Atelier .. l’application sont saisies, il suffit de cliquer
google.com/apps/publish/Home”. Générer l’application Android” ou directe- sur le bouton “Publier”.
Si vous ne possédez pas de compte Google ment par le bouton de génération.
L’application sera immédiatement visible
(GMail, AdWord, etc.), il est nécessaire Sur le plan “Signature de l’application” de sur Google Play Store.
d’en créer un. l’assistant de génération, il est nécessaire
Une fois vos identifiants récupérés, il vous de cocher l’option “Signer l’application”.
suffit de vous identifier sur la page. Il est en effet obligatoire de signer une
application afin qu’elle puisse être déployée
Avant de publier une application, il est
sur Google Play Store.
nécessaire de renseigner quelques infor-
• au moins 2 captures d’écran de l’appli-
mations essentielles au compte :
cation (optionnelles). Ces captures d’écran
• le nom du développeur,
doivent être au format PNG ou JPEG 24 bits,
• un numéro de téléphone,
avec des dimensions spécifiques (320x480,
• un site internet.