ATOUTFOX
    COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO

Forum AtoutFox

Le forum AtoutFox

Forum

RSS © www.atoutfox.org - Forum

Re: update
je t'encourage à parcourir les exemples fournies avec l'environnement
de vifual foxpro.

aussi avec les assistants(wizards) de visual foxpro tu y trouveras du
code bien structuré et puissant.

Comment

créer un projet test Projet1 avec l'assistan
créer une database avec l'assistant de vfp
créer des tables avec l'assistant de vfp
créer un formulaire avec l'assistant de vfp

et ainsi de suite....

bonne chance


une réponse pour jaimefoxpro

Allo,
> bonjour
> Il aya buffermode qui donne le choix sur optimiste pessimiste et sans j
> ai pas trouve buffermodeoveride merci

--
a+ Eddy
Merci de partager avec moi votre immense savoir que je me ferai plaisir
d'absorber... il va de soi que je vais vous en laisser un peu
Politesse et savoir vivre oblige ;0)
Sun, 23 Sep 2018 13:40:24 GMT

Re: update
bonjour
Il aya buffermode qui donne le choix sur optimiste pessimiste et sans j ai pas trouve buffermodeoveride
merci


Sun, 23 Sep 2018 13:40:24 GMT

Re: update

C'est une propriété d'un curseur dans un data environnement.

par défaut =1 pour l'utilisation des parametres du formulaire.

les modes intéressants sont 3 et 5 pour un environnement optimiste.

dans une facture il y a généralement 2 alias(tables, vues ou curseurs)

L'Entête de la facture qui devrait etre 3 pour la mise en mémoire tampon des lignes optimiste

dans ce cas seul l'enregistrements sur lequel tu travailles est en tampon. Donc tant que tu ne change pas d'enregistrement, personne sur le réseau ne voit les modifications

Les items de la facture qui devrait etre à 5 pour mise en mémoire tampon optimiste de la table. Ce qui fait que tu peux travailler sur plusieurs records et valider par un tableUpdate(.t.). Ce qui a pour conséquence de traiter plusieurs enregistrements


Leurs pendants pessimiste est intéressant. Voir dans l'aide les modes 2 et 4

bonne journeé

--
a+ Eddy
Merci de partager avec moi votre immense savoir que je me ferai plaisir
d'absorber... il va de soi que je vais vous en laisser un peu
Politesse et savoir vivre oblige ;0)



Sun, 23 Sep 2018 13:40:24 GMT

Re: aide en francais vfp6 ou 9
Bonjour,

Les Contributions AtoutFox contiennent des utilitaires, des exemples déjà pour commencer :

http://www.vfp.fr/atoutfox.asp

mais il faudrait éplucher du coté de la doc en anglais de vfp9 ou vp6 très abondante
sur le le web

bon courage


Wed, 19 Sep 2018 13:40:24 GMT

aide en francais vfp6 ou 9
Bonjour
J ai besoin d'un help vfp6 ou vfp9 qui contient une diversité d'exemples pratiques pour debutant voulant se perfectionner
Merci


Wed, 19 Sep 2018 13:40:24 GMT

Re: update
bonjour,
dans l'environnement de données du formulaire, pour la table écrite,
quelle est la valeur de la propriété buffermodeoverride ?
je mettrais 5

Le 18/09/2018 à 11:33, jaimefoxpro a écrit :
> j essaye de modifier une table produit depuis une autre table comprod en utilsant une requete sql (select) puis update ...set le resultat est que le premier enregistrement est modifie les autres non que dois-je faire. Sachant que cela se produit uniquement quand j'introduis ce petit prg dans une form representant un programme de reception de donnees.
>
> Merci
> si quelqu'un peut m'aider par viber voici mon num 00213771288027
> Note j utilise VFP6 et vfp9
>
>

Tue, 18 Sep 2018 13:40:24 GMT

Re: update
Il va être très difficile de répondre par téléphone. Mais peux-tu nous donner,
ici, la structure des 2 tables (liste des champs, indexs) ainsi que les requêtes
que tu fais actuellement et qui ne fonctionnent pas ?

A+
Jean à Grenoble
Tue, 18 Sep 2018 13:40:24 GMT

programme de production
Bonjour
Je cherche une le programme de production prg qui en choisissant un element de la table produit j'aurais une fenetre qui affiche les autres elements toujours de la meme table produit et en les cochant on aurait choisi les elements composants de ce produit. et surtout les quantités des composants se deduisent automatiquement une fois le produit pere est receptionné.

Merci
si quelqu'un peut m'aider avec viber 00213771288027


Tue, 18 Sep 2018 13:40:24 GMT

update
j essaye de modifier une table produit depuis une autre table comprod en utilsant une requete sql (select) puis update ...set le resultat est que le premier enregistrement est modifie les autres non que dois-je faire. Sachant que cela se produit uniquement quand j'introduis ce petit prg dans une form representant un programme de reception de donnees.

Merci
si quelqu'un peut m'aider par viber voici mon num 00213771288027
Note j utilise VFP6 et vfp9


Tue, 18 Sep 2018 13:40:24 GMT

Re: espion du d=c3=a9boqueur
Bonjour Franck et merci
Je continue mes investigations


Sat, 15 Sep 2018 13:40:24 GMT

Re: espion du d=c3=a9boqueur
Bonjour,
le rouge veut dire que la valeur de cette donnée a changée lors de
l'exécution du pas suivi avec le débogueur.


Le 14/09/2018 à 14:12, JM ANDR? a écrit :
> J'affiche la valeur d'un champ (monfichier.nom par exemple) dans l'espion du débogueur. Je pense que les memos sont corrompus. Que signifie la couleur rouge pour cette valeur dans le débogueur ?
> Merci d'avance
>
>

Fri, 14 Sep 2018 13:40:24 GMT

espion du déboqueur
J'affiche la valeur d'un champ (monfichier.nom par exemple) dans l'espion du débogueur. Je pense que les memos sont corrompus. Que signifie la couleur rouge pour cette valeur dans le débogueur ?
Merci d'avance


Fri, 14 Sep 2018 13:40:24 GMT

Re: http://www.universalthread.com/
Bonjour Hamidou,
Bonne remarque, je vais mettre les liens à jour
Cordialement
Francis

