AtoutFox

Contributions AtoutFox

Contributions AtoutFox

Retrouvez ci-après un extrait des dernières contributions postées sur AtoutFox

 

 ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO 

RSS © www.atoutfox.org - Contributions

une classe 'calculatrice' basée sur ToolBar
Bonjour à tous,

vous trouverez dans le zip joint une librairie qui contient une classe 'calculatrice' qui fait les 4 opérations, posséde une mémoire et est capable d'executer une expression. Cette calculatrice est facilement sous-classable (son organisation est adaptée au sous-classement). La librairie contient aussi une classe 'txtcalc' qui gère l'utilisation de la calculatrice (classe que vous n'êtes pas obligé d'utilser tellement elle est simple).

Le projet contient un écran de démonstration.

Le fichier lisezmoi.txt contient un descriptif détaillé.

Ceci est un premier jet. Testez le et remontez moi vos remarques.

Jean à Grenoble
Sun, 29 Oct 2017 15:56:35 GMT

Extraire ou réintégrer une fenetre d'édition de IDE
bonjour à tous

comme j'ai deux écrans de travail j'aimerais étaler sur les 2 écrans les fenetres d'éditions et les formulaires. J'y parviens presque...

ouvrir une fenetre d'édition et appuyer sur F4 et pour réintegrer la fenetre Ctrl+F4. Le focus doit etre sur la fenetre d'édition

on peu le faire avec un formulaire, code snippet ou une fenetre d'édition.... cependant c'est instable....
Sun, 17 Sep 2017 15:56:35 GMT

File Mapping pour énumérer les fichiers ouverts par Visual FoxPro
J'ai cherché longtemps un programme qui permet de trouver le chemin d'une fenetre d'édition. Ce code énumere tout les fichiers ouvert par Vfp....

apres on applique un simpe set filter to "prg" =justext(filename)
ou
Select DISTINCT filename from cs where "prg" == JustExt(filename)

et le tour est joué
Sat, 16 Sep 2017 15:56:35 GMT

Lutte contre les logiciels frauduleux :simplification du dispositif applicable au 1 er janvier 2018
Bonjour à tous

Pour ceux qui sont en train de travailler sur la facturation de leurs logiciels, voici une bonne nouvelle

Manu


Lutte contre les logiciels frauduleux : simplification du dispositif applicable au 1 er janvier 2018

Face à l'inquiétude exprimée par les entreprises, notamment les plus petites d'entre elles, quant à la mise en ouvre au 1 er janvier 2018 d'un dispositif de la loi de finances pour 2016 visant l'usage de logiciels de caisse, de comptabilité et de gestion certifiés, le Ministre de l'Action et des Comptespublics Gérald DARMANIN a décidé de le recentrer et de le simplifier.
Seuls les logiciels et systèmes de caisse, principaux vecteurs des fraudes constatées à la TVA,seront ainsi concernés. Sans réduire son efficacité pour lutter contre les fraudes permises par l'apparition de logiciels permettant d'effacer des recettes enregistrées, la redéfinition du périmètre de l'obligation permet d'alléger la complexité induite, tant pour la mise en conformité initiale que pour le quotidien des entreprises.
Cette modification fera l'objet de mesures législatives d'ici la fin d'année, pour une entrée envigueur du dispositif comme prévu au 1 er janvier 2018.
Les entreprises qui n'auraient pas encore effectué cette mise en conformité de leur logiciel de caisse ont ainsi 6 mois pour y veiller.
Le Ministre de l'Action et des Comptes publics demande à l'administration fiscale d'accompagner les entreprises dans la première année d'application des nouvelles règles.

Fri, 16 Jun 2017 15:56:35 GMT

Les tables d'historique avec SQL 2016
Les tables d'historiques avec SQL 2016
Cette question des tables d'historique permettant de retracer toutes les modifications successives de chaque ligne d'une table, je l'ai rencontrée plusieurs fois quand je travaillais.

Les réponses existaient, mais n'étaient pas toujours simples à mettre en oeuvre. Et ne garantissaient pas l'authenticité de l'historique.

Ces derniers temps, pour vérifier que la nouvelle version de SF en préparation était bien compatible avec SQL 2016, je me suis intéreressé aux nouveautés de SQL 2016.

Et surprise! les tables d'historique sont maintenant complètement intégrées à SQL Server, dans le respect de la norme ISO SQL.
Et en plus, cette nouveauté est parfaitement supportée par VFP.


