lundi, décembre 22, 2008

WinDev 14 : Table avec colonne Conteneur

Les colonnes de type conteneur permettent une plus grande liberté d'affichage :


Dans la description du champ, il suffit d'indiquer dans la colonne concernée, son type et de définir un champ principal. Utile pour le tri sur la colonne.

Ensuite, il faire un Drag&Drop dans champs (disponibles dans la deuxième barre d'outil de l'éditeur de fenêtre) et de les placer dans la colonne de type conteneur.
Pour alimenter la colonne conteneur par programmation, il faut utiliser l'indice de l'élément ajouter dans la table :

exemple de code :
i est un entier
POUR TOUT CLIENT SUR NomClient
i = TableAjouteLigne(MoiMême,0,"","")
TABLE_Table1.COL_Client[i].LIB_NOM_Prénom = CLIENT.NomClient
TABLE_Table1.COL_Client[i].LIB_Adresse1 = CLIENT.Adresse1
TABLE_Table1.COL_Client[i].LIB_Adresse2 = CLIENT.Adresse2
TABLE_Table1.COL_Client[i].LIB_CP_Ville = CLIENT.CodePostal+" "+CLIENT.Ville
FIN

Les champs LIB_xx sont placés dans une colonne de type conteneur.

samedi, décembre 20, 2008

Tracer un chemin avec les fonctions Google de Windev 14

Il est possible de tracer un chemin avec la fonction gglrecupèreCarte. Il faut pour cela utiliser tous les paramètres de la fonction. Quelques difficultés peuvent être rencontrées, voir astuces en bas de cet article.

Il faut déterminer les différents paramètres du trait de la structure gglParamètreCarte. De plus il faut déterminer un marqueur si vous utilisez le zoom automatique (la zone ne fonctionne pas contrairement au message d'erreur affiché dans le cas où aucun marqueur n'est défini)
Ici j'ai utilisé un tableau de structure pour les différents points du tracé. Ce qui a permis d'utiliser les [ ] pour le remplissage du tableau dynamique.
Le POUR TOUT ELEMENT est très pratique pour le parcours du tableau.
Remarquez également l'utilisation de la fonction Ajoute pour ajouter un élément à un tableau. On aurait pu aussi utiliser la fonction TableauAjoute.

Voici le code utilisé lors du clic sur le bouton :

point est une structure
lat est un réel
longi est un réel
FIN

cléGoogle est une chaîne = "VotreClé"
Chemin est un gglParamètreCarte
stUnPoint est un point
sCoord est un gglCoordonnée
tabCoord est un tableau de 0 point
Trajet est un gglChemin
UnMarq est un gglMarqueur

// définition du trait
Chemin.Chemin..Couleur = iRougeFoncé
Chemin.Chemin..Epaisseur = 2
Chemin.Chemin..Opacité = 100

//définition du tableau de point
tabCoord = [[40.7078,-74.0021],[46.7140,-56.3968],[51.0165,-29.5967],[51.1067,-25.1016],
[49.8997,-6.1730],[48.9577,2.1423]]
// définition des points du tracer
POUR TOUT ELEMENT stUnPoint DE tabCoord
sCoord.Latitude = stUnPoint.lat
sCoord.Longitude = stUnPoint.longi
Ajoute(Chemin.Chemin..Point,sCoord)
FIN
Chemin.Format = gglJPG
// quand on met un Zoom auto il faut préciser une Zone ou un marqueur
// mais marche pas avec une zone alors on met un marqueur
//chemin.Zone.Latitude = 40.7078
//chemin.zone.Longitude = -74.0021
// définition du marqueur
UnMarq.Latitude = 40.7078
UnMarq.Longitude = -74.0021
UnMarq.Taille = gglPetit
Ajoute(Chemin.Marqueur,UnMarq)
IMG_Image1=GglRécupèreCarte(cléGoogle,40.7078,3.9483,gglZoomAuto,600,400,gglHybride,Chemin)

CAS ERREUR:
Erreur(ErreurInfo(errComplet))


ASTUCES :
Lorsque Google ne renvoie pas la carte, il n'y a pas de message d'erreur, rien ne se passe. Donc si lors du clic sur le bouton, vous avez tout de suite la main sur l'appli, c'est que vous avez trop de points.

Il faut faire attention au nombre de point du tracé. En effet on est limité à 100 points, sauf que celui-ci diminue si on met des marqueurs. Donc si la carte ne s'affiche pas, c'est que vous dépassez le nombre de points. Dans mes tests en mettant 7 marqueurs, je n'ai pu mettre que 70 points au tracé.

Le cas erreur, c'est la gestion automatique des erreurs, inutile de le saisir directement, vous aurez une erreur. Il faut cliquer sur le lien "Si erreur : par programme" du pcode pour avoir le "cas erreur".


Attention :
Si vous utilisez la syntaxe Chemin.Chemin..Point, vous ne pouvez pas l'utiliser dans la fonction Ajoute, il faudra écrire Chemin.Chemin.point. (signaler au ST)

Vous ne pouvez pas non plus utiliser les [] pour remplir un tableau de structure si vous avez déclaré votre tableau : tab est un tableau dynamique de 0 gglCoordonnées (signaler au ST).
C'est pour ca que dans le code il y a une déclaration d'une structure "Point".

Utilisation des fonctions google en WinDev 14

Pour afficher une carte dans un champ image, il faut utiliser les fonctions gglRecupèreCarte et la structure gglCoordonnée. De plus une fonction bien utile pour trouver les coordonnées géographiques d'une ville ou une adresse : gglAdresseVersCoordonnées.

Pour utiliser les fonctions google, il faut s'inscrire sur le site de Google afin d'obtenir la clé indispensable pour la récupération de carte.

Voici les quelques ligne de code pour obtenir ce résultat :
cléGoogle est une chaîne = "Votre clé"
sCoord est un gglCoordonnée

sCoord = GglAdresseVersCoordonnées(cléGoogle,SAI_Adresse)

IMG_Image1 = GglRécupèreCarte(cléGoogle,sCoord.Latitude,sCoord.Longitude,12,631,408,gglHybride)

Astuce : attention au zoom, il va de 0 à 19, toutefois à 19, si google ne peut pas fournir ce niveau de détail, il se passera rien dans votre fenêtre. par conséquent indiquer un niveau de détail normal.