Le mer. 12 septembre 2018, 10h42 Hamidou a écrit :
> Bonjour Francis
>
> Il y a 2 liens sur atoutfox.org qui ont changés
> et qui renvoient nul part, soit qu il ont changés de lien ou de propriétaires et qui peuvent intéresser les foxiens:
> à savoir:
> VFPX (projets open-sources° qui a migré vers
>
> https://github.com/VFPX
>
> et universalthread (archives des aricles et utilitaires vfp) vers
>
> https://www.levelextreme.com/
>
> y a t-il quelqu'un qui pourrait rétablire les bons liens
>
> merci Francis
>
> crdlt
>
>
> .
>



Wed, 12 Sep 2018 13:40:24 GMT

Re: Mes News
Francis Faure vient de nous annoncer :
> hello bis
> a moins que tu cherche le serveur de news :
> news://news.atoutfox.org/atoutfox.public.association Cordialement
> Francis

Merci Francis
c'était ce dernier que j'avais besoin J'utilise Mes News exclusivement
bien plus lisible que via le site.
A+
Guy Bonemme

--
Guy Bonemme
BeFox

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com

Wed, 12 Sep 2018 13:40:24 GMT

Re: http://www.universalthread.com/
Bonjour Francis

Il y a 2 liens sur atoutfox.org qui ont changés
et qui renvoient nul part, soit qu il ont changés de lien ou de propriétaires et qui peuvent intéresser les foxiens:
à savoir:
VFPX (projets open-sources° qui a migré vers

https://github.com/VFPX

et universalthread (archives des aricles et utilitaires vfp) vers

https://www.levelextreme.com/

y a t-il quelqu'un qui pourrait rétablire les bons liens

merci Francis

crdlt


Wed, 12 Sep 2018 13:40:24 GMT

Re: Mes News
Bonjour Francis

Il y a 2 liens sur atoutfox.org qui ont changés
et qui renvoient nul part, soit qu il ont changés de lien ou de propriétaires et qui peuvent intéresser les foxiens:
à savoir:
VFPX (projets open-sources° qui a migré vers

https://github.com/VFPX

et universalthread (archives des aricles et utilitaires vfp) vers

https://www.levelextreme.com/

y a t-il quelqu'un pour pourrait retablire les bons liens

merci Francis

crdlt





Wed, 12 Sep 2018 13:40:24 GMT

Re: Mes News
hello bis
a moins que tu cherche le serveur de news : news://news.atoutfox.org/atoutfox.public.association
Cordialement
Francis


Tue, 11 Sep 2018 13:40:24 GMT

Re: Mes News
Guy
Pourtant ça marche
puisque tu as posté ce message
Cordialement
Francis


Tue, 11 Sep 2018 13:40:24 GMT

Mes News
Bonjour à tous,

Suite à une réinstallation, j'essaye de me connecter au serveur
avec http://www.atoutfox.org ou
avec http://www.atoutfox.org/nntp.asp

Réponse impossible de trouver le serveur?

Merci de me raffraichir les données
Guy Bonemme


Tue, 11 Sep 2018 13:40:24 GMT

Re: Mes News
news.atoutfox.org

bonne soirée

Guy Bonemme a utilisé son clavier pour écrire :
> Bonjour à tous,

> Suite à une réinstallation, j'essaye de me connecter au serveur
> avec http://www.atoutfox.org ou
> avec http://www.atoutfox.org/nntp.asp

> Réponse impossible de trouver le serveur?

> Merci de me raffraichir les données
> Guy Bonemme

--
a+ Eddy
Merci de partager avec moi votre immense savoir que je me ferai plaisir
d'absorber... il va de soi que je vais vous en laisser un peu
Politesse et savoir vivre oblige ;0)
Tue, 11 Sep 2018 13:40:24 GMT

Re: VFP to SQL
Bonjour

Ce téléchargement est à compléter par la lecture et la compréhension du Document en pdf :
http://catalogue.pearsoned.co.uk/samplechapter/0672326493.pdf
et en fin du document il y a l explication de l utilisation de Cursors (via les tables SQL)
qui faciliter les liens des champs avec les contrôlés dans les formulaire.

cordialement


Mon, 10 Sep 2018 13:40:24 GMT

Re: http://www.universalthread.com/
C'est devenu https://www.levelextreme.com/


Wed, 05 Sep 2018 13:40:24 GMT

Re: http://www.universalthread.com/
Bonjour
je trouve ceci
https://support.west-wind.com/Thread4YI0WXEJP.wwt
Franck


Le 05/09/2018 à 03:03, eddymaue a écrit :
> allo,
>
> savez-vous ce qui se passe .... page blanche pas de redirection
>
> est-ce que le site est mort ?
>
> a+ eddy
>

Wed, 05 Sep 2018 13:40:24 GMT

http://www.universalthread.com/
allo,

savez-vous ce qui se passe .... page blanche pas de redirection

est-ce que le site est mort ?

a+ eddy

--
a+ Eddy
Merci de partager avec moi votre immense savoir que je me ferai plaisir
d'absorber... il va de soi que je vais vous en laisser un peu
Politesse et savoir vivre oblige ;0)
Tue, 04 Sep 2018 13:40:24 GMT

Re: petit souci
[vfp]
*voilà j'avais oublié ce truc

Wait Window EmInputBox("Exemple : MaVariable = 5","Local as
string",'ll')

*
/¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
EmInputBox
* / Eddy Maue a+ -- Créer le : 2018-09-03
Procedure EmInputBox
Lparameters tcTitre,tcCaption, tcDefaultValue

Private gcRetVal
m.gcRetVal = ""

Local loFrm As Form
loFrm = Createobject("clssEMInputBox",tcTitre,tcCaption,
tcDefaultValue)
loFrm.Show(1)

Return gcRetVal
Endproc && EmInputBox





*If Not Empty(lo.cRetValue)


**************************************************
*-- Auteur : Eddy Maue
*-- Form: form1 (c:\vfp\dev\test_EmInputBox.scx)
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 09/02/18 06:36:02 PM
*

Define Class clssEMInputBox As Form

AutoCenter= .T.
WindowType= 1 && modal
Top = -1
Left = 0
Height = 108
Width = 289
DoCreate = .T.
Caption = "EmInputBox : cDialogCaption"
cTitre = ""
cCaption = ""
cRetvalue = ""
Name = "Form1"

*
--------------------------------------------------------------------------------
Add Object lblPromptInput As Label With ;
AutoSize = .T., ;
Caption = "cInputPrompt ", ;
Height = 17, ;
Left = 5, ;
Top = 12, ;
Width = 78, ;
Name = "lblPromptInput "

*
--------------------------------------------------------------------------------
Add Object btnAccept As CommandButton With ;
Top = 72, ;
Left = 107, ;
Height = 27, ;
Width = 84, ;
Anchor = 12, ;
Caption = "Accepter", ;
Default = .T., ;
Name = "btnAccept"


*
--------------------------------------------------------------------------------
Add Object btnAnnuler As CommandButton With ;
Top = 72, ;
Left = 197, ;
Height = 27, ;
Width = 84, ;
Anchor = 12, ;
Cancel = .T., ;
Caption = "Annuler", ;
Name = "btnAnnuler"


*
--------------------------------------------------------------------------------
Add Object edit1 As EditBox With ;
Anchor = 15, ;
Height = 24, ;
Left = 5, ;
ScrollBars = 0, ;
Top = 36, ;
Width = 276, ;
Name = "Edit1"

*
--------------------------------------------------------------------------------
*
--------------------------------------------------------------------------------
Procedure ccaption_assign
Lparameters tcCaption

Store m.tcCaption To This.cCaption, This.Caption
Endproc


*
--------------------------------------------------------------------------------
*
--------------------------------------------------------------------------------
Procedure ctitre_assign
Lparameters tcTitre
This.cTitre = tcTitre
This.label1.Caption = tcTitre
Endproc


*
--------------------------------------------------------------------------------
*
--------------------------------------------------------------------------------
Procedure mAccept
Thisform.cRetvalue = Thisform.edit1.Text
Thisform.Release()
Endproc

Procedure Release
m.gcRetVal = This.cRetvalue
Endproc

Procedure Unload
Endproc


*
--------------------------------------------------------------------------------
*
--------------------------------------------------------------------------------
*
--------------------------------------------------------------------------------
Procedure Init
Lparameters tcTitre,tcCaption, tcDefaultValue

Local lsDefault As String
lsDefault = Transform(m.tcDefaultValue)

If Vartype(m.tcCaption)=="C" And Not Empty(m.tcCaption)
This.Caption = m.tcCaption
Endif

If Vartype(m.tcTitre)=="C" And Not Empty(m.tcTitre)
This.lblPromptInput.Caption = m.tcTitre
Endif

If Vartype(m.lsDefault)=="C" And Not Empty(m.lsDefault)
This.edit1.Value = Transform(m.lsDefault)
EndIf

this.edit1.setfocus()
this.edit1.selstart = 3000
Endproc


Procedure mAnnuler()

Thisform.Release()

Endproc


Procedure btnAccept.Click
Thisform.mAccept()
Endproc


Procedure btnAnnuler.Click()
Thisform.cRetvalue = ""
Thisform.Release()
Endproc

Procedure QueryUnload()
Thisform.cRetvalue = ""
Thisform.Release
Endproc



Enddefine
*
*-- EndDefine: form1
**************************************************
[vfp/]

--
a+ Eddy
Merci de partager avec moi votre immense savoir que je me ferai plaisir
d'absorber... il va de soi que je vais vous en laisser un peu
Politesse et savoir vivre oblige ;0)
Mon, 03 Sep 2018 13:40:24 GMT

Re: petit souci
Salut Eddy,
C'est normal, puisqu'elle est releasée.
Tu peux mettre ta variable en privée ou locale, et laisser ton
formulaire en modal. Remplace simplement les 3 thisform.release, par
thisform.hide(). Le code va alors continuer lors du clic sur les boutons
et ta variable lo sera remplie. Il faut quand même la tester pour le cas
d'appui sur la croix de fermeture, dans ce cas, il me semble qu'elle
vaut null.
Cdlt,
JC



Le 03/09/2018 à 02:13, eddymaue a écrit :
> bonsoir
>
> Public lo
>
> lo = Createobject("EMImputBox","Exemple : MaVariable = 5","Local as
> string",6)
> lo.show()
>
> Set Step On
> lcRetValue = lo.cRetValue
>
> la varible lo n'existe plus au retour du formulaire modal pourtant elle
> est publique
>
> une idée
>
> a+ eddy
>
>
> voilà le code
>
> Public lo
>
> lo = Createobject("EMImputBox","Exemple : MaVariable = 5","Local as
> string",6)
> lo.show()
>
> Set Step On
> lcRetValue = lo.cRetValue
>
>
> *If Not Empty(lo.cRetValue)
>
>
> **************************************************
> *-- Auteur     :  Eddy Maue
> *-- Form:         form1 (c:\vfp\dev\test_emimputbox.scx)
> *-- ParentClass:  form
> *-- BaseClass:    form
> *-- Time Stamp:   09/02/18 06:36:02 PM
> *
>
> Define Class EMImputBox As Form
>
>    AutoCenter= .T.
>    WindowType= 1 && modal
>    Top = -1
>    Left = 0
>    Height = 108
>    Width = 289
>    DoCreate = .T.
>    Caption = "EmImputBox : cDialogCaption"
>    *-- XML Metadata for customizable properties
>    * _memberdata = [> type="property" favorites="True"/>> display="cTitre"/>> display="cCaption"/>> display="cCaption_Assign"/>> display="cTitre_Assign"/>> display="cRetValue"/>> display="mAnnuler"/>> display="mAccept"/>]
>    cTitre = ""
>    cCaption = ""
>    cRetvalue = ""
>    Name = "Form1"
>
>
>    Add Object lblPromptInput As Label With ;
>        AutoSize = .T., ;
>        Caption = "cInputPrompt ", ;
>        Height = 17, ;
>        Left = 5, ;
>        Top = 12, ;
>        Width = 78, ;
>        Name = "lblPromptInput "
>
>
>    Add Object btnAccept As CommandButton With ;
>        Top = 72, ;
>        Left = 107, ;
>        Height = 27, ;
>        Width = 84, ;
>        Anchor = 12, ;
>        Caption = "Accepter", ;
>        Default = .T., ;
>        Name = "btnAccept"
>
>
>    Add Object btnAnnuler As CommandButton With ;
>        Top = 72, ;
>        Left = 197, ;
>        Height = 27, ;
>        Width = 84, ;
>        Anchor = 12, ;
>        Cancel = .T., ;
>        Caption = "Annuler", ;
>        Name = "btnAnnuler"
>
>
>    Add Object edit1 As EditBox With ;
>        Anchor = 15, ;
>        Height = 24, ;
>        Left = 5, ;
>        ScrollBars = 0, ;
>        Top = 36, ;
>        Width = 276, ;
>        Name = "Edit1"
>
>
>    Procedure ccaption_assign
>        Lparameters tcCaption
>
>        Store m.tcCaption To This.cCaption, This.Caption
>    Endproc
>
>
>    Procedure ctitre_assign
>        Lparameters tcTitre
>        This.cTitre = tcTitre
>        This.label1.Caption = tcTitre
>    Endproc
>
>
>    Procedure mAccept
>        Thisform.cRetvalue = Thisform.edit1.Text
>        Thisform.Release()
>    Endproc
>
>
>    Procedure Unload
>        Return This.cRetvalue
>    Endproc
>
>
>    Procedure Init
>        Lparameters  tcTitre,tcCaption, tcDefaultValue
>
>        Local lsDefault As string
>        lsDefault = Transform(m.tcDefaultValue)
>
>        If Vartype(m.tcCaption)=="C" And Not Empty(m.tcCaption)
>            This.Caption = m.tcCaption
>        Endif
>
>        If Vartype(m.tcTitre)=="C" And Not Empty(m.tcTitre)
>            This.lblPromptInput.Caption = m.tcTitre
>        Endif
>
>        If Vartype(m.lsDefault)=="C" And Not Empty(m.lsDefault)
>            This.edit1.Value = Transform(m.lsDefault)
>        Endif
>    Endproc
>
>
>    Procedure mAnnuler()
>
>        thisform.Release()
>
>    Endproc
>
>
>    Procedure btnAccept.Click
>        Thisform.mAccept()
>    Endproc
>
>
>    Procedure btnAnnuler.Click()
>        Thisform.cRetvalue = ""
>        Thisform.Release()
>    Endproc
>
>
> Enddefine
> *
> *-- EndDefine: form1
> **************************************************
>

Mon, 03 Sep 2018 13:40:24 GMT

Re: petit souci
ok j'essaie cela

merci Jean-Claude

a+ Eddy

Jean-Claude Rivière a pensé très fort :
> Salut Eddy,
> C'est normal, puisqu'elle est releasée.
> Tu peux mettre ta variable en privée ou locale, et laisser ton formulaire en
> modal. Remplace simplement les 3 thisform.release, par thisform.hide(). Le
> code va alors continuer lors du clic sur les boutons et ta variable lo sera
> remplie. Il faut quand même la tester pour le cas d'appui sur la croix de
> fermeture, dans ce cas, il me semble qu'elle vaut null.
> Cdlt,
> JC

> Le 03/09/2018 à 02:13, eddymaue a écrit :
>> bonsoir
>>
>> Public lo
>>
>> lo = Createobject("EMImputBox","Exemple : MaVariable = 5","Local as
>> string",6)
>> lo.show()
>>
>> Set Step On
>> lcRetValue = lo.cRetValue
>>
>> la varible lo n'existe plus au retour du formulaire modal pourtant elle est
>> publique
>>
>> une idée
>>
>> a+ eddy
>>
>> voilà le code
>>
>> Public lo
>>
>> lo = Createobject("EMImputBox","Exemple : MaVariable = 5","Local as
>> string",6)
>> lo.show()
>>
>> Set Step On
>> lcRetValue = lo.cRetValue
>>
>> *If Not Empty(lo.cRetValue)
>>
>> **************************************************
>> *-- Auteur     :  Eddy Maue
>> *-- Form:         form1 (c:\vfp\dev\test_emimputbox.scx)
>> *-- ParentClass:  form
>> *-- BaseClass:    form
>> *-- Time Stamp:   09/02/18 06:36:02 PM
>> *
>>
>> Define Class EMImputBox As Form
>>
>>    AutoCenter= .T.
>>    WindowType= 1 && modal
>>    Top = -1
>>    Left = 0
>>    Height = 108
>>    Width = 289
>>    DoCreate = .T.
>>    Caption = "EmImputBox : cDialogCaption"
>>    *-- XML Metadata for customizable properties
>>    * _memberdata = [>> favorites="True"/>>> name="ccaption" display="cCaption"/>>> display="cCaption_Assign"/>>> display="cTitre_Assign"/>>> display="cRetValue"/>>> display="mAnnuler"/>>> display="mAccept"/>]
>>    cTitre = ""
>>    cCaption = ""
>>    cRetvalue = ""
>>    Name = "Form1"
>>
>>    Add Object lblPromptInput As Label With ;
>>        AutoSize = .T., ;
>>        Caption = "cInputPrompt ", ;
>>        Height = 17, ;
>>        Left = 5, ;
>>        Top = 12, ;
>>        Width = 78, ;
>>        Name = "lblPromptInput "
>>
>>    Add Object btnAccept As CommandButton With ;
>>        Top = 72, ;
>>        Left = 107, ;
>>        Height = 27, ;
>>        Width = 84, ;
>>        Anchor = 12, ;
>>        Caption = "Accepter", ;
>>        Default = .T., ;
>>        Name = "btnAccept"
>>
>>    Add Object btnAnnuler As CommandButton With ;
>>        Top = 72, ;
>>        Left = 197, ;
>>        Height = 27, ;
>>        Width = 84, ;
>>        Anchor = 12, ;
>>        Cancel = .T., ;
>>        Caption = "Annuler", ;
>>        Name = "btnAnnuler"
>>
>>    Add Object edit1 As EditBox With ;
>>        Anchor = 15, ;
>>        Height = 24, ;
>>        Left = 5, ;
>>        ScrollBars = 0, ;
>>        Top = 36, ;
>>        Width = 276, ;
>>        Name = "Edit1"
>>
>>    Procedure ccaption_assign
>>        Lparameters tcCaption
>>
>>        Store m.tcCaption To This.cCaption, This.Caption
>>    Endproc
>>
>>    Procedure ctitre_assign
>>        Lparameters tcTitre
>>        This.cTitre = tcTitre
>>        This.label1.Caption = tcTitre
>>    Endproc
>>
>>    Procedure mAccept
>>        Thisform.cRetvalue = Thisform.edit1.Text
>>        Thisform.Release()
>>    Endproc
>>
>>    Procedure Unload
>>        Return This.cRetvalue
>>    Endproc
>>
>>    Procedure Init
>>        Lparameters  tcTitre,tcCaption, tcDefaultValue
>>
>>        Local lsDefault As string
>>        lsDefault = Transform(m.tcDefaultValue)
>>
>>        If Vartype(m.tcCaption)=="C" And Not Empty(m.tcCaption)
>>            This.Caption = m.tcCaption
>>        Endif
>>
>>        If Vartype(m.tcTitre)=="C" And Not Empty(m.tcTitre)
>>            This.lblPromptInput.Caption = m.tcTitre
>>        Endif
>>
>>        If Vartype(m.lsDefault)=="C" And Not Empty(m.lsDefault)
>>            This.edit1.Value = Transform(m.lsDefault)
>>        Endif
>>    Endproc
>>
>>    Procedure mAnnuler()
>>
>>        thisform.Release()
>>
>>    Endproc
>>
>>    Procedure btnAccept.Click
>>        Thisform.mAccept()
>>    Endproc
>>
>>    Procedure btnAnnuler.Click()
>>        Thisform.cRetvalue = ""
>>        Thisform.Release()
>>    Endproc
>>
>> Enddefine
>> *
>> *-- EndDefine: form1
>> **************************************************
>>

--
a+ Eddy
Merci de partager avec moi votre immense savoir que je me ferai plaisir
d'absorber... il va de soi que je vais vous en laisser un peu
Politesse et savoir vivre oblige ;0)
Mon, 03 Sep 2018 13:40:24 GMT

petit souci
bonsoir

Public lo

lo = Createobject("EMImputBox","Exemple : MaVariable = 5","Local as
string",6)
lo.show()

Set Step On
lcRetValue = lo.cRetValue

la varible lo n'existe plus au retour du formulaire modal pourtant elle
est publique

une idée

a+ eddy


voilà le code

Public lo

lo = Createobject("EMImputBox","Exemple : MaVariable = 5","Local as
string",6)
lo.show()

Set Step On
lcRetValue = lo.cRetValue


*If Not Empty(lo.cRetValue)


**************************************************
*-- Auteur : Eddy Maue
*-- Form: form1 (c:\vfp\dev\test_emimputbox.scx)
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 09/02/18 06:36:02 PM
*

Define Class EMImputBox As Form

AutoCenter= .T.
WindowType= 1 && modal
Top = -1
Left = 0
Height = 108
Width = 289
DoCreate = .T.
Caption = "EmImputBox : cDialogCaption"
*-- XML Metadata for customizable properties
* _memberdata = [type="property" favorites="True"/>display="cTitre"/>display="cCaption"/>display="cCaption_Assign"/>display="cTitre_Assign"/>display="cRetValue"/>display="mAnnuler"/>display="mAccept"/>]
cTitre = ""
cCaption = ""
cRetvalue = ""
Name = "Form1"


Add Object lblPromptInput As Label With ;
AutoSize = .T., ;
Caption = "cInputPrompt ", ;
Height = 17, ;
Left = 5, ;
Top = 12, ;
Width = 78, ;
Name = "lblPromptInput "


Add Object btnAccept As CommandButton With ;
Top = 72, ;
Left = 107, ;
Height = 27, ;
Width = 84, ;
Anchor = 12, ;
Caption = "Accepter", ;
Default = .T., ;
Name = "btnAccept"


Add Object btnAnnuler As CommandButton With ;
Top = 72, ;
Left = 197, ;
Height = 27, ;
Width = 84, ;
Anchor = 12, ;
Cancel = .T., ;
Caption = "Annuler", ;
Name = "btnAnnuler"


Add Object edit1 As EditBox With ;
Anchor = 15, ;
Height = 24, ;
Left = 5, ;
ScrollBars = 0, ;
Top = 36, ;
Width = 276, ;
Name = "Edit1"


Procedure ccaption_assign
Lparameters tcCaption

Store m.tcCaption To This.cCaption, This.Caption
Endproc


Procedure ctitre_assign
Lparameters tcTitre
This.cTitre = tcTitre
This.label1.Caption = tcTitre
Endproc


Procedure mAccept
Thisform.cRetvalue = Thisform.edit1.Text
Thisform.Release()
Endproc


Procedure Unload
Return This.cRetvalue
Endproc


Procedure Init
Lparameters tcTitre,tcCaption, tcDefaultValue

Local lsDefault As string
lsDefault = Transform(m.tcDefaultValue)

If Vartype(m.tcCaption)=="C" And Not Empty(m.tcCaption)
This.Caption = m.tcCaption
Endif

If Vartype(m.tcTitre)=="C" And Not Empty(m.tcTitre)
This.lblPromptInput.Caption = m.tcTitre
Endif

If Vartype(m.lsDefault)=="C" And Not Empty(m.lsDefault)
This.edit1.Value = Transform(m.lsDefault)
Endif
Endproc


Procedure mAnnuler()

thisform.Release()

Endproc


Procedure btnAccept.Click
Thisform.mAccept()
Endproc


Procedure btnAnnuler.Click()
Thisform.cRetvalue = ""
Thisform.Release()
Endproc


Enddefine
*
*-- EndDefine: form1
**************************************************

--
a+ Eddy
Merci de partager avec moi votre immense savoir que je me ferai plaisir
d'absorber... il va de soi que je vais vous en laisser un peu
Politesse et savoir vivre oblige ;0)
Sun, 02 Sep 2018 13:40:24 GMT

Re: Tester l'=c3=a9criture en cours d'un fichier TXT
Des chefs vous êtes!

Merci infiniement à vous deux ! Je prends.

Cela me servira toujours, la méthode de Rapido68 a été très fructueuse mais cette gestion un peu plus poussée des erreurs est à mettre en place !

Merci beaucoup! Bonne journée et bon week end !


Fri, 17 Aug 2018 13:40:24 GMT

Re: Tester l'=c3=a9criture en cours d'un fichier TXT
Le 16/08/2018 à 16:48, HORTY a écrit :
> j avais peur de la gestion des erreurs

Alors c'est l'occasion de tester un traitement d'erreur un peu plus poussé !

LOCAL ll_fichier_bloque AS Logical, ln_nbre_tentatives_ouverture AS number, ;
ln_retour_fopen AS number
ll_fichier_bloque = .T.
ln_nbre_tentatives_ouverture = 0
DO WHILE m.ll_fichier_bloque AND m.ln_nbre_tentatives_ouverture <20
TRY
ln_retour_fopen =FOPEN(m.TFIC_PARAM,12)
IF m.ln_retour_fopen<0
WAIT windows "Fichier bloqué" TIMEOUT 1
ln_nbre_tentatives_ouverture = m.ln_nbre_tentatives_ouverture + 1
ELSE
FCLOSE(m.ln_retour_fopen)
WAIT windows "Fichier debloqué" NOWAIT
ll_fichier_bloque = .F.
ENDIF
CATCH
* FOPEN a renvoyé une erreur : c'est grave !
WAIT WINDOWS "Erreur tentative d'ouverture du fichier texte"
ENDTRY
ENDDO && DO WHILE m.ll_fichier_bloque AND ...
IF m.ll_fichier_bloque = .F.
COPY FILE (m.TFIC_PARAM) TO (dossier de destination)
ENDIF

Bonne soirée !
Jean à Grenoble
Thu, 16 Aug 2018 13:40:24 GMT

Re: Tester l'écriture en cours d'un fichier TXT
J'y ai pensé mais j avais peur de la gestion des erreurs. Merci beaucoup on va tester :)

Adorable d'y avoir pris du temps et d'avoir répondu.

Cordialement


Thu, 16 Aug 2018 13:40:24 GMT

Re: Tester l'écriture en cours d'un fichier TXT
Bonjour, essayez le code suivant pour savoir si le fichier est toujours ouvert avant de le copier.


NF=FOPEN(TFIC_PARAM,12)
IF NF<0
WAIT windows "Fichier bloqué" NOWAIT
ELSE
FCLOSE(NF)
WAIT windows "Fichier debloqué" NOWAIT
COPY FILE (TFIC_PARAM) TO (dossier de destination)
ENDIF



Thu, 16 Aug 2018 13:40:24 GMT

Tester l'écriture en cours d'un fichier TXT
Bonjour,

comme il y a quelques années je reviens vers vous pour une aide :

J'ai un automate qui scrute un dossier pour 'avaler' un fichier txt qui doit y être déposé.

/!\ Je n'ai pas la possibilité de modifier le programme qui envoie le fichier TXT dans ce dossier

Je dois attendre que le fichier en cours de création soit 'libéré' pour l'avaler. Je me suis donc dit que tester sa taille à une intervalle donnée devrait suffire.

Malheureusement, quand on essaie avec une copie 'simple' du fichier par windows tout fonctionne mais quand c'est un programme extérieur qui fait une écriture à distance, le poids n'est pas 'raffraichis' par windows.

Voici mon code :
[vfp]
*RECUPERER LA TAILLE DU FICHIER A LINSTANT T
tempo1 = ADIR(aFiles,"&TFIC_PARAM")

TAILLE_FICHIER = aFiles(1,2)

*FAIRE UNE TEMPO DE 8 SECONDES
WAIT windows "Fichier détecté, test écriture en cours du fichier..." TIMEOUT 8

*RAFFRAICHIR LE TABLEAU CONTENANT LE POIDS DU FICHIER
tempo2 = ADIR(bFiles,"&TFIC_PARAM")

*SI LA TAILLE A CHANGé ON SORT !
IF bFiles(1,2) # TAILLE_FICHIER
WAIT windows "Fichier en cours d'écriture... " NOWAIT
INKEY(1)
RETURN
ENDIF
[/vfp]

Je me répète, ça fonctionne très bien pour une copie de fichier via l'explorateur windows, mais avec une écriture à distance non... Le poids du fichier n'évolue pas si on ne rafraichis pas manuellement le dossier, un problème pour un fonctionnement autonome.

Merci d'avance si vous avez une idée :)

Cdt


Thu, 16 Aug 2018 13:40:24 GMT

Re: AutoComplete et accents
Ok merci bien Guy


Tue, 07 Aug 2018 13:40:24 GMT

Re: AutoComplete et accents
Le 07/08/2018, JM ANDRÉ a supposé :
> Bonjour,
> Je vous propose finalement une solution pour contourner l'obstacle du menu
> qui ne s'affiche plus L'idée est de le créer un nouveau menu puis d'affecter
> le choix au champ. Dans votre classe lieu par exemple
> On suppose AutoCompSource défini
> Dans InterActiveChange on appelle une méthode AutoCompAccents
> [VFP]
> LOCAL cLettre
> WITH This
> cLettre = SUBSTR(.Value,.SelStart,1)
> IF INLIST(cLettre,"é","è") && etc.
> *== Recherche dans la table
> .AutoCompAccents(TRIM(.Value))
> ENDIF
> ENDWITH
> RETURN
> ***********************
> AutoCompAccents
> PARAMETERS pVal
> LOCAL nLen, cRet
> *=== On va créer un popup à la place de de l'AutoComp de VFP
> USE HOME(7)+"autocomp.dbf" AGAIN IN 0 ALIAS ACMP
> WITH This
> nLen = LEN(m.pVal)
> SELECT PADL(ACMP.data,20) as cData FROM ACMP ;
> WHERE LOWER(LEFT(ACMP.Data,nLen))= LOWER(m.pVal) ;
> AND TRIM(ACMP.Source) = UPPER(.AutoCompSource) ;
> into CURSOR BCMP ORDER BY cData
> IF RECCOUNT()>0
> *=== création du popup
> ------
> *== récupération de la valeur du Prompt()
> IF !ISNULL(cRet) AND !EMPTY(cRet)
> .Value = TRIM(cRet)
> .SelStart = LEN(TRIM(cRet))
> ENDIF
> ENDIF
> ENDWITH
> USE IN SELECT("ACMP")
> SELECT mon ancien fichier
> RETURN
> [/VFP]
> Nota : Pour le Popup, j'utilise POPMENU sur VFPX qui permet d'afficher
> précisément le popup Inconvénient : comme on passe par l'InterActiveChange,
> l'ancien menu de VFP reste affiché le temps du choix dans le nouveau menu
> Jean-Michel André Ps : Guy, impossible de charger vos images
> lorientalesatorangepointfr
>
>
>
>
> ---
> Cet email a fait l'objet d'une analyse antivirus par AVG.
> http://www.avg.com

Jean Michel,
J'ai ajouté ton adresse email cela devrait fonctionner

--
Guy BONEMME
Atoutfox
BEfox
Tue, 07 Aug 2018 13:40:24 GMT

Re: AutoComplete et accents
Bonjour,
Je vous propose finalement une solution pour contourner l'obstacle du menu qui ne s'affiche plus
L'idée est de le créer un nouveau menu puis d'affecter le choix au champ.
Dans votre classe lieu par exemple
On suppose AutoCompSource défini
Dans InterActiveChange on appelle une méthode AutoCompAccents
[VFP]
LOCAL cLettre
WITH This
cLettre = SUBSTR(.Value,.SelStart,1)
IF INLIST(cLettre,"é","è") && etc.
*== Recherche dans la table
.AutoCompAccents(TRIM(.Value))
ENDIF
ENDWITH
RETURN
***********************
AutoCompAccents
PARAMETERS pVal
LOCAL nLen, cRet
*=== On va créer un popup à la place de de l'AutoComp de VFP
USE HOME(7)+"autocomp.dbf" AGAIN IN 0 ALIAS ACMP
WITH This
nLen = LEN(m.pVal)
SELECT PADL(ACMP.data,20) as cData FROM ACMP ;
WHERE LOWER(LEFT(ACMP.Data,nLen))= LOWER(m.pVal) ;
AND TRIM(ACMP.Source) = UPPER(.AutoCompSource) ;
into CURSOR BCMP ORDER BY cData
IF RECCOUNT()>0
*=== création du popup
------
*== récupération de la valeur du Prompt()
IF !ISNULL(cRet) AND !EMPTY(cRet)
.Value = TRIM(cRet)
.SelStart = LEN(TRIM(cRet))
ENDIF
ENDIF
ENDWITH
USE IN SELECT("ACMP")
SELECT mon ancien fichier
RETURN
[/VFP]
Nota : Pour le Popup, j'utilise POPMENU sur VFPX qui permet d'afficher précisément le popup
Inconvénient : comme on passe par l'InterActiveChange, l'ancien menu de VFP reste affiché le temps du choix dans le nouveau menu
Jean-Michel André
Ps : Guy, impossible de charger vos images
lorientalesatorangepointfr



Tue, 07 Aug 2018 13:40:24 GMT

Re: Error in using VFPwinsock for sending mail from VFP form.
Bonjour,

Peut-être Francis peur ajouter une 'réception de défaut' de informer une petit peut plus claire en ce cas? Cas on utilisse Gmail avac VFPWinsock.

CLM

Koen


Tue, 07 Aug 2018 13:40:24 GMT

Re: calcul de distance entre 2 points gps
Mais ceci fonctionne toujours.
[VFP]? GetDistanceOnly('Quebec,Quebec','Montreal,Quebec')
Procedure GetDistanceOnly(tcFrom,tcTo)
*_Screen.MousePointer = MOUSE_HOURGLASS
*+++++++++ *** Changed 2015/02/20 new way of getting getting distance coordinates, more accurate ++++++++++++++++++++
sQuery = "http://dev.virtualearth.net/REST/V1/Routes/Driving?o=xml&wp.0=[tcFrom]&wp.1=[tcTo]&distanceUnit=mi&avoid=minimizeTolls&optimize=distance&key=AioySnPWc9XTkxuHepelADYwDt_5gGnlHDC638UJq8tCdpLOmXAbJrnJ4bQILFro"
sQuery = Strtran(sQuery,'[tcFrom]',tcFrom)
sQuery = Strtran(sQuery,'[tcTo]',tcTo)
*sQuery = Strtran(sQuery,'[BING_MAP_KEY]','AioySnPWc9XTkxuHepelADYwDt_5gGnlHDC638UJq8tCdpLOmXAbJrnJ4bQILFro')
xhrRequest= Createobject("Msxml2.ServerXMLHTTP")
xhrRequest.Open ("GET", sQuery, .F.)
xhrRequest.Send()
oXML=Createobject('msxml.domdocument')
oXML.LoadXML(xhrRequest.ResponseText)
m.ixnDistance= oXML.selectSingleNode("/Response/ResourceSets/ResourceSet/Resources/Route/TravelDistance").XML
lnResponse=Strextract(m.ixnDistance,">","")
Return lnResponse
Endproc[/VFP]


Mon, 06 Aug 2018 13:40:24 GMT

Re: calcul de distance entre 2 points gps
Depuis le 16 juillet 2018 Google force maintenant à créer un compte en ligne et facture à chaque requete. Donc la clef dans le code n'est plus valide.


Mon, 06 Aug 2018 13:40:24 GMT

Re: Error in using VFPwinsock for sending mail from VFP form.
Hi Saurabh

Gmail no longer allows the estmp to auth login simple.
It requires a session in tls / ssl.

Vfpwinsock does not support (tls/sslt) this.
You cannot use smtp.gmail.com with VfpWinsock.

Regards
GLS


Mon, 06 Aug 2018 13:40:24 GMT

Error in using VFPwinsock for sending mail from VFP form.
Respected Senior Members,
I was trying to mail from a form created in VFP9 using the routine VFPwinsock.
For a test try I coded on my send button like-
[ vfp]
If Thisform.CanSendMail
Local loWinSock
loWinSock = Createobject( 'VFP_Winsock_Send_Mail' )
loWinSock.SMTP_host = 'smtp.gmail.com'
loWinSock.From = 'clearcoding@gmail.com'
loWinSock.To = 'saurabh.hom@gmail.com'
loWinSock.Priority = "High"
loWinSock.Subject = "Hello World"
loWinSock.Message = "Hello World"
*loWinsock.Attachment = "c:\temp\mapiecejointe.jpg" && Change This To an existing File On your HD
If Not loWinSock.Send()
? "Error : " + loWinSock.Erreur
Endif
loWinSock = Null
Endif
[/ vfp]

But I got following error message:
Error : <= SGetData : ERROR [530 5.7.0 Must issue a STARTTLS command first. c15-v6sm3265763wmb.2 - gsmtp] -> ERR09 : Expected return was :250

I was told on Foxite forum that this is due to -
'A smtp.monserveurdemail.com use TLS/SLL for comunication.
VFPwinsock class doesn't support TLS/SSL for TCP port 465.'.

I don't have much idea about this.
Since the tool is 100% in VFP I want to use this for mailing. Please help and guide me on the issue.


Mon, 06 Aug 2018 13:40:24 GMT

Re: choisir ce qui apparaît dans le menu "fenêtre"
voila un début de ce que tu aimerais faire

#Define RESIZE_FORM 0x1 && 0001
#Define LOSTFOCUS_FORM 0x2 && 0010
#Define DEACTIVATE_FORM 0X4 && 0100
#define HIDE_FORM 0X8 && 1000

Clear

Public oForm
m.oForm = Createobject("frm1ere")
m.oForm.Show()

**************************************************
*-- Form: form1 (c:\vfp\dev\test_form_hide.scx)
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 08/05/18 02:00:12 PM
*
Define Class frm1ere As Form

left = 300
DoCreate = .T.
Caption = "Form1"
bFrm_hide = 0
Name = "Form1"
windowtype=1


Add Object cmdHideForm As CommandButton With ;
Top = 192, ;
Left = 252, ;
Height = 27, ;
Width = 84, ;
Caption = "Reduire", ;
Name = "cmdHideForm"


Procedure Load
Activate Screen
? "event load" , This.bFrm_hide
Endproc


Procedure Activate
This.bFrm_hide = 0
Activate Screen
? "event Activate" , This.bFrm_hide
Endproc


Procedure Resize
This.bFrm_hide = Bitor(This.bFrm_hide, RESIZE_FORM )
Activate Screen
? "event Resize"
Endproc


Procedure LostFocus
This.bFrm_hide = Bitor(This.bFrm_hide, LOSTFOCUS_FORM )
Activate Screen
? "event LostFocus" , This.bFrm_hide
EndProc

Procedure hide()
This.bFrm_hide = Bitor(This.bFrm_hide, HIDE_FORM )
Activate Screen
? "event Hide" , This.bFrm_hide

endproc


Procedure Deactivate

Activate Screen
This.bFrm_hide = Bitor(This.bFrm_hide, DEACTIVATE_FORM )
? "event Deactivate" , This.bFrm_hide

Public mo

If This.bFrm_hide > 6

Thisform.Enabled = .F.
Thisform.Visible = .F.

Public oFrmReactiver As Form
m.oFrmReactiver = Createobject("FrmReactiver", Thisform )

Endif

Endproc


Procedure cmdHideForm.Click
Thisform.Hide()
Endproc


Enddefine
*
*-- EndDefine: form1
**************************************************

**************************************************
*-- Form: FrmReactiver
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 08/05/18 02:12:12 PM
*
Define Class FrmReactiver As Form
Top = 0
Left = 0
TitleBar= 0
Add Object cmdReactiver As CommandButton With ;
Caption="Afficher le formulaire"

oForm = .Null.

Procedure cmdReactiver.Click()

With Thisform
.oForm.Visible = .T.
.oForm.Enabled = .T.
.oForm.show()
.oform = .null.
Endwith

Release Thisform

Endproc

Procedure Init (oForm)

This.oForm = m.oForm

This.Width= This.cmdReactiver.Width
This.Height = This.cmdReactiver.Height

This.Visible=.T.

Endproc

Enddefine

*
*-- EndDefine: FrmReactiver
**************************************************




jcriv a exposé le 2018-08-02 :
> Merci Greg,
> En effet, le form n'apparait plus dans le menu. Ce qui est marrant, c'est que
> lors de mes recherches, j'ai trouvé des questions exactement inverses :
> comment faire apparaître ces formulaires top level dans le menu "window".
> Hélas, dans mon cas, le formulaire en showwindow 2 n'est plus modal, ce qui
> change tout : tant qu'il est modal, le code est en attente dans le formulaire
> appelant, et n'est libéré qu'au moment du hide du form modal appelé.
> ShowWindow est en lecture seule à l'exécution, et je ne connais pas d'astuce
> pour le rendre accessible en modification - si une telle astuce existe (dans
> ce cas, je l'aurais mis à 2 après le hide, puis ramené à 0 lors des show
> ultérieurs). JC

--
a+ Eddy
L'incompréhensible se réalise toujour avant le compréhensible parce que
tout simplement on ne l'a pas encore assimilé
Sun, 05 Aug 2018 13:40:24 GMT

Re: AutoComplete et accents
Bonjour à vous deux et merci pour vos réponses.
J'ai aussi essayé en bricolant la table autocomp et en en créant une perso (AutoCompSource et AutoCompTable) mais sans résultats.
Un article intéressant pour reproduire le système dans les champs memos par Andy Kramek et Marcia Akins dans le n° de juillet 2004 de FoxTalk 2.0. Donc à part réinventer la roue via un InterActiveChange dans le champ, nous sommes contraints à contourner l'obstacle.
Jean-Michel André



Sun, 05 Aug 2018 13:40:24 GMT

Re: AutoComplete et accents
Guy BONEMME a pensé très fort :
> JM ANDRÉ a exprimé avec précision :
>> Bonjour à tous,
>> Dans un champ, AutoComplete est à 2 (Admet) avec AutoCompSource (aucun) et
>>
ybenam a exposé le 03/08/2018 :
> Bonjour !
> J'ai fait quelques tests et je crains que ce soit encore un "bug" de vfp9.

Bonjour,
Les déductions d'ybenam sont correctes, mais l'on peut détourner le
problème.
Une solution adoptée dans un programme de généalogie en mode édition.
J'utilise des tables auto complete diverses soit:
Nom, Prénoms, lieux, domicile, profession, témoins, qualités.
Remarque les accentuations sont présentes.
Efectuer une recherche directe par ex: Émile ne donnera aucun résultat
autocomplete, bien que présent dans la table.( vue mariage0.jpg)
Il est possible de d'entrer (alt+144) ou en regard du champs concerné
activer l'icône pour afficher la table auto... du champs d'édition.
Le choix peut être fait par un double click dans celle-ci pour
complèter et transférer le choix. l'on peut également corriger ou
effacer des doublons ou erreurs.
(screenshot2) montre l'exemple de la table auto_témoin.
A noter que les tables auto... indexées placent les caractères
accentués
en position correcte (european.mem doit être présent) si on le désire.
Perso je les laisse se placer en fin de fichier ou ils seront dispo
en auto complete (screenshot_1)

3 jpeg dispo sur
https://www.dropbox.com/home/Public

--
Guy BONEMME
Atoutfox
BEfox

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com

Fri, 03 Aug 2018 13:40:24 GMT

Re: traitement d' un fichier html document par visual foxpro
un fichier htm|html peut être ouvert par differentes voies avec visual foxpro:
1.Api shellexecute ou wscript.shell.run...
2.Createobject("internetexlorer.application") et "navigate(your web file)
3.utiliser la classe native de vfp : _hyperlink.vcx
.....
4.
local m.o
m.o=newObject("hyerlonk")
m.o.nvigateto(your htm file)
m.o=null


Fri, 03 Aug 2018 13:40:24 GMT

traitement d' un fichier html document par visual foxpro
Bonjour,

Je viens d' acquérir un petit matériel de laboratoire qui exporte ses résultats sous forme d'un tableau et un texte type html

ma question est comment puis je ouvrir et lire ce ficher html document par visual foxpro ou le convertir en dbf ?

Merci d'avance

Amicalement


Fri, 03 Aug 2018 13:40:24 GMT

Re: AutoComplete et accents
Bonjour !
J'ai fait quelques tests et je crains que ce soit encore un "bug" de vfp9.
Dans votre cas (autocomplete =2 (ou 1) et autocompsource=0 ,autocomptable(aucun), sachez que VFP9 dirige automatiquement la source vers la table
home(7)+"autocomplete.dbf"
si cette table n'existe pas elle est créée par VFP9.
si cette table existe ,elle est utilisée en l'état (les nouveaux enregistrements sont ajoutés aux anciens).
si vous voulez purger le textbox des enregistrements existant,il suffit de "zapper" cette table pour redémarrer à blanc ( ou enlever certains enregistrements inutulement saisis par ex.).
je crains que vfp9 ne prenne en compte que les mots ommençant par des lettres non accentuées (en clair "english characters" uniquement).
les mots commençant par une lettre accentuées sont enregistrés dans la table (ouvrez autocomp.dbf et vérifier) mais ne déclenchent pas la liste.
cette liste semble valable que pour "abcdefghijklmnopqrstuvwxyz" (minuscules ou majuscules).
Si ce cas est avéré il y a lieu d'inscrire ce test comme bug dans vfp9.



Fri, 03 Aug 2018 13:40:24 GMT

Re: choisir ce qui appara=3d3dc3=3d3daet dans le menu "fenêtre"
et en changeant de statégie : créer une datasession avec les données issues de
la base SQL, mettre les forms en datasession private et mettre dans
ThisForm.datasession le numéro de la session de donnée ?

Les données resteraient en mémoire et seuls les écrans seraient chargés à chaque
appel ...

A+
Jean à Grenoble
Fri, 03 Aug 2018 13:40:24 GMT

Re: choisir ce qui apparaît dans le menu "fenêtre"
Dans ce cas, le plus simple est de ne pas utiliser Hide.
Lancer le form chaque fois va quand-meme assez vite ?
Et en plus, l'affaire du menu est reglee



Fri, 03 Aug 2018 13:40:24 GMT

Re: choisir ce qui appara=3dc3=3daet dans le menu "fenêtre"
Merci Jean,
c'était une bonne idée, à tenter : j'ai donc essayé.
... et ça ne fonctionne pas :-)
Je pourrais faire un release, mais il s'agit d'écrans allant chercher des données complexes sur une base sql, et cela prend jusqu'à 1 seconde dans certains cas (je précise : une grosse seconde, c'est long quand ce sont des appels répétitifs).
A l'occasion, je ferai la procédure de création du menu à la volée. Ce n'est pas trop pressé, il y a des années que ça marche ainsi, ça peut bien encore continuer quelques jours... ou quelques semaines...
JC


Thu, 02 Aug 2018 13:40:24 GMT

Re: choisir ce qui apparaît dans le menu "fenêtre"
Merci Greg,
En effet, le form n'apparait plus dans le menu. Ce qui est marrant, c'est que lors de mes recherches, j'ai trouvé des questions exactement inverses : comment faire apparaître ces formulaires top level dans le menu "window".
Hélas, dans mon cas, le formulaire en showwindow 2 n'est plus modal, ce qui change tout : tant qu'il est modal, le code est en attente dans le formulaire appelant, et n'est libéré qu'au moment du hide du form modal appelé.
ShowWindow est en lecture seule à l'exécution, et je ne connais pas d'astuce pour le rendre accessible en modification - si une telle astuce existe (dans ce cas, je l'aurais mis à 2 après le hide, puis ramené à 0 lors des show ultérieurs).
JC


Thu, 02 Aug 2018 13:40:24 GMT

Re: choisir ce qui apparaît dans le menu "fenêtre"
Bonsoir Jean-claude

il faut créer un autre formulaire dans lequel tu vas exécuter ton menu.
Le nouveau formulaire sera la ou est le curseur de ta sourie OU si tu
en décides autrement en renseignant la position désirée

bonne lecture et bon test

[VFP/]
Public oForm as Form

m.oForm = CreateObject("mnxform")
m.oForm.Visible = .t.

Read EVENTS


Define Class mnxform as Form
Desktop = .T.
ShowWindow = 2
DoCreate = .T.
width = 0
height = 0
visible = .t.
Name = "Form1"


Procedure activate
this.afficheMenu()
endproc


Procedure AfficheMenu
lPara tnLeft, tnTop

* *********************************************************
* *
* * 2 août 2018 SHORTCUT_TEST.MPR 20:18:37
* *
* *********************************************************
* *********************************************************
* *
* * Menu Definition
* *
* *********************************************************
*
local lnLeft, lnTop

m.lnLeft = iif( vartype( m.tnLeft ) = "I" , m.tnLeft, mrow() )
m.lnTop = iif( vartype( m.tnTop ) = "I" , m.tnTop , mcol() )



DEFINE POPUP shortcut SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR 1 OF shortcut PROMPT "test1"
DEFINE BAR 2 OF shortcut PROMPT "test2"
DEFINE BAR 3 OF shortcut PROMPT "test3"
DEFINE BAR 4 OF shortcut PROMPT "test4"
DEFINE BAR 5 OF shortcut PROMPT "test5"

ACTIVATE POPUP shortcut

EndProc

enddefine

[VFP]

--
a+ Eddy
L'incompréhensible se réalise toujour avant le compréhensible parce que
tout simplement on ne l'a pas encore assimilé
Thu, 02 Aug 2018 13:40:24 GMT

Re: choisir ce qui apparaît dans le menu "fenêtre"
Salut JC,

J'ignore si la solution suivante te va

ShowWindow = 2 - As top level form



Thu, 02 Aug 2018 13:40:24 GMT

Re: choisir ce qui appara=3dc3=3daet dans le menu "fenêtre"
as-tu essayé ThisForm.enable = .F. en plus du .hide ?

A+
Jean à Grenoble
Thu, 02 Aug 2018 13:40:24 GMT

Re: choisir ce qui appara=c3=aet dans le menu "fenêtre"
J'aurais voulu profiter du menu _msm_windo et de ses avantages, sans avoir à réinventer la roue... Si je me sens motivé, je ferai donc mon propre menu fenêtre qui se remplira selon une propriété de mes forms...
++
JC


Wed, 01 Aug 2018 13:40:24 GMT

Re: choisir ce qui appara=c3=aet dans le menu "fenêtre"
Je n'ai pas tout compris !
mais _screen.forms est une collection qui liste toutes les fenêtres définies;
chaque élément regroupant toutes les propriétés de la form correspondante en
particulier .visible
Ne peux tu pas faire des DEFINE PAD dans un FOR EACH ?

A+
Jean à Grenoble
Wed, 01 Aug 2018 13:40:24 GMT

choisir ce qui apparaît dans le menu "fenêtre"
Bonjour à tous,
Quelqu'un connaitrait-il un moyen d'influer sur le menu fenêtre pour empêcher un formulaire d'y apparaître? Je n'ai pas trouvé de propriété qui pourrait le faire, ou de clause nomenu dans la commande do form...
Pour expliquer : j'ai dans une appli des formulaires "utilitaires" modaux qui, une fois chargés, restent en mémoire pour réutilisation ultérieure. Cependant, je ne veux pas qu'on puisse les sélectionner à partir du menu fenêtres. Ils sont rendus invisibles (avec ThisForm.Hide), mais apparaissent quand même dans la liste.
Ai-je une solution autre que supprimer purement et simplement le menu fenêtre ?

Dans mon code de création du menu complet, j'ai :
[vfp]
DEFINE PAD _msm_windo OF _MSYSMENU PROMPT "Fe\ NEGOTIATE RIGHT, LEFT ;
KEY ALT+N, "" ;
MESSAGE "Manipulation des fenêtres ouvertes"
ON PAD _msm_windo OF _MSYSMENU ACTIVATE POPUP _mwindow
DEFINE POPUP _mwindow MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR _mwi_cascade OF _mwindow PROMPT "Ca\ PICTRES _mwi_cascade ;
MESSAGE "Réorganise les fenêtres en cascade"
[/vfp]

Merci d'avance,
JC


Wed, 01 Aug 2018 13:40:24 GMT

Re: index on padl(proper(name), 240) tag Name candidate

Ok c'est réglé

j,ai comparé les propriétés des 2 formulaires

le form du projet1 est 2- Private Data Session
projet2 était en 1- Default Data Session

là en mettant en 2-Private Data Session je ne vois plus apparaitre la boite de dialog Invalid Key Lenght

index on padl(proper(name), 240) tag Name candidate

fonctionne et donc c'est tout de meme incensé

bref j'aimerais bien la comprendre celle là

dans l'aide il n'est aucunement question de DatatSession

a+ eddy

Invalid key length (Error 112)
If you created an index key that exceeds the following limits, create a shorter index key.

The length of an index key for an index or compiled index (.idx) must be between 1 and 100 characters. The length for a compound index (.cdx) must between 1 and 240 characters.

For certain collating sequences, or when using double-byte character sets (DBCS) characters, each character in the eExpression parameter in the INDEX command uses two characters in the index key. In these cases, the length of eExpression is limited to 120 characters.

If you created an index key with length of 0, make sure the first record of the fields you base the index on contains some data.

When Visual FoxPro creates an index, it evaluates fields in the first record in the table.



une réponse pour eddymaue

Allo,
> salut a tous

> voilà j'ai le probleme suvant

> j,ai 2 fichiers identiques dans 2 projets supposéments identiques

> Projet1
> form.load()

> index on padl(proper(name), 240) tag Name candidate

> Projet2
> Form.load()

> index on padl(proper(name), 120) tag Name candidate

> Le projet2 est une copie du projet1 avec des modifications.

> je n'ai pas touché à méthode Load des 2 formulaires

> et si je dépasse 120 j'ai Invalid Key length

> j'ai fait un build, un cleanup et un refresh

> rien a faire

> bref je cherche et je cherche

> si quelqu'un a une idée

> a+ eddy

--
a+ Eddy
L'incompréhensible se réalise toujour avant le compréhensible parce que
tout simplement on ne l'a pas encore assimilé



Sat, 28 Jul 2018 13:40:24 GMT

index on padl(proper(name), 240) tag Name candidate
salut a tous

voilà j'ai le probleme suvant

j,ai 2 fichiers identiques dans 2 projets supposéments identiques

Projet1
form.load()

index on padl(proper(name), 240) tag Name candidate


Projet2
Form.load()

index on padl(proper(name), 120) tag Name candidate

Le projet2 est une copie du projet1 avec des modifications.

je n'ai pas touché à méthode Load des 2 formulaires

et si je dépasse 120 j'ai Invalid Key length

j'ai fait un build, un cleanup et un refresh

rien a faire

bref je cherche et je cherche

si quelqu'un a une idée

a+ eddy





--
a+ Eddy
L'incompréhensible se réalise toujour avant le compréhensible parce que
tout simplement on ne l'a pas encore assimilé
Sat, 28 Jul 2018 13:40:24 GMT

Re: AutoComplete et accents
JM ANDRÉ a exprimé avec précision :
> Bonjour à tous,
> Dans un champ, AutoComplete est à 2 (Admet) avec AutoCompSource (aucun) et
> AutoCompTable (aucun). Au fur et à mesure des saisies la table se crée et
> lorsque l'on tape les premières lettres la liste déroulante s'affiche pour
> que l'on choisisse. Dès qu'on tape une lettre accentuée la liste s'efface
> rendant la fonction inutile. Quelqu'un aurait-il une soluce pour que cela
> fonctionne ? Merci d'avance Jean-Michel André Ventabren
>
>
>
>
> ---
> Cet email a fait l'objet d'une analyse antivirus par AVG.
> http://www.avg.com

+2
Pour avoir cherché longtemps et rien trouvé, je suis aussi preneur.
Petit inconvénient, (l'erreur de frappe s'enregistre il faut donc
prévoir un système de correction ou d'effacement.

--
Guy BONEMME
Atoutfox
BEfox
Fri, 27 Jul 2018 13:40:24 GMT

Reproduction totale ou partielle strictement interdite • Propulsé par KitWeb • Hébergement Wan AgainValid XHTML 1.0 Transitional