Qu'est-ce que c'est? Leur dénomination en anglais est "System-Versioned Temporal Tables". En français, on dira "Tables Temporelles avec Contrôle de Version par le Système". En abrégé, on les appelle les tables d'historiques, ou tables temporelles.
Ce sont des tables qui conservent de façon automatique, permanente et horodatée les différentes versions successives de chaque ligne créée, modifiée, ou supprimée.
Vous pouvez selon vos besoins démarrer ce service en créant une nouvelle table, ou bien à partir d'une table existant déjà.
Dans les deux cas, le serveur SQL créera une deuxième table pour enregistrer les versions de l'historique.
On appellera table principale celle qui contient les données actuelles, que vous créez/modifiez/supprimez selon les besoins de vos applications. C'est le moteur SQL qui va alimenter la table d'historique liée, sans que vous ayez quoi que ce soit à changer à votre code existant.
L'ensemble des 2 tables forme la table temporelle.
À quoi ça sert? Si vous avez besoin de prouver que les données d'une table n'ont pas été modifées en dehors de votre application Si vous devez auditer les états successifs qui ont conduit à conserver les données telles qu'elles sont Si vous avez besoin de "restaurer" une seule table, par exemple pour corriger une serie d'erreurs de saisie Si vous cherchez les ruptures et anomalies dans des données métier Etc, etc...

Wed, 07 Jun 2017 15:56:35 GMT

Rencontres 2017 - Rencontres 2017 - Introduction à la virtualisation - Nicolas Mercurio
Introduction à la virtualisation

Nicolas Mercurio

Thu, 25 May 2017 15:56:35 GMT

Rencontres 2017 - Introduction à l'intelligence artificielle - Jean-Sylvain Boige
Introduction à l'intelligence artificielle
Diaporama de la session de Jean-Sylvain Boige



On pourra consulter aussi la " Taxonomie des arguments fallacieux ", à https://annuel.framapad.org/p/argumentum

Oups, la pièce jointe n'était pas passée. Ca y est, c'est corrigé ...

Wed, 24 May 2017 15:56:35 GMT

Rencontres 2017 - Session noSQL
Intérêts et limites du "Not Only SQL"
Wed, 24 May 2017 15:56:35 GMT

Big Data
vive le Big Data !

MongoDb pour Visual FoxPro
une petite librarie pour l usage de MongoDb pour Visual FoxPro 9

https://github.com/RickStrahl/wwMongoDb

merci a Rick Strahl

quelque un aurait il une exeperence dans la connection vfp + MongoDb ?

Fri, 19 May 2017 15:56:35 GMT

Rencontres Atout Fox 2017 - Expérience de Virtualisation
Rencontres Atout Fox 2017 - Expérience de Virtualisation
Wed, 17 May 2017 15:56:35 GMT

Session "Face API" du jeudi 11 mai 2017
Le zip contient mes exemples de requetes web services sur Face API + Json + affichages
Présentés en session le jeudi 11 mai 2017 à Lyon
Wed, 17 May 2017 15:56:35 GMT

Session Date et heure
Le zip contient
1- le powerpoint (pptx) contenant les slides
2- un document (docx) contenant le déroulé de la session
2- un projet VFP contenant les exemples. Ce projet sert juste à organiser, il n'a pas vocation a être généré en exécutable.
Principalement, il y a une classe permettant d'afficher et agir sur les sets, et des formulaires reprenant cette classe, pour voir le résultat selon les cas, ainsi que quelques programmes de test très simples. Pour la classe et les formulaires, ne sont utilisées que des classes de base VFP.

Wed, 17 May 2017 15:56:35 GMT

