begin process at 2008 05 12 12:43:27
1 170 288 membres
187 nouveaux aujourd'hui
13 958 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PROGRESBAR


Information sur la source

Catégorie :Formulaires Classé sous : progressbar, verticale, horizontale Niveau : Initié Date de création : 11/04/2005 Vu : 6 915

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

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

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 WITH ThisForm,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
  • Go TOP
  • * ***********************************************************************
  • * *************************************************************************
  • * * "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 WITH ThisForm.ProgresBar,"1",RECCOUNT(),1,1,ThisForm
  • * *********************** Boucle modifiable pour ta PB ****************
  • Do While ! EOF()
  • nNBEnreg = nNBEnreg + 1
  • && Active la ProgresBar avec les Nlles valeurs
  • Do initiate IN ProgresBar WITH ThisForm.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 WITH ThisForm,,,,,"ProgresBar", && Supprime la ProgresBar
  • **************************************************************************************************
  • -( ProgresBar.prg )-
  • * *********************************************************************************
  • * * 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 *
  • * **************************************************************
  • If EMPTY(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")
  • oProgres = oForm.&oNom
  • WITH oProgres
  • .Orientation = oHVpos
  • .Top = oX
  • .Left = oY
  • .Height = oHaut
  • .Width = oLong
  • .Scrolling = oRepres
  • .Visible = .T.
  • .BorderStyle = 1
  • EndWITH
  • WITH oForm.CadreP
  • .SpecialEffect = 0
  • .Top = oX-4
  • .Left = oY-4
  • .Height = oHaut+8
  • .Width = oLong+8
  • .BackColor = RGB(250,255,255)
  • .Visible = .T.
  • EndWITH
  • WITH oForm.nBCComptage
  • .Width = 100
  • .Height = 19
  • .Left = Iif(oHVpos=0 , oY , oY-(.Width/2))
  • .Top = oX - .Height
  • .Alignment = Iif(oHVpos=0, 0, 2)
  • .BorderStyle = 0
  • .BackStyle = 0
  • .FontBold = .T.
  • .FontItalic = .T.
  • .FontSize = 8
  • .ForeColor = RGB(128,64,64)
  • .SpecialEffect = 1
  • .Visible = .T.
  • EndWITH
  • WITH oForm.nBCPourcent
  • .Width = 50
  • .Height = 23
  • .Left = Iif(oHVpos=0 , oY+((oLong/2)-(.Width/2)) , oY- (.Width / 2))
  • .Top = Iif(oHVpos=0 , oX - .Height, (oHaut/2)+(oX-oLong) )
  • .Alignment = Iif(oHVpos=0, 2, 0)
  • .BorderStyle = 0
  • .BackStyle = 0
  • .FontBold = .T.
  • .FontSize = 8
  • .ForeColor = RGB(0,0,255)
  • .SpecialEffect = 1
  • .InputMask = "999 %"
  • .Visible = .T.
  • EndWITH
  • Define CLASS Thermometre AS OLEControl
  • EndDefine
  • Define CLASS Cadre AS Container
  • EndDefine
  • Define CLASS txtBCC AS TextBox
  • EndDefine
  • Define CLASS txtBCP AS TextBox
  • EndDefine
  • * *************\\\\\\\\\\\\\\\\\\\\\\\\*************
  • 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
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 WITH ThisForm,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
Go TOP
* ***********************************************************************

* *************************************************************************
* * "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 WITH ThisForm.ProgresBar,"1",RECCOUNT(),1,1,ThisForm
* *********************** Boucle modifiable pour ta PB ****************
Do While ! EOF()
nNBEnreg = nNBEnreg + 1
&& Active la ProgresBar avec les Nlles valeurs
Do initiate IN ProgresBar WITH ThisForm.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 WITH ThisForm,,,,,"ProgresBar", && Supprime la ProgresBar



**************************************************************************************************
-( ProgresBar.prg )-


* *********************************************************************************
* * 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 *
* **************************************************************
If EMPTY(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")

oProgres = oForm.&oNom
WITH oProgres
.Orientation = oHVpos
.Top = oX
.Left = oY
.Height = oHaut
.Width = oLong
.Scrolling  = oRepres
.Visible  = .T.
.BorderStyle = 1
EndWITH

WITH oForm.CadreP
.SpecialEffect = 0
.Top  = oX-4
.Left  = oY-4
.Height = oHaut+8
.Width  = oLong+8
.BackColor = RGB(250,255,255)
.Visible  = .T.
EndWITH

WITH oForm.nBCComptage
.Width = 100
.Height = 19
.Left = Iif(oHVpos=0 , oY , oY-(.Width/2))
.Top = oX - .Height
.Alignment = Iif(oHVpos=0, 0, 2)
.BorderStyle = 0
.BackStyle = 0
.FontBold = .T.
.FontItalic = .T.
.FontSize = 8
.ForeColor = RGB(128,64,64)
.SpecialEffect = 1
.Visible  = .T.
EndWITH

WITH oForm.nBCPourcent
.Width = 50
    .Height = 23
    .Left = Iif(oHVpos=0 , oY+((oLong/2)-(.Width/2)) , oY- (.Width / 2))
.Top = Iif(oHVpos=0 , oX - .Height, (oHaut/2)+(oX-oLong) )
.Alignment = Iif(oHVpos=0, 2, 0)
.BorderStyle = 0
.BackStyle = 0
.FontBold = .T.
.FontSize = 8
.ForeColor = RGB(0,0,255)
.SpecialEffect = 1
.InputMask = "999 %"
.Visible  = .T.
EndWITH

Define CLASS Thermometre AS OLEControl
EndDefine
Define CLASS Cadre AS Container
EndDefine
Define CLASS txtBCC AS TextBox
EndDefine
Define CLASS txtBCP AS TextBox
EndDefine

* *************\\\\\\\\\\\\\\\\\\\\\\\\*************
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
  • signaler à un administrateur
    Commentaire de tmcuh le 29/11/2006 11:37:21

    Bon boulot.
    Juste pour rappel, il y a une classe déjà faite dans le dossier "foxpro\ffc" : _therm.vcx.

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS