|
Vue d'ensemble de la version dBASEPlus 2.70
dBASE Plus 2.7
(Build 2160) Fonctionnalités et corrections 2 mars 2011 Généralités
dBASE Plus 2.70 respecte les règles du
Microsoft's User Account Control (UAC) ce qui permet à dBASE et ses
applications de tirer profit des améliorations de sécurité apportées par ses règles.
dBASE Plus 2,70 contient un certain nombre de nouvelles
fonctionnalités pour vous aider à travailler avec des droits d'utilisateur standard et
simplifier la mise à niveau de vos applications pour qu'elles adhérent ainsi à l'UAC.
Les règles de l'UAC de Windows sont destinées à : - Protéger les fichiers des programmes installés pour éviter
qu'ils ne soient modifiés ou endommagés par les utilisateurs ou les programmes qui ne
devraient pas y avoir accès. - Conserver les fichiers de chaque utilisateur, les paramètres de
configuration, etc... séparément des autres utilisateurs, sauf si des fichiers ou
réglages partagés sont nécessaires. Par défaut, seuls les utilisateurs avec les privilèges
d'administrateur ont accès aux paramètres
généraux de la machine. Windows 7 et Windows Vista mettent en uvre ces règles en
limitant soigneusement les autorisations par défaut pour les dossiers de l'arborescence
du dossier Program Files, l'arborescence des dossiers Program Data, l'arborescence des
dossiers Windows, et l'arborescence des dossiers Users (utilisateurs). Les autorisations aux clés de
registre sont également soigneusement limitées afin que les utilisateurs standards ne
soient pas autorisés à modifier les paramètres qui peuvent affecter d'autres
utilisateurs. Afin de respecter les règles de l'UAC, un programme doit: - positionner le code exécutable dans l'arborescence du dossier
Program Files et NE PAS tenter de modifier ou de créer de nouveaux fichiers dans cette
arborescence de dossiers lors de l'exécution du programme. (Les utilisateurs standard ont
généralement les droits pour lire et exécuter des fichiers dans cette arborescence.
Toutefois, les programmes peuvent être configurés pour exiger des privilèges
d'administrateur qui empêcherait les utilisateurs standard de les exécuter). - installer les fichiers de données et configuration partagés dans
l'arborescence des dossiers ProgramData - mais NE PAS tenter de modifier ou créer de
nouveaux fichiers dans cette arborescence de dossiers lors de l'exécution du programme.
(Par défaut, les utilisateurs standard ont un accès en lecture seule à cette
arborescence de dossiers). - installer les fichiers originaux requis par chaque utilisateur dans
l'arborescence des dossiers ProgramData (à copier sur l'arborescence de dossier privée
de chaque utilisateur). - Mettre en place une arborescence de dossiers privés dans
l'arborescence des dossiers utilisateurs pour chaque utilisateur lorsqu'un utilisateur
exécute pour la première fois le programme, de sorte que chaque utilisateur puisse
modifier ses fichiers privés comme il le souhaite sans interférer avec d'autres
utilisateurs.
Comment dBASE Plus 2.70 applique-t-il les règles de l'UAC ? Installation Lors de l'installation sur Windows 7 ou Vista, dBASE installe des
dossiers contenant un fichier de configuration par défaut (plus.ini), des exemples de
code, les dossiers de fichiers d'application, et des outils de conversion dans le dossier
C:\ProgramData\dBASE\Plus. (Notez que sous Windows XP, la valeur par défaut pour
2.70 sera de poursuivre l'installation de dBASE Plus comme dans les versions
précédentes). En outre, lors de l'installation du Borland Database Engine (BDE) il
sera configuré de façon légèrement différente que dans le passé pour placer son
fichier de configuration dans l'arborescence ProgramData et écrire les paramètres NET
DIR du BDE afin qu'ils pointent sur ce même dossier de ProgramData. Démarrage de dBASE Plus Lorsque dBASE Plus 2,70 est démarré, il veille à ce que
l'utilisateur dispose bien d'un dossier dBASE personnel dans son arborescence
d'utilisateur privé pour conserver ses données de configuration spécifique (en
plus.ini), leurs copies privées des fichiers d'exemples et d'utilitaires de conversion et
tous les fichiers temporaires créés lors de l'exécution dBASE. En outre, la première
fois que dBASE est lancé par un utilisateur, il sera exécuté un utilitaire de
configuration utilisateur qui installera les fichiers exemples et de conversion de
l'utilisateur, et qui générera tous les Source Alias et User BDE Alias par défaut. Aussi pendant le démarrage, dBase vérifie le fichier de
configuration plus.ini de l'utilisateur pour rechercher tout les User (utilisateur) Alias
BDE et s'il en trouve, il les charge dans la session BDE par défaut. Ils seront donc disponibles pour une utilisation
immédiate. Les Alias User BDE sont
une nouveauté dans dBASE Plus 2,70. Ils sont des alias BDE privé et sont stockées dans
le fichier plus.ini de chaque utilisateur. De nouveaux User Alias BDE peuvent être
créés via l'Assistant Database accessibles au sein de dQuery ou par code ou en modifiant
manuellement le fichier plus.ini. (Notez que les Alias BDE peuvent encore être créés
par le BDE Administrator pour une utilisation par tous les utilisateurs sur un même
ordinateur, mais les droits d'administrateur sont nécessaires pour les créer ou de les
supprimer). --- Fin de la traduction personnelle et reprise
(avec légères corrections) ci-dessous du texte figurant dans la documentation PlusUsersGuide28_FR.pdf à partir de la
page 49. --- Le runtime de dBASE Plus 2.70 effectuera la plupart des tâches de démarrage telles que décrites ci-dessus pour dBASE Plus IDE. Quand le runtime est lancé il sassurera que lutilisateur a un dossier spécifique à lapplication dans larborescence privée des dossiers de lutilisateur et sassurera quelles ont leur propre fichier spécifique à lapplication .ini (à moins que lapplication soit installée pour fonctionner sans .ini). Si des Noms dAlias de la BDE de lUtilisateur sont trouvés dans le fichier .ini de lutilisateur, ils seront chargés dans la session de la BDE par défaut pour les rendre disponibles par lapplication. En option, une application peut être réalisée pour effectuer des tâches supplémentaires pour installer un nouvel utilisateur. dBASE Plus 2.70 comporte un nouveau code exemple qui peut être modifié pour sadapter à la configuration privée dun utilisateur et aussi des dossiers ou une copie des dossiers depuis un sous-dossier de ProgramData pour ajouter les Noms dAlias de cet utilisateur dans la BDE. Nouvelles
Propriétés et Méthodes _app.useUACPaths - Vrai si dBASE Plus ou lapplication suit les règles dUAC, autrement à Faux. _app.iniFile - Contient le chemin entier de plus.ini ou du dossier .ini dune application. _app.currentUserPath - Chemin entier du dossier privé de dBASE ou de lapplication de lutilisateur. _app.allUsersPath - Chemin entier du dossier partagé où des fichiers ou des dossiers partagés peuvent être localisés par dBASE ou par une application. _app.roamingUsersPath - Chemin entier du chemin du dossier de lactuel utilisateur itinérant où vous pouvez choisir de stocker des données pour une application qui sera itinérante dun poste de travail à lautre si le réseau accueillant cette application est configuré pour soutenir les utilisateurs itinérants. méthode de session.addAlias () - pour ajouter des Noms DAlias Utilisateur à la BDE dans la session en cours de la BDE méthode de session.deleteAlias () - pour enlever un Nom DAlias Utilisateur à la BDE de la session en cours de la BDE (autre que la session par défaut) la commande BUILD inclut de nouvelles options pour spécifier le comportement par défaut des UAC et si besoin et où utiliser un fichier .ini loutil de conception dQuery installé avec dBASE Plus a été amélioré pour les Noms dAlias de lUtilisateur de la BDE et pour supporter et pour suivre les règles de lUAC. Dans le fichier qBDEMgr.cc, fourni avec le code des exemples installés avec dBASE Plus, il y a de nouvelles méthodes pour sauvegarder des Noms dAlias de lUtilisateur de la BDE dans _app.iniFile ou en les chargeant à partir de _app.iniFile. NOUVELLES
CARACTERISTIQUES _app Object Rappel Vista et Windows 7 sattendent à ce que les applications adhèrent à certaines conventions afin de faciliter que Windows empêche des fichiers programmes dêtre modifiés ou corrompus - par lerreur dun utilisateur ou par des utilisateurs malveillants ou par des virus.Les Programmes qui ne suivent pas ces conventions sont sujets à un examen plus minutieux par Windows avant que le programme soit lancé (par lintermédiaire des mécanismes de Windows User Access Controls (UAC)) et que Windows puisse déclencher des avertissements supplémentaires ou que Windows empêche le programme de sexécuter (selon les droits daccès de lutilisateur, les définitions actuelles de Windows et de la configuration desfichiers manifest pour lapplication). useUACPaths donne la capacité à dBASE Plus dadhérer aux conventions de Vista et de Windows 7 en ce qui concerne lemplacement où dBASE Plus crée et stocke son dossier .ini (contenant les définitions de lutilisateur), où dBASE demande au BDE de créer ses fichiers temporaires et le chemin par défaut pour la session au démarrage de dBASE. Pendant le démarrage, dBASE et les applications de dBASE détermineront es paramètres des useUACPaths (comme décrit ci-dessous) et puis vérifieront les useUACpaths pour déterminer lemplacement de différents fichiers dont plus.ini ou le dossier.ini dune application. Quand lindicateur est à Faux (False), dBASE et les applications dBASE définira les emplacements des fichiers .ini, des fichiers utilitaires de conversion, incluant des fichiers, divers fichiers exemple, et des fichiers temporaires dossiers dans des dossiers utilisés dans les versions antérieures de dBASE.Quand lindicateur est à vrai (True), dBASE définira les emplacements pour les fichiers .ini, des utilitaires de conversion, les fichiers Include, divers fichiers exemples, et les fichiers temporaires aux dossiers dans larborescence du dossier privé de lutilisateur actuel selon les exigences de lUAC de Windows. dBASE détermine le chemin de larborescence du dossier privé de lutilisateur en recherchant le chemins spécial du dossier Windows suivant : CSIDL_LOCAL_APPDATA et CSIDL_ APPDATA. Comment _app.useUACPaths est défini au démarrage de dBASE Plus (Plus.exe) ou d' une application .exe (Plusrun.exe) :
Pendant le démarrage de plus.exe : - il vérifie si lenregistrement HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\series1\useUACPaths existe et sil est positionné à y ou à Y Si oui, Défini _app.useUACPaths à True Autrement, Défini _app.useUACPaths à False - Ensuite, il vérifie si le commutateur -v, a été passé à plus.exe sur la ligne de commande, qui surchargerait le paramètre par défaut ci-dessus.Si oui, Si -v1 (ou - V1) a été trouvé sur la ligne de commande, Défini _app.useUACPaths à True Si - v0 (ou -V0) a été trouvé sur la ligne de commande, Défini _app.useUACPaths à False
En résumé pour plus.exe : Si une clé de registre useUACPaths existe pour dBASE Plus, elle définit le statut par défaut pour _app.useUACPaths. Si cette clé nexiste pas, _app.useUACPaths est défini à False. Si le commutateur -v est passé sur la ligne de commande, il surchargera le paramétrage par défaut ci-dessus.
Pendant le démarrage de plusrun.exe Il vérifie si la clé de regisre HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\series1\useUACPaths existe et si elle est positionnée sur y ou à Y.Si oui, Défini _app.useUACPaths à True Autrement, Défini _app.useUACPaths à False - Ensuite, il vérifie si, sur la ligne de commande, le commutateur -v a été passé à plus.exe (ou une application .exe) qui surchargerait le paramètre par défaut ci-dessus.Si oui, Si - v1 (ou - V1) a été trouvé sur la ligne de commande, Défini _app.useUACPaths à True Si - v0 (ou - V0) a été trouvé sur la ligne de commande, Défini _app.useUACPaths à False - Si aucun commutateur -v na été passé par lintermédiaire de la ligne de commande plusrun.exe examine dans le registre afin de sassurer quaucune clé spécifique à l'application ne définisse useUACPaths : HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\RuntimeApps\<app file name>\useUACPaths
Si cette clé est trouvée, elle surcharge la définition par défaut effectuée par lintermédiaire de la clé de registre dBASE\PLUS\series1 Si positionné à y ou à Y Défini _app.useUACPaths à True Si positionné à n ou à N Défini _app.useUACPaths à False - Si aucun commutateur -v na été passé par lintermédiaire de la ligne de commande ET si aucune clé du registre de RuntimeApps na été trouvée pour lapplication, alors lapplication .exe est vérifiée pour voir si une définition est incluse pour positionner _app.useUACPaths à True.Si une instruction incorporée à lUAC (embedded UAC flag) est trouvéeDéfini _app.useUACPaths à True En résumé pour une application .exe : Si une clé du registre useUACPaths existe pour dBASE Plus, elle est utilisée pour définir par défaut app.useUACPaths. Si cette clé nexiste pas, _app.useUACPaths est positionné à False. Si une application .exe est construite avec une définition incluse pour lUAC, la définition incluse surchargera la position globale pardéfaut réglée par dBASE Plus ci-dessus. Si une clé spécifique du registre de lapplication existe, sa définition surchargera la définition de la clé du registre de dBASE Plus et la définition incluse de lUAC de lapplication .exe (si une clé existe).Si le commutateur -v est passé sur la ligne de commande, il surchargera toutes les
définitions ci-dessus. Items affectés par _app.useUACPaths Premièrement Plus.exe ou plusrun.exe sassurera que les dossiers suivants existent et les créent sils nexistent pas encore : Pour PLUS.EXE: <CSIDL_LOCAL_APPDATA>\<dBASE Plus subpath>\Bin <CSIDL_APPDATA>\<dBASE Plus subpath>\Bin Pour une application .exe: <CSIDL_LOCAL_APPDATA>\<application launch subpath> <CSIDL_APPDATA>\<application launch subpath> <.. subpath> Pour dBASE PLUS IDE et une Application dBASE Plus est évalué comme suit... - Si le chemin de lancement contient soit "\Program Files" ou "\Program Files (x86)", le subpath de lancement est défini par la partie du chemin de lancement restant, une fois que la partie contenant "\Program Files" ou "\Program Files (x86)" est enlevée.Par exemple : Si dBASE plus est installé dans le dossier : C:\Program Files\dBASE\Plus <dBASE Plus subpath> sera défini par : \dBASE\Plus Si une application .exe est installée dans le dossier : C:\Program Files\VotreSociété\VotreApp <application launch subpath> sera défini par : \VotreSociété\VotreApp - Si le chemin de lancement NE contient pas "\Program Files" ou "\Program Files (x86)", alors le <.. subpath> est défini par le chemin restant après élimination de lidentificateur de lecteur et des deux points ou élimination du chemin UNC de niveau supérieur du chemin de lancement.Par exemple : Si dBASE Plus est lancé depuis : C:\dBASE\PLUS <application launch subpath> sera défini par : \dBASE\PLUS Une application réalisée avec dBASE Plus est lancée de : \ \VotreCheminUNC\VotreSociété\VotreApp <application launch subpath> est défini par : \VotreSociété\VotreApp Ensuite plus.exe ou plusrun.exe sassurera quun fichier .ini est chargé comme suit : l cherche le fichier ini dans le chemin passé par lintermédiaire dun commutateur C S'il le trouve, il charge .ini à partir de ce chemin S'il ne l'a pas trouvé, Il cherche .ini dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin] Si non trouvé, Il cherche.ini dans <CSIDL_COMMON_APPDATA>\<.... subpath>[\Bin] Si trouvé, il copie dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin] Si non trouvé, Il cherche .ini dans le chemin de lancement de lEXE Si trouvé, il copie dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin] Si non trouvé, Il crée le nouveau dossier plus.ini dans : <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin] Le fichier .ini ouvert est maintenant situé dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin] Détermine si oui ou non : :dBStartup:InitNewUser.pro est lancé la première fois par un utilisateur particulier qui lance dBASE Plus (ou une application de dBASE). Dans dBASE Plus, InitNewUser.pro créera les copies privées des divers dossiers de
convertisseurs et exemples comme suit :
Dans une application dBASE, un InitNewUser.pro personnalisé peut être utilisé pour effectuer des tâches personnalisées lors de linstallation dun nouvel utilisateur. Définition des chemins Source Alias pour faire correspondre les emplacements
privés pour les Sources Alias suivantes : Détermine les chemins par défaut des Alias du BDE pour les noms dAlias suivants
: Emplacements par défaults à utilier par lExplorateur de Projet pour déterminer
lemplacement de : Utilisé par l'Assistant Web pour déterminer lemplacement pour ses fichiers temporaires.
Propriétés Supplémentaires de _app... Ajoutée la propriété allUsersPath à lobjet _app qui est une référence au dossier Bin situé dans le répertoire Windows CSIDL_COMMON_APPDATA Ajoutée la propriété currentUserPath à lobjet _app qui est une référence référence au dossier Bin situé dans le répertoire Windows CSIDL_LOCAL_APPDATA Nouvelle COMMANDE RMDIR(RD) QAID: 134 Ajout d'une nouvelle commande RMDIR (Remove Directory) à dBASE PLUS. Ajout également d'une commande synonyme RD qui fonctionne de la même façon. RMDIR/RD Syntaxe : RMDIR <directory> Description
Classe Session QAID:6478 Ajout de tempPath à la classe Session. tempPath contient le chemin pour les fichiers temporaires de la session et peut être changé pour utiliser un autre répertoire (tant quaucune requête ou procédure stockée nest en activité). (Ceci met en application les dossiers privés selon QAID :223) Ajoutée une méthode addAlias() - ajoute des Noms dAlias Utilisateur au BDE dans lobjet session lié à la session BDE : Syntaxe <oRef>.addAlias(<cAlias>,<cDriver>,[<cOptions>]) <oRef> - est un objet session <cAlias> - Nom dAlias Utilisateur de la BDE (jusquà 31 caractères) <cDriver> - Nom du driver du BDE pour les alias spécifiés. Ceux-ci
correspondent aux noms de drivers listés chez lAdministrateur de la BDE : <cOptions> - paramètres dépendants des options du driver. Pour un alias DBASE le chemin (Path) : loption est exigée comme suit : PATH:<Chemin complet vers le dossier> Si plus dune option est nécessaire, séparer les options distinctes par un point-virgule. Ajoutée une méthode deleteAlias() - supprime
Alias Utilisateur du BDE de la session à la BDE liée à un objet session (ne fonctionne
pas pour lobjet de session par défaut dans _app.session)
Plus IDE QAID 6609 Ajoute la capacité que dBASE Plus exécute un programme dBL la première fois quun nouvel utilisateur lance plus.exe. Ce programme dBL peut être utilisé pour exécuter nimporte quel code spécifique dinstallation dutilisateur comme : - création des copies spécifiques dutilisateur du dossier de démo de code et de données - ouverture dune fenêtre avec linformation pour un nouvel utilisateur ou un utilisateur nouvellement promu Pour dBASE Plus 2.70, le dossier et les fichiers suivants seront installés : Nouveau Dossier : C:\Program Files\dBASE\Plus\Bin\dBLCore\Startup Nouveau Fichier C:\Program Files\dBASE\Plus\Bin\dBLCore\Startup\InitNewUser.pro Pendant le Démarrage pour un nouvel utilisateur, dBASE Plus 2.70 lancera la commande : DO :DBSTARTUP:INITNEWUSER.PRO Également pendant le démarrage, une nouvelle Source Alias, DBSTARTUP sera définie pour indiquer le nouveau dossier : C:\PROGRAM FILES\dBASE\PLUS\Bin\dBLCore\Startup (ou C:\Program Files (x86)\dBASE\PLUS\Bin\dBLCore\Startup.) Commande BUILD QAID 3680 Syntaxe modifiée pour que la commande BUILD ajoute la clause INI comme suit : BUILD <filename>[, <filename> ...] /FROM <resp-filename> Là où : INI OFF - indique que lapplication NE créera PAS ou nutilisera pas de
fichier ini. Syntaxe Révisée pour que la commande de BUILD pour ajouter les clauses UAC comme suit : Syntaxe Révisée: BUILD <filename>[, <filename> ...] /FROM <resp-filename> Quand UAC est spécifié l.exe résultant est construit avec par défaut en
incluant la définition _app.UseUACPaths à VRAI quand l.exe est lancé. Cependant, la définition incluse peut être surchargée en plaçant une définition
spécifique dans le registre de RuntimeApp dans la clé de registre : Ou en utilisant le commutateur -v de la ligne de commande :
f = getfile("","Title",true,"Web Images (*.jpg,*.png,*.gif,*.bmp)") Ici "Web Images" est un nom de groupe personnalisé qui inclut les types les fichiers spécifiques définis dans la parenthèse. Ajout de la possibilité dutiliser un nom de Groupe prédéfini de Type de Fichier comme : "Form()". dBASE détectera la parenthèse gauche et droite et recherchera un nom de groupe prédéfini assorti. Si trouvé, la liste des types des fichiers liés au groupe prédéfini sera ajoutée à lénumération qui est ajoutée aux Types de Fichier de combobox dans la boite de dialogue de GetFile() ou de PutFile(). Les Types de Fichier entre parenthèses doivent être séparés par une virgule ou un point-virgule et peuvent être spécifiés dans lun ou lautre des formats : <ext> ou .<ext> ou *.<ext> où <ext> signifie lextension du fichier telle que jpg ou txt. Si on spécifie une énumération de Liste de Type de Fichier qui contient des parenthèses non équilibrées ou une parenthèse droite avant une parenthèse gauche, une nouvelle erreur sera déclenchée avec le message : "Unbalanced parenthesis in file type list" AMELIORATION DU CODE Par exemple : #include :MyCode:MyHeader.h Modifiée la routine de recherche de fichier pour que la directive #include recherche dans les emplacements suivants si aucun chemin (ou source alias) nest donné pour le fichier : <CSIDL_LOCAL_APPDATA>\dBASE\PLUS\include <CSIDL_COMMON_APPDATA>\dBASE\PLUS\include Ces emplacements supplémentaires seront recherchés si _app.useUACPaths est vrai et que le fichier nest pas trouvé plus tôt dans la séquence de recherche. La séquence de recherche est révisée comme suit: Vérifie si la source alias est spécifiée. Si oui, substitue le chemin par le dAlias et vérifie si le dossier existe Si trouvé, retour Si aucune source alias, ou fichier nest trouvé, Recherche le dossier comme exactement spécifié dans la déclaration #include Si le chemin est inclus, le chemin sera recherché. Si aucun chemin nest inclus, la recherche sera effectuée dans le répertoire en cours. Si non trouvé, vérifie si lextension du fichier est spécifiée. Si non, ajoute « .h » au nom du fichier et recherche encore le fichier soit dans le dossier en cours ou le chemin spécifié. Si non trouvé, Si aucun chemin nest spécifié, Si _app.useUACPaths est à vrai, Recherche le fichier dans : <CSIDL_LOCAL_APPDATA>\dBASE\PLUS\include Si non trouvé, Recherche le fichier dans : Si non trouvé (ou _app.useUACPaths est à faux), Recherche le fichier dans : _dbwinhome + "\include" Si non trouvé, Recherche le fichier dans le chemin spécifié par lintermédiaire de la variable denvironnement INCLUDE. Notez que INCLUDE doit contenir seulement un chemin avec une barre oblique inverse afin que la recherche soit réussie.
CORRECTIONS Formulaires et Contrôles Formulaire QAID 6590 Corrigé MAV qui pouvait se produire si le popup menu du formulaire est libéré avant que le destructeur du formulaire ne sexécute (comme dans la manipulation de onClose du formulaire). QAID 6580 Corrigé la peinture du bord des contrôles de Editor et des contrôles de TextLabel quand le formulaire est dabord ouvert. Ces bords nétaient pas peints dans dBASE Plus 2.62, ceci était dû à une régression dans le build 2102 pour QAID : 6547 Source Editor QAID 3168 Corrigé le bogue dans lequel Editor réalisait un GPF sil y avait 2 instances de nimporte quel concepteur qui modifiaient le même fichier. Par exemple, si on permettait à 2 instances de dQuery dêtre ouvertes et que le même .dmd était ouvert dans chacun des deux. QAID 6302 Corrigé le GPF qui se produisait en ouvrant le Source Editor en lançant dBASE Plus dans une version 64 bits de Windows. QAID 3170 Corrigé le bogue qui causait la corruption des données et/ou un GPF dans Editor quand un grand nombre de lignes étaient mises en surbrillance (1000-2000), et que loption de menu "Comment Lines" était appelée. La source de problème était que dBASE saturait la mémoire, en raison dun stockage inefficace de la façon de stocker linformation Undo (dans ce cas elle était répétée 1000-2000 fois). Ajouté du code pour récupérer la mémoire gaspillée à chaque 100 itérations Container QAID 6623 Corrigée la fonction OnPaint() du Container pour repeindre les composants visibles du Container permettant aux objets text de repeindre correctement la couleur de fond quand ils sont transparents et que la propriété colorNormal du Container est changée. Objet Text QAID 6624 Corrigée lobjet Text afin quil soit redessiné quand il lui est notifié quune de ses propriétés de police a été changée. Précédemment, quelques changements de propriété de police ne déclenchaient pasune mise à jour du dessin intégral, comme un changement du à text.fontsize, et la mise à jour de la position horizontale des textes nétait pas réalisée quand son alignement était défini pour centrer le texte. ErrorLevel QAID 134 Mise à jour du tableau (Array) des erreurs internes errorLevel[] afin
dinclure les nouvelles erreurs supplémentaires suivantes : Find Dialog QAID 534 Corrigé le paramètre par défaut de Up et Down des boutons radios pour sassurer que seulement lun dentre eux est positionné à la fois.
|