ANNEXE A
Améliorations de
Visual FoxPro 9.0
Amélioration de l'interface utilisateur permettant
d'ancrer les formulaires et contrôles et meilleur support des images.
Personnalisation de l’affichage de la fenêtre des
propriétés suivant vos propres choix, éditeur personnel, fontes des caractères
et réglage des couleurs.
Manipulation et interaction des données.
Les nouveaux types de données: Varchar,
Varbinary et Blob améliorent l'interaction avec les serveurs de type
SQL.
Améliorations et extensions du langage SQL - plus de
possibilités avec les fonctions SELECT, INSERT, UPDATE et DELETE.
CAST( ) - nouvelle fonction permettant la conversion
entre divers types de données.
Nouvel Index Binaire - support du nouveau type
d'index pour l'amélioration des performances lors de l'utilisation du TAG
DELETED.
Adaptateur XML - amélioration du support des boucles
hiérarchiques imbriquées XML et XSD
Nouveautés de l'Interface Utilisateur Final
Ancrages des formulaires: permet un fonctionnement
professionnel des applications Windows
L'
Ancrage vous permet de contrôler les mouvements des objets d'un formulaire lors
du redimensionnent de celui-ci.
Boutons : meilleur contrôle de la position de
l'image sur un bouton avec alignement du texte.
Cases à cocher : nouveau support de
justification pour les labels des cases à cocher.
Etiquettes : support de la rotation du texte
pour les messages des contrôles labels.
Formes géométriques et Lignes : possibilité de
création de polygones et de courbes de Bézier.
Listes et Combos : utilisation des collections
(séries) comme source de ligne.
Images : jointure images vers les images non
orientées fichier.
Extension de la productivité du développeur
Page de propriétés : supporte des nouvelles
options de fontes et d'affichage des couleurs, caractères étendus et expressions
longues.
Extension des données : facilité de spécifier
des propriétés personnelles dans l'éditeur et gestion des propriétés favorites.
Compilation en tâche de fond : visualisation des
syntaxes incorrectes lors de la frappe des lignes de codes.
Panneau de contrôle : améliorations et nouveaux
onglets comme l'explorateur de données.
Extension des capacités système : plus de limite
pour les tableaux, la taille des procédures et les niveaux d'imbrications.
Manipulation des chaînes fortement améliorées.
ICASE( ) : nouvelle fonction similaire au DO
CASE sur une ligne.
Facilité de construction de tout types de base de
données.
Construction et déploiement d'applications locales ou
distantes pour les tablettes PC Windows.
Création et accès aux composants COM et services
compatible Web XML par l'utilisation de la technologie .NET.
Visual FoxPro 9.0 vous permet de construire
des solutions complètes, depuis les formulaires d'acquisitions jusqu’aux sorties
de rapports complexes.
Nouveautés du système de Rapport
La
nouvelle architecture de sortie a été étendue et permet le contrôle précis des
rapports et de leurs formats.
Support pour les bandes de détails multiples pour des
données utilisant des relations un à plusieurs.
Les rapports supportent le XML, le HTML, les formats
d'images et la personnalisation de la fenêtre d’aperçu multipages.
La
fenêtre d’aperçu offre une amélioration de la qualité d'affichage et le support
pour pages multiples.
Une nouvelle classe "ReportListener" fournit un accès
lors de la génération du rapport aux évènement lors de l'exécution vous
permettant de créer tous types de sorties.
Enchaînement des rapports pour des impressions plus
complexes.
Puissants outils de développements personnalisables.
Compatibilités avec les moteurs de rapports des
versions précédentes permettant la récupération des anciennes applications.
Création de solutions compatibles .NET avec
hiérarchisation XML, services web XML.
Echange des données avec les serveurs SQL via un
langage SQL aux capacités améliorées et un support des nouveaux types de
données.
International : support
amélioré pour l'utilisation des jeux de caractères internationaux dans les
applications.
Les pages suivantes
décrivent les améliorations de la version 8 depuis la 6 et la 7 pour la première
partie, puis de la version 9 depuis la 8.
L’ Annexe A1 décrit les
améliorations du moteur d’états (Reports).
De la version 6 à la version
8
BindEvents(), RaiseEvents() et
Aevents()
L’utilisation des fonctions BindEvents(), RaiseEvents()
et Aevents() permet de lier les méthodes aux évènements VFP, la
commande suivante lancera la méthode utilisateur
« ScreenRightClick » d’un formulaire si un click droit de la
souris est activé dans la fenêtre active.
BINDEVENT(_SCREEN,"rightclick",Thisform,"screenrightclick")
RAISEEVENT( oEventSource, cEvent [, eParm1...] )
Déclenche un
évènement depuis une méthode utilisateur
VFP déclenche
automatiquement les évènements liés par BINDEVENT()
AEVENT(
ArrayName [,0|1| oEventObject ])
Permet de récupérer
le numéro d’un évènement lié.
Contrôle de MSN
Messenger
Il est possible d’automatiser
l’envoi de messages, courriels et fichiers, par l’utilisation des API de MSN
ThisForm.oMessenger
= CREATEOBJECT("Messenger.UIAutomation.1")
et
de Windows Scripting
Host.
ThisForm.oWsh =
CREATEOBJECT("wscript.Shell")
Création de fenêtres de formes
irrégulières

Il est possible de créer sous Windows 2000 et Windows XP des formulaires de formes
irrégulières.
Affichage des grilles : Grid
Highlighting, Auto Fit et Image Headers
De nouvelles propriétés améliorent
le comportement d’affichage des objets Grid, en particulier les
options de mise en surbrillance, l’ ajustement automatique de la largeur des
colonnes, et l’utilisation d’image dans les
Headers.

Charger
et générer de l’XML avec la classe XMLAdapter
La classe XMLAdapter a la capacité
de générer de l’ XML depuis des curseurs divers, et aussi de recréer des
curseurs depuis l’ XML, tels des jeux de données ADO.NET datasets.
Créer
un curseur depuis un jeu de données XML
Les classes
CursorAdapter et XMLAdapter classes permettent de
créer des curseurs depuis un XML
dataset et de lier ces données aux contrôles d’un formulaire.
Thisform.AddProperty('oXMLAdapter',CREATEOBJECT('XMLAdapter'))
Dans
l’ Init du formulaire.
Pour
organiser les propriétés du CursorAdapter, un click droit dans le
Dataenvironment accède à l’assistant (Builder), il permet
d’obtenir le code ci-dessous :
** Propriétés
générées par l’assistant CursorAdapter**
WITH
Thisform.DataEnvironment.Cursor1
.Alias
=
"customers"
.Allowdelete
=
.T.
.Allowinsert
=
.T.
.Allowupdate
=
.T.
.Baseclass
=
"Cursoradapter"
.Batchupdatecount
=
1
.Buffermodeoverride
=
5
.Class
=
"Cursoradapter"
.Comparememo
=
.T.
.Cursorschema
=
"CUSTOMERID C(10), COMPANYNAME C(80), ADDRESS C(120), CONTACTNAME C(60),
CONTACTTITLE C(60), COUNTRY C(30), FAX C(48), PHONE C(48), POSTALCODE C(20),
REGION C(30)"
.Cursorstatus
=
1
.Datasourcetype
=
"XML"
.Fetchmemo
=
.T.
.Fetchsize
=
100
.Maxrecords
=
-1
.Name
=
"Cursor1"
.Parent=
"(Object)"
.Selectcmd
=
"Thisform.oXMLAdapter.Tables.Item(1)"
.Sendupdates
=
.T.
.Updatetype
=
1
.Usememosize
=
255
.Usetransactions
=
.T.
.Wheretype
=
3
ENDWITH
Gérer
l’accès aux données par les
CursorAdapters
Grace au
CursorAdapters Il est désormais possible d’accéder à des curseurs
provenant de différentes types de sources de données : Native, ODBC, et
ADO, vers par exemple une base de données SQL-SERVER
Member
classes
VFP 8.0 permet de spécifier
les Member
Classes pour les objets conteneurs Pageframes,
Optiongroups, Commandgroups, Grids, et Columns. Il est
aussi possible de sous classer page, optionbutton, header,
et column. Ces manipulations peuvent être faites par code ou par le
générateur de classes et s’utiliser au travers d’un .PRG ou d’un
.VCX.
SCATTER
NAME... ADDITIVE
La commande GATHER NAME a été améliorée et SCATTER NAME ... ADDITIVE a été ajoutée. La
clause ADDITIVE permet la mise à jour d’un objet existant avec les valeurs de
l’enregistrement courant.
*-- La
commande suivante dans l’évènement Init récupère les valeurs des
propriétés d’un formulaire depuis l’enregistrement d’un
fichier.
SCATTER NAME
thisform ADDITIVE
*-- La
commande suivante dans le Destroy stocke les valeurs des propriétés en
sortie d’un formulaire dans l’enregistrement cible d’une table préalablement
ouverte.
GATHER
NAME THISFORM
Gestion
d’erreurs structurée
Les instructions TRY...CATCH...FINALLY peuvent être utilisées pour la gestion
des exceptions. Cela permet l’exécution d’un code spécifique si des exceptions
particulières surviennent dans une une application.
System
Tray Icon
La classe Systray offre la
possibilité d’utiliser des icones dans la zone de notification de la barre de
tâches de Windows, communément appelée System Tray, elle supporte les
évènements Souris, Les Bulles, Les Raccourcis Menu de VFP etc tels les exemples
ci-dessous :


