Afficher data à partir de la saisie
Publié : mer. 25/mai/2016 12:23
				
				Bonjour
Je souhaiterais afficher la liste des clients sur une grille au fur et à mesure que l'utilisateur saisit le mot clé caractère par caractère.
Exemple : Dès que l'utilisateur commence à saisir le texte : (en commençant par la lettre P par exemple) alors toute la liste des clients commençant par P sera affichée, ensuite dès que l'utilisateur ajoute le caractère suivant (la lettre A par exemple), c'est la liste commençant par PA qui sera affichée ect jusqu'à ce que l'utilisateur sélectionne sur la grille le client qui l'intéresse, je ne connais pas l'évènement qui fera ça. J'ai essayé ceci:
 
D'abord l'utilisateur ne veut pas appuyer sur tache (ENTREE) après avoir saisi le mot clé, il préfère que la liste des clients sera affichée au fur et à mesure qu'il tape les caractères du mot clé (à chaque nouveau caractère saisi, une liste sera affichée), voici ce qui se passe avec mon code:
Quand l'utilisateur tape la 1ère lettre, la liste des clients est affichée et le contenu est correct, mais l'utilisateur ne pourra plus ajouter d'autres lettres??
Qu dois je faire ?
Merci de votre aide
			Je souhaiterais afficher la liste des clients sur une grille au fur et à mesure que l'utilisateur saisit le mot clé caractère par caractère.
