Gestion d'une barre de progression (thermomètre)
# 0000000171
ajouté le 07/04/2005 10:36:18 et modifié le 07/04/2005
consulté 8131 fois
Niveau
débutant
Ce petit bout de code permet la création et la gestion d'un ProgresBar vertical ou horizontal à n'importe quel endroit d'un Form. Le traitement terminé, ce ProgresBar peut-être supprimer du Form afin d'éviter un encombrement inutile.
Code source :
Le code du Form pour générer et gérer la Progres Bar
* ************************************************************************************************ * *"ProgresBar" est le nom de la routine de création de la barre de progression * * * Param1 = Nom du formulaire (objet) * * * Param2 = position ligne (en pixel) affichage Barre * * * Param3 = position colonne (en pixel) affichage Barre * * * Param4 = hauteur (en pixel) affichage Barre (13 par défaut) * * * Param5 = longueur (en pixel) affichage Barre (370 par défaut) * * * Param6 = nom de la Barre de Progression ("ProgresBar" par défaut) * * * Param7 = Repres. de la barre 0 > pointillés | 1 > continu (0 par défaut) * * * Param8 = Présentation Horizonatale (H) (par défaut) ou verticale (V) * ************************************************************************************************* * * ************************ pour une Barre Horizontale ThisForm.Height = 369 && Agrandi le formulaire OBLIGATOIRE && pour mettre la BP au pied de ton form Do generate IN ProgresBar WITHThisForm,336,120,,350,"ProgresBar",1,"H"&& Création de la PB
* ************************ pour une Barre Verticale *ThisForm.Width = 680 *Do generate IN ProgresBar WITH ThisForm,48,650,240,13,"ProgresBar",1,"V" && Création de la PB
* **************** ICI la table que tu souhaites visualiser***************** Select maTable GoTOP * ***********************************************************************
* ************************************************************************* * * "InitProgresBar" est le nom de la routine de fonctionnement * * * Param1 = Nom de l'Ojet ProgresBar * * * Param2 = 1 pour la première entrée, sinon chaine vide * * * Param3 = valeur maximale de la barre * * * Param4 = position d'avancement pour afficher la progression * * * Param5 = Temporisation * * * Param6 = Nom de l'ojet formulaire * * ************************************************************************* *
nNBEnreg = 0 && Initialise la ProgresBar Do initiate IN ProgresBar WITHThisForm.ProgresBar,"1",RECCOUNT(),1,1,ThisForm * *********************** Boucle modifiable pour ta PB **************** DoWhile ! EOF()
nNBEnreg = nNBEnreg + 1 && Active la ProgresBar avec les Nlles valeurs Do initiate IN ProgresBar WITHThisForm.ProgresBar,"",RECCOUNT(), nNBEnreg ,1,ThisForm Skip EndDo
* ************************ Code non obligatoire *MessageBox(" Boucle ProgresBar terminée ",0+32+0," Fin de boucle") ThisForm.Height = 320 && Remettre le form à l'état initial *ThisForm.Width = 620 && Remettre le form à l'état initial
Do generate IN ProgresBar WITHThisForm,,,,,"ProgresBar", && Supprime la ProgresBar
* ********************************************************************************* * * ProgresBar Version 2.0 (10 mars 2005) * * * Routine de gestion d'une barre de prgression * * * Description des deux routines "generate" et "initiate" : * * ********************************************************************************** * * generate = génère la ProgresBar Horizontale ou Verticale * * * et un cadre autour * * * le 'TextBox' affichant le nombre d'enregistrements traités * * * le 'TextBox' affichant le pourcentage de progression * * * Supprime en finalité les Objets créés * * * * * * initiate = affiche le contenu de la ProgresBar et gére * * * les deux 'TextBox' d'informations * * *********************************************************************************
FUNCTION generate * ***************************************************************** * * Création d'un Objet Barre de progression * * ***************************************************************** * * (*)oForm = Nom du formulaire (objet) * * * (*)oX = ligne (en pixel) affichage Barre * * * (*)oY = colonne (en pixel) affichage Barre * * * oHaut = hauteur (en pixel) affichage Barre * * * oLong = longueur (en pixel) affichage Barre * * * oNom = nom de la Barre de Controle * * * oRepres = 0 > pointillés | 1 > continu * * * oHVpos = o = (H)orizontale / 1 = (V)erticale * * *---------------------------------------------------------------* * * (*) Eléments obligatoires * * ****************************************************************** * PARAMETERS oForm, oX, oY, oHaut, oLong, oNom, oRepres, oHVpos
* ************************************************************** * * Contrôle des paramètres de création et initialisation * * * des valeurs par défaut éventuellement * * **************************************************************
oHVpos = Iif(EMPTY(oHVpos),0,Iif(oHVpos="H",0,1)) && Orientation Horizontale par défaut
oNom = Iif(EMPTY(oNom),"BarreControle",oNom) && Nom par défaut
oHaut = Iif(EMPTY(oHaut),Iif(oHVpos=0,13,240),oHaut) && Hauteur de l'ojet par défaut ( si H = 13 si V = 240)
oLong = Iif(EMPTY(oLong),Iif(oHVpos=0,240,13),oLong) && Longueur par défaut (si H = 240 si V = 13)
oRepres = Iif(EMPTY(oRepres),0,oRepres) && Présentation en pointillé par défaut
* ************************************************************** * * Supprime l"objet ProgresBar et son environnement * * ************************************************************** IfEMPTY(oX)
oForm.RemoveObject(oNom)
oForm.RemoveObject("CadreP")
oForm.RemoveObject("nBCComptage")
oForm.RemoveObject("nBCPourcent") Return EndIf
* ************************************************************** * * Création de la ProgresBar et de son environnement * * **************************************************************
oForm.AddObject(oNom,"Thermometre","MSComctlLib.Progctrl.2")
oForm.AddObject("CadreP","Cadre")
oForm.AddObject("nBCComptage","txtBCC")
oForm.AddObject("nBCPourcent","txtBCP")
* *************\\\\\\\\\\\\\\\\\\\\\\\\************* FUNCTION initiate * ************************************************************************* * * Module de gestion d'une barre de progression * * ************************************************************************* * * oBProg = nom de l'objet Barre de progression * * * cAppel = 1 pour la première entrée, sinon chaine vide * * * nValMax = valeur maximale de la barre * * * nCount = position d'avancement pour afficher la progression * * * nBoucle = Valeur permettant le ralentissement de la progression * * * oForm = Nom de l'ojet formulaire * * ************************************************************************* * PARAMETERS oBProg, cAppel, nValMax, nCount, nBoucle, oForm
If cAppel = "1"
oBProg.Max = nValMax && Init Valeur maximale de la barre Return EndIf
For iSituation = 1 to nBoucle && Boucle de temporisation EndFor&& Pour une progression trop rapide
oBProg.Value = nCount && Fait progresser la barre
oForm.nBCComptage.Value = nCount && Affiche la valeur transmise (RECCOUNT() ou autre)
oForm.nBCPourcent.Value = INT(( nCount /nValMax)*100) && Affiche le % de progression
oForm.nBCPourcent.Refresh
Super ton truc.