COMARRAY()
La fonction COMARRAY() permet le passage par référence d’un
tableau de typage fort à un serveur COM qui exécute les calculs et modifie le
contenu du tableau.
Le Client utilise la nouvelle
syntaxe DIMENSION... AS pour déclarer le
tableau de typage fort.
Un serveur COM écrit en VFP montre
un exemple d’une nouvelle interface de déclaration de syntaxe pour indiquer
« ByRef typed arrays » dans la librairie COM
générée.
VFP/VB.NET
XML Web Service
Un exemple fourni dans
Samples/Solutions montre différentes architectures utilisant XML Web Services
pour l’échange de jeu de données entre une client VFP client et un niveau
intermédiaire écrit VFP et VB.NET.
Windows XP themes
support
Visual FoxPro supporte les thèmes
XP à trois différents niveaux :
1) Niveau Application via SYS(2700) et la propriété _SCREEN.Themes
2) Niveau Formulaire via la
propriété Themes
3) Niveau Contrôle
Certaines propriétés (BackColor) ne
prendront effet que si les thèmes sont désactivés.
De la version 8 à la version
9
Anchors Away « Jetez
l’ancre »
La nouvelle propriété Anchor permet de
choisir à quel coté un contrôle visuel est attaché quand le formulaire est
redimensionné.
BINTOC binary
conversion
BINTOC() et CTOBIN() peuvent être utilisés lors de la
conversion entre données numériques et chaînes binaires. Ceci est souvent utile
avec des Structures API Win32.

Liaison aux évènements des
Messages Windows
La fonction BINDEVENT() peut être utilisée pour assurer une
liaison avec les évènements des Messages Windows, tels passage d’une application
à une autre, insertion de média, tentatives de fermeture ou mise en stan-by du
PC etc, par exemple :
Coverage Profiler
Un ajout très utile à l’
utilitaire Coverage Profiler permet d’identifier les parties de
code qui pourraient être susceptibles d’amélioration pour un gain de
performance. Il permet de visualiser, trier, et rechercher les lignes de code
sur le temps d’exécution : DO (_Coverage)

Positionnement des Images et
captions des contrôles

Les propriétés Picture
PictureMargin, PicturePosition,
PictureSpacing, SpecialEffect, Style, Themes, WordWrap, déterminent le positionnement et
l’orientation des images et captions pour les boutons de commande et les cases à
cocher (CheckBox)
Dockable Image
Viewer

L’exemple ci-contre montre un
Formulaire dockable contenant un PageFrame invisible. La page active est
affichée par l’évènement AfterDock quand le formulaire est
« docked » et
« undocked ».
Une grille contenue dans
l’une des pages permet la gestion éventuelle des images stockées dans un
champ
« Blob »

Fox
Media Player

Le contrôle ActiveX Windows Media
Player peut être installé dans
votre interface Visual FoxPro. Les propriétés d’Ancrage peuvent aussi être
utilisées pour redimensionner l’écran, et son contenu.
Polygones et formes irrégulières
(Shape & Line)
La nouvelle propriété Polypoints
autorise la création de polygones et de lignes de formes irrégulières avec les contrôles Shape et
Line.
Polypoints contient le nom d’un
tableau (Array) permettant d’adresser les points d’un polygone (En pourcentages)
Une syntaxe comme celle-ci
Propriété de Shp4 :
PolyPoints=This.aPoly
Code
Init de Shp4 THIS.AddProperty("aPoly[1,1]")
DIMENSION
THIS.aPoly[3,2]
THIS.aPoly[1,1]=
0
THIS.aPoly[1,2]=
100
THIS.aPoly[2,2]=
0
THIS.aPoly[3,1]=
100
THIS.aPoly[3,2]=
100
Permet de définir l’objet shape
SHP4
SHP
4

Foxcode menu
scripts
La création de scripts spécifiques
dans la table Foxcode de l’ IntelliSense procure un possibilité de
manipulation personnalisée des menus contextuels et natifs, par
exemple :
LPARAMETERS
toParameter
LOCAL
lnSelect, lcCode, llReturn, lScriptHandled
TRY
* First try
FoxCode lookup for Type="M" records
lnSelect = SELECT()
SELECT 0
USE (_FOXCODE) AGAIN SHARE ORDER
1
IF
SEEK('M' +
PADR(UPPER(toParameter.MenuItem), LEN(ABBREV)))
lcCode = DATA
ENDIF
USE
SELECT (lnSelect)
IF NOT EMPTY(lcCode)
llReturn = EXECSCRIPT(lcCode,
toParameter)
lScriptHandled=.T.
ENDIF
* Handle by
passing to external routine as specified in Tip field
IF
!lScriptHandled
lcProgram
= ALLTRIM(toParameter.Tip)
IF FILE(lcProgram)
DO (lcProgram) WITH toParameter,llReturn
ENDIF
ENDIF
* Custom script
successful so let's disable native behavior
IF llReturn
toParameter.ValueType = 'V'
ENDIF
CATCH
ENDTRY
RETURN
llReturn
Utilitaire de recherche des Memo
corrompus
Un utilitaire permet l’analyse des
dossiers (et sous répertoires) pour repérer les champs Memo corrompus des
fichiers Visual FoxPro.
Ces améliorations sont
illustrées dans les exemples proposés dans le répertoire : \Samples\Solution de Visual FoxPro .