Exemple : Dès que l'utilisateur commence à saisir le texte : (en commençant par la lettre P par exemple) alors toute la liste des clients commençant par P sera affichée, ensuite dès que l'utilisateur ajoute le caractère suivant (la lettre A par exemple), c'est la liste commençant par PA qui sera affichée ect jusqu'à ce que l'utilisateur sélectionne sur la grille le client qui l'intéresse, je ne connais pas l'évènement qui fera ça. J'ai essayé ceci:
Code : Tout sélectionner
Enumeration
#WinSelCF
#SelCF_Grid
#Winstock
;Livraisons-------------------------------------------------------
#fbl_Titre
#fbl_FrameDoc
#fbl_new
#fbl_TxtNumDoc
#fbl_NumDoc
#fbl_selNumDoc
#fbl_TxtDate
#fbl_Date
#fbl_selDate
#fbl_TxtBc
#fbl_Bc
#fbl_TxtDocSource
#fbl_DocSource
#fbl_TxtCF
#fbl_Cf
#fbl_selCf
#fbl_FrameMaj
#fbl_TxtFam
#fbl_Fam
#fbl_selFam
#fbl_TxtRef
#fbl_Ref
#fbl_selRef
#fbl_TxtProd
#fbl_Prod
#fbl_selProd
#fbl_TxtUm
#fbl_Um
#fbl_selUm
#fbl_TxtQte
#fbl_Qte
#fbl_TxtPu
#fbl_Pu
#fbl_TxtMnt
#fbl_Mnt
#fbl_Valider
#fbl_Supprimer
#fbl_Imprimer
#fbl_AnnulerDoc
#fbl_grid
#fbl_FrameTotal
#fbl_TxtHT
#fbl_HT
#fbl_TxtFrais
#fbl_Frais
#fbl_TxtRemise
#fbl_Remise
#fbl_TxtTTC
#fbl_TTC
#fbl_FrameVer
#fbl_TxtModep
#fbl_Modep
#fbl_CheckEsp
#fbl_CheckCheq
#fbl_CheckVir
#fbl_Checkaterme
#fbl_FrameChauf
#fbl_FrameCamion
#fbl_Framemat
#fbl_Chauf
#fbl_Camion
#fbl_Mat
#fbl_selChauf
#fbl_selCamion
#fbl_selmat
#fbl_FrameStock
#fbl_StockDisp
#fbl_Pmp
#fbl_EnregistrerDoc
endEnumeration
Procedure AfficherGridSelCF()
OpenWindow(#WinSelCF, 0,0, 500, 200, "Sélectionnez un client-fournisseur",#PB_Window_SystemMenu |#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#WinSelCF))
   wrow=20
   ListIconGadget(#SelCF_Grid, 10, wrow, 480, 180, "Code", 40, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
   AddGadgetColumn(#SelCF_Grid,1, "Client - fournisseur", 200)
   AddGadgetColumn(#SelCF_Grid,2, "Adresse", 100)
   AddGadgetColumn(#SelCF_Grid,3, "Rc", 100)
   AddGadgetColumn(#SelCF_Grid,4, "MF", 100)
   AddGadgetColumn(#SelCF_Grid,5, "ART",100)
   AddGadgetColumn(#SelCF_Grid,6, "NIS",100)
EndIf
;Remplir le grid en fonction des caractères saisis
input$=UCase(input$)
wtaille=Len(input$)
sql="select * from fcf order by cf"
CheckDatabaseQuery(idcf,sql)
While NextDatabaseRow(idcf)
  codecf$=GetDatabaseString(idcf,0)
  cf$=UCase(GetDatabaseString(idcf,1))
  ad$=UCase(GetDatabaseString(idcf,2))
  rc$=UCase(GetDatabaseString(idcf,4))
  mf$=UCase(GetDatabaseString(idcf,5))
  art$=UCase(GetDatabaseString(idcf,6))
  nis$=UCase(GetDatabaseString(idcf,7))
  If (Left(cf$,wtaille) = input$)
     AddGadgetItem(#SelCf_grid,-1,codecf$+Chr(10)+cf$+Chr(10)+ad$+Chr(10)+rc$+Chr(10)+mf$+Chr(10)+art$+Chr(10)+nis$)
  EndIf
Wend
     
wquitSelCF=0
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
   Select EventGadget()
   Case #SelCf_grid
         wrow=GetGadgetState(#SelCf_grid)
         If wrow>=0 And wrow<CountGadgetItems(#SelCf_grid)
            codecf$=GetGadgetItemText(#SelCf_grid,wrow,0) 
            cf$=GetGadgetItemText(#SelCf_grid,wrow,1) 
            ad$=GetGadgetItemText(#SelCf_grid,wrow,2) 
            rc$=GetGadgetItemText(#SelCf_grid,wrow,3) 
            mf$=GetGadgetItemText(#SelCf_grid,wrow,4) 
            art$=GetGadgetItemText(#SelCf_grid,wrow,5) 
            nis$=GetGadgetItemText(#SelCf_grid,wrow,6) 
            SetGadgetText(#fbl_cf,cf$)
            wquitSelCF=1
       endif
   EndSelect
EndIf   
Until wquitSelCF=1
CloseWindow(#winSelCF)
EndProcedure
Procedure Run_stock()
quitWinstock=0
wMask$=FormatDate("%dd/%mm/%yyyy", Date())
date$=wMask$
ExamineDesktops()
Wlargeur=DesktopWidth(0)
Whauteur=DesktopHeight(0)
OpenWindow(#Winstock, 0,0,0,0, "Logiciel de gestion commerciale - stocks", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_Maximize)
WLar=Wlargeur-50:WHaut=Whauteur-100 
If CreateGadgetList(WindowID(#Winstock))
   PanelGadget(#Panel, 10,10, WLar, WHaut)
   AddGadgetItem (#Panel, -1, " LIVRAISON ");***************************************************
   TextGadget(#fbl_Titre, 20, 20, 560, 30, "BON DE LIVRAISON")
   wrow=50
   Frame3DGadget(#fbl_FrameDoc, 10, wrow, 940,80, "",#PB_Frame3D_Flat)
   wrow=wrow+20
   TextGadget(#fbl_TxtNumDoc, 20, wrow, 60, 20, "N° BL:")
   StringGadget(#fbl_NumDoc, 80, wrow, 60, 20, "")
   TextGadget(#fbl_TxtDate,160, wrow, 60, 20, "Date:")
   StringGadget(#fbl_Date,190, wrow, 90, 20, date$)
   DateGadget(#fbl_SelDate,190, wrow+25, 90, 20,"%dd/%mm/%yyyy")
   TextGadget(#fbl_TxtCF, 650, wrow, 110, 20, "CLIENT:")
   StringGadget(#fbl_CF, 740, wrow, 200, 20, "",#PB_String_UpperCase)
   wrow=wrow+60
   Frame3DGadget(#fbl_FrameMaj, 10, wrow, 940,110, "",#PB_Frame3D_Flat)
   wrow=wrow+20
   TextGadget(#fbl_Txtfam,20, wrow, 80, 20, "Famille:")
   StringGadget(#fbl_fam,80, wrow, 150, 20, "")
   ComboBoxGadget(#fbl_selFam,80, wrow+25, 150, 100)
   TextGadget(#fbl_Txtref,290, wrow, 80, 20, "Référence:")
   StringGadget(#fbl_ref,350, wrow, 80, 20, "")
   ComboBoxGadget(#fbl_selref,350, wrow+25, 80, 100)
   TextGadget(#fbl_TxtProd,470, wrow, 120, 20, "Désignation:")
   StringGadget(#fbl_prod,540, wrow, 400, 20, "")
   ComboBoxGadget(#fbl_selProd,540, wrow+25, 400, 100)
   wrow=wrow+60
   TextGadget(#fbl_TxtUm,20, wrow, 50, 20, "UM:")
   StringGadget(#fbl_Um,80, wrow,70, 20,"") 
   ComboBoxGadget(#fbl_selUm,160, wrow, 70, 100)
   TextGadget(#fbl_TxtQte,300, wrow, 60, 20, "Quantité:")
   StringGadget(#fbl_Qte,350, wrow, 80, 20,"")
   TextGadget(#fbl_TxtPu,470, wrow,100, 20,"Prix unitaire:")
   StringGadget(#fbl_pu,540, wrow, 100,20,"")
   TextGadget(#fbl_TxtMnt,770, wrow,70, 20,"Montant:")
   StringGadget(#fbl_Mnt,840, wrow, 100, 20,"")
   wrow=wrow+40
   ButtonGadget(#fbl_Imprimer, 10, wrow, 100, 30, "Imprimer")
   ButtonGadget(#fbl_AnnulerDoc, 250, wrow, 120, 30, "Annuler la livraison")
   ButtonGadget(#fbl_supprimer, 400, wrow, 160, 30, "Supprimer la ligne sélectionnée")
   ButtonGadget(#fbl_New, 600, wrow, 120, 30, "Nouvelle livraison")
   ButtonGadget(#fbl_Valider, 850, wrow, 100, 30, "Valider")
   wrow=wrow+35
   ListIconGadget(#fbl_Grid, 10, wrow, 940, 150, "Code", 40, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
   AddGadgetColumn(#fbl_Grid,1, " Désignation du produit", 300)
   AddGadgetColumn(#fbl_Grid,2, " U.M.", 90)
   AddGadgetColumn(#fbl_Grid,3, " Quantité", 80)
   AddGadgetColumn(#fbl_Grid,4, " Prix unitaire", 100)
   AddGadgetColumn(#fbl_Grid,5, " Montant", 100)
   wrow=wrow+160: wlig=wrow
   Frame3DGadget(#fbl_FrameVer,10, wrow, 500, 60, "")
   wrow=wrow+15
   TextGadget(#fbl_TxtModep,20, wrow, 140, 20, "Mode de payement:")
   StringGadget(#fbl_Modep,140, wrow, 300, 20,"", #PB_String_UpperCase)
   wrow=wrow+20
   OptionGadget(#fbl_CheckEsp,20, wrow, 100, 20,"ESPECE")
   OptionGadget(#fbl_CheckCheq,120, wrow, 100, 20,"CHEQUE")
   OptionGadget(#fbl_CheckVir,220, wrow, 140, 20,"VIREMENT BANCAIRE")
   OptionGadget(#fbl_CheckAterme,390, wrow, 100, 20,"A TERME")
   wrow=wrow+30
   Frame3DGadget(#fbl_FrameChauf,10, wrow, 170, 65, "Chauffeur")
   Frame3DGadget(#fbl_FrameCamion,190, wrow, 160, 65, "Camion")
   Frame3DGadget(#fbl_FrameMat,360, wrow, 150, 65, "Matricule")
   wrow=wrow+15
   StringGadget(#fbl_chauf,20, wrow, 150, 20,"", #PB_String_UpperCase)
   StringGadget(#fbl_Camion,200, wrow,140, 20,"", #PB_String_UpperCase)
   StringGadget(#fbl_Mat,370, wrow,130, 20,"", #PB_String_UpperCase)
   wrow=wrow+22
   ComboBoxGadget(#fbl_selchauf,20, wrow, 150,30)
   ComboBoxGadget(#fbl_selcamion,200, wrow, 140,30)
   ComboBoxGadget(#fbl_selmat,370, wrow, 130,30)
   wrow=wlig
   Frame3DGadget(#fbl_FrameStock,515, wrow, 100, 130, "Stock disponible")
   TextGadget(#fbl_StockDisp,520, wrow+20,80, 20, "",#PB_Text_Center)
   TextGadget(#fbl_Pmp,520, wrow+70,80, 20, "",#PB_Text_Center)
   wrow=wlig
   Frame3DGadget(#fbl_FrameTotal,620, wrow, 310, 130, "")
   TextGadget(#fbl_TxtHT,640, wrow+20, 140, 20, "TOTAL HT :")
   StringGadget(#fbl_Ht,750, wrow+20, 120, 20,"",#PB_String_ReadOnly | #PB_Text_Right)
   wrow=wrow+25
   TextGadget(#fbl_TxtFrais,640, wrow+20, 140, 20, "FRAIS ET TAXES :")
   StringGadget(#fbl_Frais,750, wrow+20, 120, 20,"",#PB_Text_Right)
   wrow=wrow+25
   TextGadget(#fbl_TxtRemise,640, wrow+20, 140, 20, "REMISE :")
   StringGadget(#fbl_Remise,750, wrow+20, 120, 20,"",#PB_Text_Right)
   wrow=wrow+25
   TextGadget(#fbl_TxtTTC,640, wrow+20, 140, 20, "TOTAL TTC :")
   StringGadget(#fbl_TTC,750, wrow+20, 120, 20,"",#PB_String_ReadOnly | #PB_Text_Right)
   ButtonGadget(#fbl_EnregistrerDoc, 620, wrow+60, 310, 30, "ENREGISTRER LE BON DE LIVRAISON")
   AddGadgetItem (#Panel, -1, " FERMER");***************************************************
EndIf
quitWinstock=0
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
   quitWinstock=1
EndIf
If EventID = #PB_Event_Gadget
   Select EventGadget()
   Case #fbl_seldate
        wdate=GetGadgetState(#fbl_seldate)
        date$=FormatDate("%dd/%mm/%yyyy", wDate)
        SetGadgetText(#fbl_date,date$)
   
   Case #fbl_selnumdoc
        n=GetGadgetState(#fbl_selnumdoc)
        If n>=0
           numdoc$=GetGadgetText(#fbl_selnumdoc)
           If numdoc$<>""
              SetGadgetText(#fbl_numdoc,numdoc$)
              fbl_afficherDoc()
           EndIf
        EndIf
  ;ça se psse ici..............................
   Case #fbl_cf
         input$=GetGadgetText(#fbl_cf)
         If Len(input$)>0
            doc$="BL"
            AfficherGridSelCF()
         EndIf      
   ;:----------------------------------------------------------------------------------------------------------
   Case #jstock_reorganiser
         jstock_reorganiser()
         
   Case #jstock_afficher
         jstock_afficher()
   Case #jstock_imprimer
         Print_jstockPmp()
   ;:----------------------------------------------------------------------------------------------------------
   Case #panel
        wpanel=GetGadgetState(#panel)
        If wpanel=7
           quitwinstock=1
        EndIf
         
   EndSelect
EndIf            
Until  quitwinstock=1
CloseWindow(#Winstock)
EndProcedure
D'abord l'utilisateur ne veut pas appuyer sur tache (ENTREE) après avoir saisi le mot clé, il préfère que la liste des clients sera affichée au fur et à mesure qu'il tape les caractères du mot clé (à chaque nouveau caractère saisi, une liste sera affichée), voici ce qui se passe avec mon code:
Quand l'utilisateur tape la 1ère lettre, la liste des clients est affichée et le contenu est correct, mais l'utilisateur ne pourra plus ajouter d'autres lettres??
Qu dois je faire ?
Merci de votre aide
 
 
 Ta méthode est bien plus élégante et logique
 Ta méthode est bien plus élégante et logique  