ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Forum AtoutFox : Re: RECHERCHE INCREMENTIELLE ET LISTES DEROULANTES   

Sujet
... 11 12 13 14 15 16 17 18 19 20 ...
Imprimante d'étiquettes Karine - 29/08/2012 15h56
CORRECTEUR ORTHOGRAPHIQUE JpG - 28/08/2012 09h28
Probleme affichage pendant VFP9 alahem1 - 27/08/2012 00h00
Erreur Classe Non enregistrée Karine - 22/08/2012 10h40
un élément d'un élément d'une collection comme controlsource Jean à Grenoble - 22/08/2012 08h48
Renseignement d'une table de SAGE SAARI à partir d'une application VPF jkean - 17/08/2012 15h08
Pour ceux que cela interesse. Une patche pour VFP9 SP2 Mike Gagnon - 17/08/2012 11h36
VFP et Windows Server 2012 ? Luc - 17/08/2012 11h32
[FIC]foxincloud 1.25 JLC - 17/08/2012 09h16
source d'une vue : table ou alias ? Jean à Grenoble - 13/08/2012 15h19
_videoplayer olivier b - 13/08/2012 14h44
Windows store OlivierH - 10/08/2012 08h08
trie inversé d'un tableau joe.mojito - 08/08/2012 11h32
Lenteur Bonaventure Nteme - 08/08/2012 09h58
passage d'un tableau en paramètre par référence dans un WITH Jean à Grenoble - 08/08/2012 07h08
RECHERCHE INCREMENTIELLE ET LISTES DEROULANTES proxifox - 07/08/2012 14h44
combinaisons des éléments d'un tableau FoxInCloud - 06/08/2012 16h44
fichier fpt "détruit" partiellement vfp9 sp2 - win 7- 64 bits gardener - 02/08/2012 10h24
GOOGLE MAPS luckyagi - 01/08/2012 16h36
Retour Bonaventure Nteme - 31/07/2012 09h49
... 11 12 13 14 15 16 17 18 19 20 ...

rss Flux RSS des derniers messages

Vous devez vous identifier pour pouvoir poser une question ou répondre.

ven. 17 août 2012, 16h32
proxifox
France France

atoutfox.public.association

Re: RECHERCHE INCREMENTIELLE ET LISTES DEROULANTES

Merci pour toutes vos remarques. Comme je n'ai toujours pas trouvé ce qui clochait dans le code initial (basé sur une classe spécifique), j'ai finalement réécrit tout le code, et je pense être arrivé à une solution à peu près satisfaisante: 1- je n'ai besoin que d'un seul champ nom dans ma dernière version 2- Les noms s'affichent bien au fur et à mesure que j'entre des caractères 3- Et surtout mes combo box sont correctement rafraichies.
Je joins ce code pour info, après tout cela pourrait servir dans une autre application. Il reste peut-être des références à un 'clic droit', puisqu'un clic droit dans le champ nom permet d'afficher une grille avec la liste des clients à partir du nom saisi.

txt_nomcli.init:
THIS.VALUE = clients.nom


txt_nomcli.gotfocus:
*
* --- MODIFICATION - P ROUGERIE - Le 10/08/2012
* ---   ==> Ajout d'un nouveau champ 'txt_nomcli'
THISFORM.oldnomcli = THIS.VALUE
THISFORM.nb_keyed_in = 0
* --- FIN MODIF 20120810


txt_nomcli.keypress:
* -----------------------------------------------------------------------------
*  Met à jour le nombre de caractères entrés dans le champ nom (nb_keyed_in)
*  On tient compte de la touche retour (127)
* -----------------------------------------------------------------------------
LPARAMETERS nKeyCode, nShiftAltCtrl

IF nkeycode>28 AND nkeycode<>127
    THISFORM.nb_keyed_in = THISFORM.nb_keyed_in + 1
ENDIF

IF nkeycode=127 AND THISFORM.nb_keyed_in > 0
    THISFORM.nb_keyed_in = THISFORM.nb_keyed_in - 1
ENDIF


txt_nomcli.interactivechange
*
* --- MODIFICATION: P ROUGERIE - Le 10/08/2012
* ---   ==> Si la valeur du champ 'nom' a changé, on recherche
* ---       dans la table 'clients' le premier nom correspondant
* ---       (= le premier >= à ce qui a été saisi)
LOCAL lc_chaine_a_chercher                  && nom sais

IF THIS.VALUE <> THISFORM.oldnomcli
    SET EXACT OFF
*!*     THISFORM.nb_keyed_in = THISFORM.nb_keyed_in + 1
    lc_chaine_a_chercher = LEFT(THIS.VALUE,THISFORM.nb_keyed_in)
    WAIT "nbcar: " + STR(THISFORM.nb_keyed_in,2) + " A chercher: " + lc_chaine_a_chercher WINDOW
    IF SEEK(PADR(gcodeagence,3) + lc_chaine_a_chercher,"clients","AGCENOM")
        WAIT "Chaine trouvee" WINDOW
        SELECT clients
        GO RECNO()
        THISFORM.txtcodclien.VALUE = clients.codclien
        THISFORM.text_liste1.textb1.VALUE = clients.nom
        THISFORM.txt_nomcli.VALUE=clients.nom
        THISFORM.REFRESH
    ELSE
        WAIT "Chaine non trouvee" WINDOW
*!*         THISFORM.nb_keyed_in = THISFORM.nb_keyed_in - 1
        THISFORM.REFRESH
    ENDIF
    THISFORM.txt_nomcli.SELSTART = THISFORM.nb_keyed_in
ENDIF


txt_nomcli.valid
*
* --- MODIFICATION: P ROUGERIE - Le 10/08/2012
* ---   ==> On ne rafraichit pas les données quand on est sur un 'clic droit'
* ---   ==> Sinon on teste l'existence du nom client saisi
* ---           Si il n'existe pas dans la table, on revient au client
* ---           saisi précédemment
IF THIS.VALUE <> THISFORM.oldnomcli ;
AND gb_rightclick = .F.
    IF SEEK(PADR(gcodeagence,3) + ALLTRIM(THIS.VALUE),"clients","AGCENOM")
        SELECT clients
        GO RECNO()
        THISFORM.txt_nomcli.VALUE = clients.nom
        THISFORM.txtcodclien.VALUE = clients.codclien
        THISFORM.text_liste1.textb1.VALUE = clients.nom
        THISFORM.REFRESH
    ELSE
        MESSAGEBOX("Ce nom n'existe pas.",0+64,"Avertissement")
        IF SEEK(PADR(gcodeagence,3)+PADR(ALLTRIM(THISFORM.oldnomcli),30),"clients","AGCENOM")
            SELECT clients
            GO RECNO()
            THISFORM.txtcodclien.VALUE = clients.codclien
            THISFORM.text_liste1.textb1.VALUE = clients.nom
            THIS.VALUE = THISFORM.oldnomcli
            THISFORM.REFRESH
        ELSE
            SELECT clients
            GO TOP
            THIS.VALUE = clients.nom
            THISFORM.REFRESH
            RETURN 0
        ENDIF
    ENDIF
ENDIF


Merci encore à toutes les personnes de ce forum qui ont bien voulu se pencher sur cette question.
Cordialement, P ROUGERIE

Permalink : http://www.atoutfox.org/nntp.asp?ID=0000009614
11 957 messages dans le forum • Liste complète des messages

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2013.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0