Session automation
Tout est dans le zip (voir Mode d'emploi.pdf)

Tue, 16 May 2017 15:56:35 GMT

Slides de la session "File Locking in VFP" du jeudi 11 mai 2017

Tue, 16 May 2017 15:56:35 GMT

projet et pdf de ma session Cryptography
Materiel de la session
Le zip contient
- pdf de la presentation
- un projet avec les sources dont une classe Rijndael ( en code foxpro) et une classe AES ( avec des appels API)
- quelques fichiers- assez gros - qui servent aux tests unitaires >> indispensable
- crypto.prg pour encrypter/decrypter en AES et Rijndael


Le prg (Crypto.prg) est environ 162 kb, fxp fera 84 kb
C'est la seule chose dont vous avez besoin pour encrypter/decrypter ( set proc to Crypto additive)

Fri, 12 May 2017 15:56:35 GMT

DBF -> MsExcel 2007+
Bugs corrigés
- erreur sous Windows XP causée par l'appel de htmspec() dans getccur() (avec la permission de Martina Jindrová)
- lentgh of index for memos (avec la permission de Tobias B)
- propriété "label" peut être une string ( avec la permission de Tobias B)
Fri, 21 Apr 2017 15:56:35 GMT

DBF -> MsOffice (VFP9 version 4, VFP6 version 2/3)
Fonction et classes pour Export DBF -> MsOffice
Versions pour VFP9 et VFP6 (janvier 2017).
Wed, 11 Jan 2017 15:56:35 GMT

Ajout de logo dans une feuille Excel
On trouve un peu partout dans le WEB la méthode, Insert_Image() , pour insérer une image ou un logo dans une feuille Excel.
.
Cette méthode présente l'inconvénient de ne pas conserver l'image ou le logo après sauvegarde de la feuille Excel dans certaines situations.
.
La méthode suivante, Add_Image() , permet de conserver image ou logo après la sauvegarde de la feuille.


Sun, 04 Dec 2016 15:56:35 GMT

Version 3.1415926 du décompilateur DVFP
Version 3.1415926 du décompilateur dvfp Je met à la disposition de la communauté cette version qui bénéficie d'améliorations apportées suites à différents bugs qui m'ont été signalés ces derniers mois.

Pour bien faire je devrais faire une liste des bugs corrigés, mais faute de temps, il est quand même préférable de publier la version plutot que d'attendre que je rédige la doc.

On trouvera, bien sûr, tous les sources dans le zip.

Robert Plagnard
Sat, 26 Nov 2016 15:56:35 GMT

Report dans les DLL
Report dans les DLL Introduction Le problème initial est la production dynamique de rapports VFP au format PDF pour être téléchargeables sur un site internet.
Le site tourne sous Windows Server, avec IIS et PHP. PHP permet d'instancier un objet COM+ à partir d'une DLL créée en VFP 9. Cet article traite des problèmes rencontrés avec l'instruction « report » dans les DLL VFP9
Dans tout ce qui suit, je considère des rapports qui fonctionnent parfaitement bien quand ils sont lancés dans le contexte d'un EXE. Dans le contexte d'une DLL c'est l'objet de cet article !

Dans une DLL Multi threads Il n'est pas possible d'utiliser l'instruction « report »
Report form MyReport noconsole to file MonFichier.ps nodialog Pas d'erreur à la compilation, mais à l'exécution erreur 1001 : Feature is not available
C'est une erreur générée par le runtime car le code VFP est exactement le même, que l'on compile un EXE, une DLL mono ou une DLL multi threads.

Dans une DLL Mono thread En prenant des précautions dues au contexte mono thread, on peut, dans certaines conditions, utiliser « report ».

Avec « reportbehavior 80 »
Cela n'est pas possible. Même en prenant les précautions pour ne pas écrire dans une interface utilisateur, par exemple :
Set reportbehavior 80 Report form MyReport noconsole to file MonFichier.ps nodialog Génère l' erreur 2031 : User-interface operation not allowed at this time
Alors que dans un EXE, cela marche sans problème. Le fichier.ps est un fichier PostScript que l'on peut visualiser avec gsView par exemple.

Avec « reportbehavior 90 »
Cela dépend.

Set reportbehavior 90 Report form MyReport noconsole to file MonFichier.ps nodialog
Génère l' erreur 1733 : Class definition OUTPUT type 0 is not found
Il semblerait qu'ils aient oublié le cas « to file », et que seuls « to print » et « preview » aient été prévus.

Par contre
Set reportbehavior 90 Report form MyReport noconsole to print nodialog
Fonctionne bien avec une « imprimante pdf ». Personnellement j'utilise « Bullzip PDF printer » qui me donne satisfaction. Extraordinaire ! Sauf que, dès que l'on met une image dans le report (aussi petite soit-elle), on récupère une erreur 1108 : Picture too big, corrupt, or in wrong format C'est un problème lié à l'utilisation de GDI+. Des problèmes analogues ont été décrits par Calvin Hsia (voir http://blogs.msdn.com/b/calvin_hsia/archive/2005/07/24/442873.aspx )
Mais je ne pense pas que ce soit tout à fait la même raison, car on a le même problème que ce soit un JPG, un PNG ou un BMP.
Le problème n'apparait pas de manière systématique, dans un tout petit report, avec la même image, ça marche. Pour produire l'erreur il faut que le rapport soit assez compliqué.
Par contre si l'on met le BMP dans un champ général d'une table, cela marche, c'est un contournement possible. C'est d'ailleurs la seule solution que j'ai trouvée.
Toutes ces raisons m'ont fait essayer xFrx.

Avec XFRX Les difficultés rencontrées sont les suivantes :

Avec le mode classique (sans utiliser les nouvelles possibilités du report 90)
loSes = XFRX("XFRX#INIT") loSes.SetParams("output.pdf",,.T.,,.T.,,"PDF") loSes.ProcessReport("Rapport.frx") loSes.finalize()
Ça marche à 99.9%
Mon report est assez compliqué, avec beaucoup d'impressions conditionnelles, certains traits horizontaux ne sont pas à leur bonne place. Ce n'est pas très grave, mais ce n'est pas joli. L'image JPG située dans l'entête s'affiche bien.
Un autre avantage, dans ce cas, est la possibilité d'utiliser une DLL Multi threads car aucune instruction report n'est utilisée. Tout est fait par xfrx.

En utilisant les nouvelles possibilités du report 90 (reportbehavior 90)
loLsn = XFRX("XFRX#LISTENER") loLsn.SetParams( "output.pdf",,.T.,,.T.,, "PDF" ) report form rapport.frx object loLsn
On l'a bien compris, cette façon de faire ne peut être utilisée que dans une DLL mono thread. Ça marche bien, les traits horizontaux sont bien positionnés, mais on rencontre le même problème avec les images. Cela n'est pas étonnant, car xFrx sous-traite l'affichage à ReportOutPut.app. Je n'ai pas testé mais je pense que le même contournement doit être possible avec un champ général.

Conclusion La solution que j'avais développée dans le cadre de Windows server 2008 était différente. Je n'avais pas trouvée de solution telle que celle décrite ci-dessus et j'avais choisi de produire le rapport à partir d'un EXE qui était lancé dans la DLL. Le lancement de l'EXE se faisant proprement par un CreateProcess de win32api. En attendant la fin de l'exe et en sérialisant les demandes, cette méthode marchait parfaitement bien.
Sous Windows server 2012, je n'arrive plus à lancer l'exe à partir d'un CreateProcess. C'est un problème de droits. J'ai essayé de beaucoup de manières, sans succès. Je pense que les droits et la sécurité sont plus stricts que sur Windows server 2008. On trouve beaucoup d'articles sur ce sujet.
En désespoir de cause, je pensais développer un spooler de rapport (un EXE VFP), qui dans mon cas, serait relativement simple. Ayant besoin d'un seul rapport défini par quelques paramètres. La DLL pourrait faire une demande de rapport en créant une entrée dans une table. Le spooler regardant périodiquement s'il y a des demandes, les satisfait au fur et à mesure et indique que le rapport est prêt. Le spooler est une sorte de service, mais malheureusement on ne sait pas créer de service en VFP. On contourne la difficulté en faisant démarrer automatiquement une session au démarrage du serveur qui elle-même lance automatiquement notre EXE. LogonExpert (produit payant) permet de le faire.
Jusqu'au moment où j'ai trouvé une solution ...

Postscriptum J'ai passé beaucoup plus de temps à trouver la solution simple, qu'il n'aurait fallu de temps pour développer le Spooler. J'aime les solutions simples, mais ce sont les plus difficiles à trouver.

Robert Plagnard le 2 août 2016

Sat, 26 Nov 2016 15:56:36 GMT

ODT (Writer) -> TXT
Une fonction simple qui extrait le texte contenu dans un document Writer odt , et crée un fichier txt avec le même nom .

ImportOoWrText 1.0
Sun, 25 Sep 2016 15:56:36 GMT

Inspect tables
Classes pour la visualisation des tableaux à partir de Word et PowerPoint documents

InspectDocx 1.0
InspectPptx 1.0

Mon, 19 Sep 2016 15:56:36 GMT

VFP6 (DBF) -> Excel 2007+ (xlsx)
Version pour VFP6
CopyToXlsx6 1.0

Vois aussi
CopyToXlsx6
Mon, 19 Sep 2016 15:56:36 GMT

DBF <=> OppenOffice
Fonction et classes pour Import/Export DBF OpenOffice / LibreOffice

DBF -> Writer
Fonction CopyToOdt 3.0
Class ExportToOdt 2.0

DBF -> Calc
Fonction CopyToOds 2.0
Class ExportToOds 1.0

Calc -> DBF
Import From Openoffice Calc 1.0

Update
Calc ou Impress ou Writer -> DBF
ImportFromOoffice 1.0

Une fonction unifiée pour importer des données à partir des tables contenues dans les documents OpenOffice / LibreOffice ( ods de Calc , odp d' Impress ou odt de Writer )

- Retourner le nom de la table / cursor généré; le meme nome avec ods,odp,odt / SYS(2015)
- Analyser la première (importé) ligne de la table du ods,odp,odt, et obtenir le nombre de colonnes et les types de données à partir de cette ligne
- Crée un DBF / cursor (selon le sixième paramètre)
- Et remplir ce DBF avec les données du ods,odp,odt
- Lorsque le paramètre lnHeader est entre 1 et lnStartRows, les nomes des champs sont prises à partir de ce ligne de la table, sinon le champs sont nommés mField1, mField2 etc.
- Un champ est considéré comme de type date, si CTOD () ne soit pas vide; SET DATE doit être correctement réglée, pour importer les valeurs de date et datetime
- Le séparateur décimal est tirée de SET POINT TO
- Un champ est considéré comme de type nombre, si ne contient que des chiffres, et pas plus d'un séparateur décimal, et pas plus d'un + ou - (soit une +, soit une -) dans la position la plus à gauche
- La taille et la précision du champ numérique est calculé avec MAX (LEN (ALLTRIM (valeur de la cellule))), respectivement avec MAX (LEN (ALLTRIM (valeur de la cellule)) - AT (séparateur décimal, ALLTRIM (valeur de la cellule))
- Un champ est considéré comme logique si la cellule contient «true» ou «false»
- La longueur des champs de caractères est MAX (LEN (valeur de la cellule))
- Si MAX (LEN (valeur de la cellule))> 254 ou contient un CHR(13), le champ est MEMO

Vois aussi
DBF->Calc
DBF->Writer
Calc->DBF

Mon, 19 Sep 2016 15:56:36 GMT

Mouseleave dans une form
ce que code on l'utliser a la place de MouseLeave qui n'existe pas dans la form fox MODEL
inserer un timer
interval =5000
coller le code suivante dans l'evenement du timer
LOCAL lnMouseObject, loMouseObject
lnMouseObject = AMOUSEOBJ(laMouseObject, 1)
IF lnMouseObject = 4
loMouseObject = laMouseObject[1]
* MESSAGEBOX("Le nom du control que tu a clicker et "+loMouseObject.Name,0,"msg",5)
loMouseObject = laMouseObject[2]
*MESSAGEBOX("Le nom de la form form qui contient le control que tu a clicker et "+ loMouseObject.Name,0,"md",5)
ENDIF
loMouseObject = laMouseObject[1]
IF loMouseObject.Name == "Screen"
MESSAGEBOX( loMouseObject.Name +"et hors la form mtn ",0,"cool",5) thisform.Release ENDIF
RETURN




************merci THE ONE *******************

Tue, 23 Aug 2016 15:56:36 GMT

Version 3.14159 du décompilateur DVFP
Suite aux remarques judicieuses de Francis Faure, la version 3.14159 de DVFP corrige des erreurs qui étaient restées dans la décompilation des instructions "on".

Incidemment au passage, je pense avoir découvert un petit bug de VFP, la simple instruction:
ON PAD MenuTitleName OF MenuBarName1 ACTIVATE MENU menu2 n'est pas bien compilé par VFP. Il suffit de regarder le fxp généré. La fin de l'instruction annonce une chaine de caractère de longueur 5 ("menu2") mais il n'y a que 4 caractères stockés, ce qui fait que l'instruction est incorrecte. On peut s'en assurer en examinant le fxp avec PS Pad Hex. Il est donc normal que le décompilateur bute sur cette mauvaise compilation.





Mon, 13 Jun 2016 15:56:36 GMT

Import MSOffice 2007+
Nouveau
AppendFromPptx et ImportFromPptx

Nouveau paramètre lnHeader
- noms de champs générés à partir de la table première rangée
- des cellules fusionnées sont placées dans les colonnes appropriées
- les caractères accentués importés mieux ( grâce à Koen Piller)

Import_MSOffice_2007_20160612.zip
Sun, 12 Jun 2016 15:56:36 GMT

SYS(2015) En code VFP - v2
Bonjour,

Dans ma recherche du fonctionnement de SYS(2015) :
- je trouve un article de Mike Gagnon datant de novembre 2004 ! Il y à donc 12 ans !

Lien : http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000052
le code proposé par Mike Gagnon contient la solution.

Puis Robert Plagnard avait travaillé dessus peu de temps après et trouvé qu'il fallait "mémoriser" la dernière valeur de SYS(2015) pour éviter d'avoir la même valeur dans la même milliseconde.

En testant les codes de Mike et Robert, mais sur nos machines actuelles sur lequelle plusieurs lignes de codes VFP peuvent être traitées dans les mêmes 10ms (limite de SECONDS()) : alors on à pas les bonnes valeurs et des doublons :

J'ai repris le code pour une version "2", ci-après qui me donne bien le bon résultat.

Merci Mike !
Cordialement
Francis
Mon, 23 May 2016 15:56:36 GMT

Ajouter une Google Map à un formulaire FoxinCloud
Cet article explique comment, à partir d'un formulaire VFP standard, vous pouvez ajouter une carte Google avec un haut niveau d'interaction utilisateur :

Adding a Google Map to a FoxInCloud Form


Thu, 21 Apr 2016 15:56:36 GMT

le Quizz 2016 des Rencontres AtoutFox à Marseille

Sat, 26 Mar 2016 15:56:36 GMT

VS Code : Quésaco ?
- Mon extension langage VFP pour Visual Studio Code
- Mon theme VFP pour Visual Studio Code
Présentés lors de cette session :
Les codes sources des programmes : sont téléchargeables aux liens :

https://github.com/FrancisFaure/vfp_tmlanguage_generator
https://github.com/FrancisFaure/vfp_tmtheme_generator

Cordialement
Francis Faure

Sat, 26 Mar 2016 15:56:36 GMT

SQL MONO et MULTI TABLES : norme et implémentation en VFP, SqlServer, PostGres
Fichier joint : Zip contenant le fichier powerpoint (pptx) et les codes sources des exemples

Utilisation :
- d'abord, sous postgres et sous mssql, créer la base de données "SelectMulti"
- sous vfp, ouvrir le projet "Select_Multi"
- sql.prg : modifier les chaines de connexion de la procédure sqlConnecte
- lancer crea_data.prg
- le formulaire requêtes.scx peut ensuite être lancé (créé à l'origine à partir de l'assistant VFP).
* Remplacer + par || : pour PG, remplace les + par des || dans le texte des requêtes afin de faire une concaténation de chaines au lieu d'une addition.
* VFP / PG / SQL : sélectionne pour quel moteur la requête sera exécutée. Le bouton "Exécuter tout" exécute la requête pour les trois, si possible.
* les résultats des requêtes sont conservés pour pouvoir être comparés si besoin. Le bouton "Nettoyer tout" fait le nettoyage des résultats précédents.
* Le bouton "110" va directement sur la requête correspondant au début de la partie SQL multi tables
Sun, 20 Mar 2016 15:56:36 GMT

MVC - Architecture logicielle : le patron « modèle-vue-contrôleur »
Le PDF des transparents de la session "MVC - Architecture logicielle : le patron « modèle-vue-contrôleur »", un zip contenant l'exemple d'application en VFP.

Sat, 19 Mar 2016 15:56:36 GMT

De l'Ajax dans les SCX
Le matériel de la session " De l'Ajax dans les SCX - Dialogues entre un document HTML/JavaScript et une application Desktop VFP. Du contenu graphique et interactif riche et moderne dans une application VFP, et un moyen de préparer une migration vers une application web. " du 18/3/2016.
Un zip comnetant :
- le ppt de la session
- les codes source PRG, HTML, JS


Sat, 19 Mar 2016 15:56:36 GMT

Ergonomie et Design
Matériel de la session " Ergonomie et Design - Concepts et exemples de structuration des écrans dans une application moderne " par Damien Lockner, du 18 mars 2016. * le ppt de la session
* le rapport "Critères Ergonomiques pour l'Évaluationd'Interfaces Utilisateurs" (version francais et anglaise).

Damien Lockner - user experience designer | CEO
damien.lockner@spicy.life
http://spicy.life

Sat, 19 Mar 2016 15:56:36 GMT

Comparatif langage VFP vs JavaScript
Matériel de la session " Comparatif langage VFP vs JavaScript - - Découverte du langage JavaScript par un développeur Visual FoxPro" du 17 mars 2016. * le ppt de la session
* les codes source

Sat, 19 Mar 2016 15:56:36 GMT

L'optimisation linéaire
Le materiel de ma presentation: un zip avec
- pdf
- projet

Fri, 18 Mar 2016 15:56:36 GMT

Import DBF from MsOffice 2007+ (xlsx, docx) 2.1
Résoudre le problème de BigInteger .
Entiers avec 10 chiffres ou plus , maintenant sont n ombre

Bug
"Il semblerait qu'il y ait un problème concernant l'importation des codebarres EAN13. Le champ du cursor correspondant contient que des *, correspondant généralement à un dépassement de capacité numérique."
Thu, 11 Feb 2016 15:56:36 GMT

Import/Export MsOffice 2007+ <-> DBF (Excel, Word, PowerPoint)
Version 2.0 pour

AppendFrom***x importe les données du document docx, dans un curseur ou une table déjà existante et ouvert.
ImportFrom***x crée un DBF / cursor
IMportFormDocx 2.0
AppendFromDocx 2.0
ImportFromXlsx 2.0
AppendFromXlsx 2.0

CopyTo***x - un procédure de l'exportation d'un curseur / table (comme COPY TO XLS)
ExportTo***x - une classe pour exporter des données affichées dans une grille ou celles qui figurent dans un tableau (curseur); au clic droit, une forme "Paramètres" apparaît
ExportToPptx 2.0
CopyToPptx 2.0
ExportToDocx 2.0
CopyToDocx 2.0
ExportToXlsx 2.0
CopyToXlsx 3.0
Sun, 03 Jan 2016 15:56:36 GMT

CopyToXlsx 2.9.1 / ExportToXlsx 1.8
Nouvelle version
- fonction copytoxlsx 2.9.1
http://praisachion.blogspot.ro/2015/12/copytoxlsx-29.html
ou
https://www.dropbox.com/s/6dywo9xrtyrt6ux/dbf2xlsx%202.9.1.zip?dl=0

- classe exportxlsx 1.8
http://praisachion.blogspot.ro/2015/12/exporttoxlsx-18-class.html
ou
https://www.dropbox.com/s/s3djrilruwsaolx/exportxlsx%201.8.zip?dl=0

Il ne faut pas MSOffice, OpenOffice ou LibreOffice

1 Un procédure (copytoxlsx.prg) de l'exportation d'un curseur /table au format xlsx (comme COPY TO XLS)
Le forfait comprend un démo testxlsx.prg

2 Une classe exportxlsx de l'exportation d'un curseur /table au format xlsx
Seulement une propriété doit définir, la propriété «grid» (référence à la grille / nom de la table)

Facultatif on peut définir d'autres propriétés (voir exportpdf_fr.txt)
Cette propriétés, comme la police, gras, italique, des en-têtes et des lignes, sont accessible par clic droit

L'archive contient:
- Exportxlsx.txt (explications en anglais)
- Exportxlsx_fr.txt (explications en français)
- Export.pjx (le projet de démonstration)
- Exportxlsx.vcx (la bibliothèque de classes)
- Exportxlsx.scx (démo form)


Thu, 03 Dec 2015 15:56:36 GMT

ImportFromXlsx 1.3
Nouvelle version
. - Nouveau (cinquième) paramètre; si .T , la source contient des cellules vides ( la position de la colonne et le type de données est vérifiée pour chaque cellule plus lent ) ; optionnel ; défaut .F .
- La table générée est FREE


Import from xlsx
- Retourner le nom de la table / cursor généré; le meme nome avec xlsx / SYS(2015)
- Analyser la première (importé) ligne de la table du xlsx, et obtenir le nombre de colonnes et les types de données à partir de cette ligne
- Crée un DBF / cursor (selon le sixième paramètre)
- Et remplir ce DBF avec les données du xlsx
- Le champs sont nommés mField1, mField2 etc.
- La taille et la précision du champ numérique est calculé avec MAX (LEN (ALLTRIM (valeur de la cellule))), respectivement avec MAX (LEN (ALLTRIM (valeur de la cellule)) - AT (séparateur décimal, ALLTRIM (valeur de la cellule))
- La longueur des champs de caractères est MAX (LEN (valeur de la cellule))
- Si MAX (LEN (valeur de la cellule))> 254 ou contient un CHR(13), le champ est MEMO

http://praisachion.blogspot.ro/2015/11/importfromxlsx-13.html
ou
https://www.dropbox.com/s/q2f6s4qeubzpu2t/importxlsx%201.3.zip?dl=0
Thu, 03 Dec 2015 15:56:36 GMT

AppendFromDocx
Ceci est la paire de copytodocx

1) AppendFromDocx:
- Importe les données du document docx, dans un curseur ou une table déjà existante et ouvert.
- Le type de champ et le nom sont ceux du curseur / table (aucun validations sont effectuées)
- SET DATE doit être correctement réglée, pour importer les champs de date et datetime
- Un champ logique est remplacé par .T, si la cellule contient «true», et avec .F, sinon..

2) ImportFromDocx:
- Retourner le nom de la table / cursor généré
- Analyser la première (importé) ligne de la table du docx, et obtenir le nombre de colonnes et les types de données à partir de cette ligne
- Crée un DBF / cursor (selon le sixième paramètre)
- Et remplir ce DBF avec les données du docx
- Le champs sont nommés mField1, mField2 etc.
- Un champ est considéré comme de type date, si CTOD () ne soit pas vide; SET DATE doit être correctement réglée, pour importer les valeurs de date et datetime
- Le séparateur décimal est tirée de SET POINT TO
- Un champ est considéré comme de type nombre, si ne contient que des chiffres, et pas plus d'un séparateur décimal, et pas plus d'un + ou - (soit une +, soit une -) dans la position la plus à gauche
- La taille et la précision du champ numérique est calculé avec MAX (LEN (ALLTRIM (valeur de la cellule))), respectivement avec MAX (LEN (ALLTRIM (valeur de la cellule)) - AT (séparateur décimal, ALLTRIM (valeur de la cellule))
- Un champ est considéré comme logique si la cellule contient «true» ou «false»
- La longueur des champs de caractères est MAX (LEN (valeur de la cellule))
- Si MAX (LEN (valeur de la cellule))> 254, le champ est MEMO

Nouveaux version AppendFromDocx 1.3
- une meilleure détection de la teneur en cellules

Contrairement appendfromdocx , importfromdocx crée une nouvelle table , essayant d'imiter le comportement de la commande IMPORT
ImportFromDocx 1.3
- une meilleure détection de la teneur en cellules
- retourner le nom de la table / cursor généré; le meme nome avec xlsx / SYS(2015) / chaîne vide en cas d'erreur
- si MAX (LEN (valeur de la cellule))> 254 ou contient un CHR(13), le champ est MEMO


Sun, 21 Jun 2015 15:56:36 GMT

AppendFromXLSX
Ceci est la paire de copytoxlsx

Nouveau version
- Importe les données du document xlsx, dans un curseur ou une table déjà existante et ouvert.
- Le type de champ et le nom sont ceux du curseur / table (aucun validations sont effectuées)
Append from xlsx 1.3
ou
http://praisachion.blogspot.ro/2015/09/appendfromnxlsx-13.html

Import from xlsx
- Retourner le nom de la table / cursor généré; le meme nome avec xlsx / SYS(2015)
- Analyser la première (importé) ligne de la table du xlsx, et obtenir le nombre de colonnes et les types de données à partir de cette ligne
- Crée un DBF / cursor (selon le sixième paramètre)
- Et remplir ce DBF avec les données du xlsx
- Le champs sont nommés mField1, mField2 etc.
- La taille et la précision du champ numérique est calculé avec MAX (LEN (ALLTRIM (valeur de la cellule))), respectivement avec MAX (LEN (ALLTRIM (valeur de la cellule)) - AT (séparateur décimal, ALLTRIM (valeur de la cellule))
- La longueur des champs de caractères est MAX (LEN (valeur de la cellule))
- Si MAX (LEN (valeur de la cellule))> 254 ou contient un CHR(13), le champ est MEMO
Import from xlsx 1.1
ou
http://praisachion.blogspot.ro/2015/08/importfromxlsx-11.html



Sun, 21 Jun 2015 15:56:36 GMT

Utilisation de GetLocaleInfo et GetLocaleInfoEx pour les monnaies
GetLocaleInfo et GetLocaleInfoEx peuvent être utilisés pour obtenir les paramètres locaux pour les monnaies (ceux du Panneau de configuration -> Paramètres régionaux)

Les deux GetLocaleInfo et GetLocaleInfoEx donne beaucoup d'informations. Ils peuvent être invoqués de façon similaire, et donne des résultats similaires.
La principale différence entre la signature de fonctions, est le premier paramètre. GetLocaleInfo ont un paramètre LONG, tandis que GetLocaleInfoEx un paramètre CHARACTER.

GetLocaleInfo peut être utilisé dans Windows XP, Vista et ci-dessus. GetLocaleInfo tend à devenir obsolète.
GetLocaleInfoEx peut être utilisé dans Windows Vista et ci-dessus, mais ne peut pas être utilisé dans Windows XP.
GetLocaleInfo fournir des résultats ASCII, tandis que GetLocaleInfoEx prend en charge Unicode.
Cela signifie beaucoup de devises (comme English India) peuvent être obtenus qu'avec GetLocaleInfoEx.

Pour obtenir les valeur défaut, le premier parametre de GetLocaleInfoEx doit etre Null.
Pour autre valeurs, utilisez - , mais convertir aux Unicode
Par examples
STRCONV("en-AU",5)+CHR(0)
ou
STRCONV("fr-FR",5)+CHR(0)

L'information donnée par GetLocaleInfo et GetLocaleInfoEx, peut être utilisé pour écrire un document HTML, ou pour écrire les nombres formatés dans Word, grâce à l'automatisation.

Je l'ai utilisé pour la version mise à jour du copytoxlsx
http://www.atoutfox.com/articles.asp?ACTION=FCONSULTER&ID=0000000888

Plus d'exemples
http://praisachion.blogspot.ro/2015/06/using-getlocaleinfo-and-getlocaleinfoex.html
http://praisachion.blogspot.ro/2015/06/using-getlocaleinfo-and-getlocaleinfoex_14.html
http://praisachion.blogspot.ro/2015/06/using-getlocaleinfo-and-getlocaleinfoex_79.html
J'ai essayé une explication plus détaillée, ici
http://www.foxite.com/archives/getlocaleinfoex-fountain-of-knowledge-0000424218.htm
Sun, 14 Jun 2015 15:56:36 GMT

Ensemble de fonctions pour les icônes et curseurs
Pour chacune des fonctions suivantes il y a un correspondant test***. Prg
- cur2ico.prg convertir cur(seur) à ico(n) - ico2cur.prg convertir ico(n) à cur(seur)
- genico.prg convertir un ou plus de png (maximum 256x256) à ico / cur
- genicob.prg convertir un ou plus de bmp (maximum 256x256) à ico / cur
- extractico.prg diviser un fichier ico / cur en plusieurs fichiers ico / cur
- ico2img.prg extrait de bmp / png stockées dans un fichier ico / cur
Sat, 06 Jun 2015 15:56:36 GMT

Export un curseur / table au format pptx
Il ne faut pas MSOffice, OpenOffice ou LibreOffice

1 Un procédure (copytopptx.prg) de l'exportation d'un curseur /table au format pptx (comme COPY TO XLS)
Le forfait comprend un démo testpptx.prg

2 Une classe exportpptx de l'exportation d'un curseur / table au format pptx
Seulement une propriété doit définir, la propriété «grid» (référence à la grille / nom de la table)

Facultatif on peut définir d'autres propriétés (voir exportpptx_fr.txt)
Cette propriétés, comme la police, gras, italique, des en-têtes et des lignes, sont accessible par clic droit

L'archive contient:
- Exportpptx.txt (explications en anglais)
- Exportpptx_fr.txt (explications en français)
- Export.pjx (le projet de démonstration)
- Exportpptx.vcx (la bibliothèque de classes)
- Exportpptx.scx (démo form)
Fri, 05 Jun 2015 15:56:36 GMT

Fiabilisation des données (d'adresse) à l'heure du big data
Session 15-21 des rencontres AToutFox 2015 à Roissy
Enfin arrivé à l'uploader ...

Fri, 10 Apr 2015 15:56:36 GMT

PostgreSQL - Convertir du code client VFP en code serveur PostgreSQL
Le matériel de la session des rencontres 2015 : des points d'entrée pour le développement de fonctions stockées PostgresSQL pour l'utilisation en VFP.

Wed, 08 Apr 2015 15:56:36 GMT

a m'effacer

Wed, 08 Apr 2015 15:56:36 GMT

THOR : étendez l'interface FoxPro
Thor est un ensemble d'outils écrits par des membres de la communauté et intégrés à l'IDE FoxPro. La session présentait un certain nombre de ces outils.

Thu, 02 Apr 2015 15:56:36 GMT

Reproduction totale ou partielle strictement interdite • KitWeb : générateur de sites internetWan Again : fournisseur d'accès à InternetDesign or Decline : SSII (informatique, développement logiciel)