Cependant, la transition vers une programmation orientée objet n’est pas totalement terminée: les rapports et les menus ont peu évolué depuis les versions 2.x et les possibilités du Database container restent un peu limitées. Mais une version 6.0 est déjà en route et apportera certainement son lots de nouveautés dans le domaine. En attendant, je ne puis que conseiller à tous ceux qui ont la chance de travailler pour des clients équipés de matériel 32-bit de passer à Visual FoxPro 5.0 le plus rapidement possible.
Microsoft semble enfin décidé à donner plus de visibilité au produit, puisque Visual FoxPro (dans sa version 5.0a) fait partie aux côtés de Visual C++ et de Visual Basic 5.0 de la nouvelle suite Visual Studio, lancée en mars dernier. Les demandes en développeurs VFP vont se multiplier…
Dans les lignes qui suivent, nous allons passer en revue de manière systématique les améliorations apportées au produit (version 5.0a, US) par rapport à la version 3.0b.
Outils de développement améliorés
Gestionnaire de projets
Editeur de texte
Pour rechercher
Taper
Tab
CHR(09)
\T
Nouvelle ligne
CHR(10)
\N
Retour chariot
CHR(13)
\R
Contre Slash
CHR(92)
\\
Un débogueur phénoménal
Avant Visual FoxPro 5.0, les développeurs n’avaient à leur disposition qu’une fenêtre permettant de tracer le code en cours d’exécution et une autre pour le suivi des variables. Visual FoxPro 5.0 introduit un débogueur entièrement neuf, très proche de celui que Microsoft fournit avec Visual C++.
Il est composé de 5 panneaux: Trace, Watch, Locals, Call Stack et Output. Il offre de nombreuses fonctions avancées, comme celle de sauvegarder une session de débogage (fichiers *.DBG) pour un usage ultérieur, la persistance des propriétés entre deux sessions, le suivi des événements ou encore le support de points d’interruption complexes.
Chaque fenêtre du débogueur dispose d’une série d’options que l’on peut atteindre d’un clic droit de la souris, comme par exemple la sélection d’une police de caractères.
Vous pouvez faire apparaître le débogueur de deux façons: "Debug Frame" ou "FoxPro Frame". Vous y accédez par Tools - Options - Debug. En mode "Debug Frame", le débogueur tourne dans son propre environnement, indépendant de VFP. En mode "FoxPro Frame", toutes les fenêtres apparaissent dans le bureau de VFP et vous pouvez faire référence à chacune d’elles individuellement, avec Tools - Watch Window ou par les commandes
Nouveaux menus contextuels
Des menus contextuels sont disponibles partout au départ d’un clic droit de la souris.
Nouvel explorateur de classes
"Copier-coller" entre les fenêtres de l’explorateur de classes est en fait un "copier-déplacer". Pour copier, enfoncer la touche Shift pendant l’opération.
Si vous renommez ou déplacez une classe, tous les fichiers VCX/SCX disponibles dans l’explorateur de classes sont automatiquement remis à jour.
Il est maintenant possible d’ouvrir un projet complet, ce qui a pour effet de charger toutes les librairies VCX/SCX du projet. Il est ainsi plus facile et plus sûr de remettre toutes les références à jour.
Amélioration à la gestion des données
Database designer
Table Designer
View Designer
Améliorations au langage SQL
Nouvelle syntaxe:
SELECT Presence.* ,;
codejour.cGtID ;
FROM PROSAL!Presence Inner join PROSAL!codejour ;
ON Presence.cCodeJourId = codejour.cId ;
WHERE Presence.cWorkerId = ?vp_cWorkerId ;
AND Presence.cJeuId = ?vp_cJeuId ;
AND SUBSTR(DTOS(Presence.dDate), 1, 4) = ?vp_cYear ;
AND SUBSTR(DTOS(Presence.dDate), 5, 2) = ?vp_cMonth
ORDER BY Presence.dDate
Ancienne syntaxe:
FROM PROSAL!Presence , PROSAL!codejour ;
WHERE Presence.cCodeJourId = codejour.cId ;
Presence.cWorkerId = ?vp_cWorkerId ;
La nouvelle syntaxe est plus performante et sera utlisée de préférence à l’ancienne.
Inner join: un joint dans lequel les enregistrements de deux tables sont combinés et ajoutés aux résultats de la requête seulement si les valeurs des champs joints rencontrent une conditions spécifiée. Ainsi, le joint par défaut du Query Designer est un "inner join" qui ne sélectionne que les enregistrements des deux tables dont les champs joints sont égaux.
Outer join: une association entre des tables réunies dans une requête qui permet de sélectionner des lignes qui rencontrent les conditions de jointure plus d’autres qui ne recontrent pas cette condition. Vous pouvez sélectionner toutes les lignes d’une table et celles d’une autre table qui rencontrent les critères de jointure; ce sera selon le cas un "Left Outer Join" ou un "Right Outer Join. Si vous sélectionnez toutes les lignes de deux tables, quelle que soit la condition de jointure, vous avez réalisé un "Full Outer Join".
Left outer join: spécifie que les résultats de la requête comprennent tous les champs de la table située à gauche du mot-clé "JOIN" et seulement ceux de la table de droite qui rencontrent les conditions du joint. Le mot-clé "OUTER" est optionnel.
Right outer join: spécifie que les résultats de la requête comprennent tous les champs de la table située à droite du mot-clé "JOIN" et seulement ceux de la table de gauche qui rencontrent les conditions du joint. Le mot-clé "OUTER" est optionnel.
Full outer join: specifie que les résultats de la requête contiennent les lignes des deux tables, quelles que soient la condition de jointure. Le mot-clé "OUTER" est optionnel.
Vues Offline
Il y a des moments où vous pourriez souhaiter voir, collecter ou modifier des données indépendamment d’une connexion au serveur. En utilisant la nouvelle fonctionnalité "offline" de Visual FoxPro, vous pouvez utiliser une vue pour vous connecter à la base de données (que ce soit une base de données FoxPro ou un serveur par l’intermédiaire d’une connexion ODBC) et vous créer un jeu de données à utiliser "offline", c’est-à-dire sans connexion au serveur. Vous pouvez utiliser cette vue dans votre application. Quand vous avez terminé, il suffit de reconnecter la vue au serveur pour mettre celui-ci à jour.
Quelques exemples d’utilisation de vues "offline":
La bonne nouvelle avec les vues "offline" c’est qu’elles ne requièrent que très peu d’intervention de la part du développeur. Il suffit de pointer l’application cliente vers la vue "offline" plutôt que la vue "online". Toutes les données restent accessibles de la même façon.
Une vue "offline" se crée avec la fonction
En un mot, les vues "offline" de Visual FoxPro 5.0 facilité la distribution des données aux utilisateurs qui en ont besoin, avec une performance accrue et des coûts de télécommunication réduits..
Changements divers au niveau de la base de données
Formulaires
Form Designer
IntelliDrop
Formulaires SDI
Propriété Dataenvironment Openviews
Création / Lien entre les Objets d'un formulaire
Menus
Menus contextuels
Menus Top-level
SYS(1500)
Insert Bar
Contrôles – Nouvelles Propriétés et Méthodes
Propriétés et méthodes ajoutées à plusieurs contrôles
Grids
Combobox
Textbox
Editbox
Listbox
Spinner
Commandbutton
Page Frame
Rapports
Preview/Print
REPORT FORM … RANGE nStartpage, nEndpage
Contrôles ActiveX
Un contrôle ActiveX, tout comme un contrôle VFP natif, est un objet que l'on peut placer sur un formulaire pour permettre la saisie de données, ou améliorer l'interaction avec l'utilisateur ; tout comme un contrôle VFP natif, il dispose de propriétés et de méthodes. Les contrôles ActiveX sont contenus dans des fichiers d'extension .OCX.
Microsoft en propose une série avec VFP; il en existe de nombreux sur le marché.
Contrôles inclus avec VFP:
COMCTL32.OCX
Contrôles ImageList, ListView, ProgressBar, Slider, StatusBar, TabStrip, Toolbar et TreeView.
Un contrôle ImageList contient une collection d'objets ListImage dont chacun est accessible par un index ou une clé. Ce contrôle ne doit pas être utilisé seul, mais plutôt comme un réservoir d'images centralisé où les autres contrôles vont se fournir.
COMDLG32.OCX
Common Dialogs Control: de loin supérieur au contrôle natif de VFP appelé par GETFILE(); de plus il s'exprime dans la langue de votre OS, donc probablement le français
DBLIST32.OCX
Contrôles MSDataCombo et MSDataList
FOXHWND.OCX
Le contrôle Visual FoxPro HWND fournit une fenêtre dans laquelle d'autres contrôles ActiveX, tels le contrôle Microsoft Multimedia ActiveX peuvent montrer des images. Il peut aussi être utilisé pour afficher des icônes ou des fichiers au format *.WMF.
FOXTLIB.OCX
Le contrôle Visual FoxPro Foxtlib permet d'accéder aux informations contenues dans un fichier TLB (Type Library). Ces fichiers sont utilisés pour stocker les informations de classe (propriétés, méthodes, etc.) de serveurs OLE que vous pouvez créer en VFP et Visual Basic. Ces librairies sont accessibles aux Objects Browsers (par exemple le Class Browser de VFP) et sont utilisées dans d'autres applications telles que Visual Basic ou Visual C++ pour permettre de référencer des objets et de les compiler.
GRID32.OCX
Une grille ActiveX
MCI32.OCX
Contrôle Microsoft Multimedia
MSACAL70.OCX
Contrôle Calendrier (vient de Access 7.0)
MSCOMM32.OCX
Contrôle Microsoft Comm
MSMAPI32.OCX
Contrôles Microsoft MAPI Message et Microsoft MAPI Session
MSOUTL32.OCX
Contrôle Outline
PICCLP32.OCX
Le contrôle PicClip permet de sélectionner une surface déterminée d'un fichier bitmap et de l'afficher sur un formulaire ou un contrôle. Invisible au moment où le formulaire s'exécute, le contrôle PicClip est un excellent mécanisme de stockage de ressources de type image. Plutôt que d'utiliser une série de bitmaps ou d'icônes, il est plus efficace de créer un seul bitmap contenant toutes les images requises par l'application et de faire appel au contrôle PicClip pour sélectionner la région du bitmap source qui contient l'icône souhaitée.
RICHTX32.OCX
Le contrôle Rich Textbox donne la possibilité de changer la police, la taille, et d'autres propriétés d'un texte et de le sauvegarde en format RTF. Il comporte cependant certaines limitations, comme par exemple l'absence de support pour la touche TAB.
SYSINFO.OCX
Contrôle SysInfo
TABCTL32.OCX
Contrôle SSTab (Page frames de Sheridan Software)
THREED32.OCX
Le bouton de commande 3D émule le bouton standard Visual Basic. Par rapport au bouton standard de VFP, on peut ajuster ses propriétés 3D, on peut afficher du texte 3D et un bitmap (ou une icône) simultanément. Le tout donne un look comparable à ce que l'on pouvait obtenir avec le driver 3D de GenscrnX en FoxPro 2.6.
Le contrôle 3D panel est utilisé pour donner un aspect 3D à du texte ou fournir un arrière-plan 3D sur lequel on vient placer d'autres contrôles. Améliore l'aspect des listboxes, comboboxes, etc…
Simple data binding
AutoVerbMenu
AutoYield / DOEVENTS
LOADPICTURE(), SAVEPICTURE()
CREATEBINARY()
VFP en tant que serveur OLE
VFP5.DLL
Cette .DLL, située dans le répertoire VFP expose VFP en tant que serveur OLE à d'autres applications utilisant des appels OLE, même si VFP ne tourne pas. Il fournit les méthodes suivantes:
Construire une DLL Serveur d'Automation OLE
L'objet VFP Application
Chaque instance de VFP, y compris les DLL's d'automation créées en VFP contiennent un objet "application". Accessible par la variable système _VFP, il donne à l'application une possibilité de se référencer elle-même, quelle que soit la manière dont elle ait été lancée. Cet objet dispose d'un certain nombre de propriétés et de méthodes qui peuvent être appelées de manière interne, ou par un contrôle OLE.
Aide / Documentation
Documentation en ligne
Le jeu complet de manuels de VFP (70 Megabytes environ) est maintenant inclus dans l'aide. On y trouve de nombreuses images, des liens vers des applications démo et des clips audio. Elle peut être laissée sur le CD. Malheureusement, le moteur n'est pas VFP et l'accès est parfois un peu lent…
Aide de type "Qu'est-ce que c'est?"
VFP supporte le nouveau style d'aide "Qu'est-ce que c'est?" de Windows 95 et NT 4.0. Quand cette forme d'aide est activée, le pointeur de la souris se transforme en une flèche suivie d'un point d'interrogation et l'on peut cliquer sur les différents objets pour obtenir de l'aide. Escape restaure le curseur à sa fonction habituelle. Cinq propriétés et méthodes ont été ajoutées pour supporter ce type d'aide. L'aide Windows traditionnelle faisant appel aux HelpContextId est toujours présente, et il est facile de passer d'une formule à l'autre.
Exemples
VFP 5.0 est fourni avec de nouvelles applications. Le "Solutions sample" fournit des dizaines d'exemples sur la manière d'utiliser des contrôles et des commandes. Ils sont affichés en mode plan; on peut choisir de les exécuter ou de visualiser le code qui se trouve derrière. On trouvera en plus un exemple Client/Serveur et trois exemples de Serveurs OLE.
Assistants
Un certain nombre d'additions et d'améliorations ont été apportées aux assistants fournis avec VFP.
Accès au Web
Le menu d'aide comporte un nouveau sous menu, "Microsoft on the Web". Chaque option de ce menu va lancer votre browser Internet et trouver la page ad hoc sur le site de Microsoft.
Performances meilleures
Application 32-bit
VFP 5.0 est une application exclusivement 32-bit pouvant tourner sur Windows 95 ou NT 4.0. Le support pour Windows 3.11 via Win32s a été enlevé du produit.
Plus rapide
Microsoft estime que VFP 5.0 est de 25 à 30% plus rapide que 3.0. Les joints entre tables multiples et les manipulations de tableaux montrent souvent un accroissement de performance supérieur.
Moins gourmand en mémoire
Les spécifications minimales pour Windows 95 sont un 486/50 avec 8 MB Ram; pour NT, même machine, équipée de 16 MB Ram. L'expérience montre que 12 MB sont tout à fait acceptables sous Windows 95. Contrairement à la version précédente, VFP se comporte correctement dans des environnements un peu justes.
Disque dur:
Nombre illimité de fichiers
Il n'y a plus de limite au nombre de tables ouvertes, si ce n'est celle imposée par le système.
Disparition de FILER et du PUZZLE
Filer et le Puzzle ont été retirés du produit pour l'alléger au maximum. Toutefois, un nouveau filer est disponible sur le site Web de Microsoft sous forme de .DLL.
Autres nouveautés diverses
Propriétés et méthodes cachées (hidden)
Contrairement aux propriétés ou méthodes protégées, celles-ci ne sont pas accessibles par d'autres objets ni par des sous-classes.
DIRECTORY()
Un répertoire existe-t-il?
CD
BINTOC() et CTOBIN()
Convertit des valeurs d'integer en chaîne de caractères binaires et vice-versa. Utile dans la création d'index complexes comportant des champs de type integer. Il ne s'agit pas d'une notation hexadécimale, mais bien plutôt des bytes dans l'ordre haut Ä bas. Ainsi
BINTOC( ) peut être utilisé pour réduire la taille des index sur des champs numériques contenant des valeurs integer. Prenons dans une table stock un champ numérique iPartCode pouvant contenir un integer de 1 à 127 correspondant à un code de classification. BINTOC() permet de convertir la valeur du champ numérique en une représentation à un seul caractère. Ainsi la commande ci-après crée un index sur une clé à un caractère:
INDEX ON BINTOC(nPartCode,1) TAG PartCode
Notation Hexadécimale
La notation hexadécimale peut être utilisée directement dans le code en utilisant le préfixe "0x".
Exemple:
FOR EACH <var> IN <group> … <commands> … ENDFOR
Nouvelle construction pour l'exécution d'un jeu de commandes pour chaque élément dans un tableau VFP, une collection, un tableau OLE ou une collection OLE.
SET CENTURY TO cc ROLLOVER yy
Voici une nouvelle commande pour régler le problème du passage au prochaine millénaire. FoxPro, depuis sa version 1.0 a toujours stocké les dates sur 8 caractères. Pas de souci à se faire sur l'intégrité de nos données! Cependant, nous avons pour la plupart utilisé
Notez que dans le scénario précédent, ? {31/12/95} retourne 31/12/2095. Donc, si vous avez un mélange de dates récentes et futures, vous choisirez un rollover, comme 47 par exemple (97-50). Si vous savez que vous ne devrez aller que 10 ans dans le futur, mais souhaitez avoir accès à des dates du passé, vous choisirez un ROLLOVER de 07 (97-90).
Notez que dans le scénario précédent,
ISRLOCKED(), ISFLOCKED()
Test pour déterminer si un enregistrement ou une table est bloqué.
SET NULLDISPLAY TO xxx
Le texte spécifié est affiché au lieu de ".NULL." pour les valeurs nulles.
Nouveaux événements pour la souris
CLEAR RESOURCES
VFP cache les bitmaps, les icônes et parfois les polices. En VFP 3.0, si votre application comportait deux bitmaps (ou icônes ou polices) de même nom dans des répertoires différents, le premier bitmap aurait pu se retrouver utilisé par erreur en lieu et place du second. Cette nouvelle commande oblige les bitmaps, icônes et polices à être rechargés en mémoire de façon à éviter toute confusion.
Support des Jokers
La plupart des commandes émulées du DOS, telles que ERASE, RENAME et COPY acceptent maintenant des jokers.
Syntaxe d'appel des fonctions
Il n'est plus nécessaire de placer le signe "=" devant le nom d'une fonction pour l'appeler.
ERASE .. RECYCLE
Par défaut, VFP ne place un fichier dans la corbeille quand il le supprime.
SCREEN = OFF
Placée dans CONFIG.FPW, cette directive cache le bureau de VFP au démarrage. On peut le rendre visible par la suite avec
Si
SET CLASSLIB TO xxx IN [APP or EXE]
SET CLASSLIB
Nouvelles options de démarrage pour VFP.EXE
Imprimante Windows par défaut
? SET("PRINTER", 2)
Nouveau format du code compilé
Le code compilé à changé de format par rapport à 3.0. VFP recompile automatiquement les formulaires 3.0, les librairies, etc., au moment de les ouvrir en 5.0
COMPILE [CLASSLIB | LABEL | REPORT]
Ces trois nouvelles variations sur la commande
La fonction GetFileVersion() de Foxtools
Cette nouvelle fonction de Foxtools retourne l'information disponible sur un .EXE ou une .DLL avec numéro de version, nom du produit, de la société et copyright.
Obtenir toutes vos commandes Set dans la fenêtre de commande
Conversions
De projets 3.0b vers 5.0
Voici la façon dont les choses se passent:
De projets 5.0 vers 3.0b
La conversion est possible à condition de ne pas utiliser de syntaxe nouvelle ou de nouvelles propriétés ou méthodes non supportées en 3.0b…
En général il suffit d'utiliser COMPILE FORM pour les librairies de classes et les formulaires et COMPILE DATABASE pour votre base de données.
Les projets, étiquettes et rapports ne sont pas convertibles à l'ancien format. Mieux vaut en conserver une copie…