jeudi, avril 05, 2007

Demarrer...Executer dans une Combo WinDev

J'ai voulu faire l'équivalent de "démarrer...exécuter" de Windows, avec une combo dans WinDev 11.






A chaque saisie de caractère, la combo propose les fichiers et répertoires commençant par ce caractère. Une sorte de saisie assistée.


Voici le code Utilisé :

Le code d'entrée de la combo.





Code à chaque modification de la combo :

ch est une chaîne = MoiMême..ValeurAffichée // Recupération de la valeur saisie dans la combo
pos est un entier = Position(ch,"\",0,DepuisFin) // Position du curseur.

SI Taille(ch) >= 2 ALORS // A partir du deuxième caractère on recherche les fichiers et répertoires
// Suppression du contenu de la combo
POUR i = ListeOccurrence(MoiMême) A 1 PAS -1
ListeSupprime(MoiMême,i)
FIN
SI ListeOccurrence(MoiMême) > 0 ALORS ListeModifie(MoiMême,"",1)
// Le premier caractère doit correspondre à une unité de disque : de A à Z
SI Asc("A") < pertoire =" fRep(ch+">""
// Liste des répertoires
ListeAjoute(MoiMême,ch[[1 A 2]]+["\"]+ch[[3 A pos]]+["\"]+sRépertoire)
// Répertoire suivant
sRépertoire = fRep("", frRépertoire)
FIN

// Ajout des fichiers qui sont à la racines
ListeAjoute(MoiMême,fListeFichier(ch+"*",frNonRécursif))
// Ouverture de la combo
ComboOuvre(MoiMême)
FIN
FIN


Code de Sélection de la Combo :







la propriété ..Curseur permet de positionner le curseur à la fin de la chaine saisie

2 commentaires:

larabe a dit…

slt j'ai programmé votre code et ca ne marche pas

Flyobj a dit…

ne marche pas
je croix le probleme est la
IF Asc("A") < sUnit = " fDir(ch+">"" THEN
il manque une parentesis