Question Barre de progression

Plus d'informations
il y a 17 ans 1 semaine #4303 par Johan
Réponse de Johan sur le sujet Re:Barre de progression
Deja, merci pour les infos, ca ma été très utile

J'ai aléger mon appli avec les éléments que tu m'a donné

Cependant je bloque vraiment sur cette barre de progression.

J'ai essayé de prendre cet exemple : powershell-scripting.com/index.php?optio...283&catid=5#2283

C'est le seul que je comprend a peu pres (ou pas en fait)

J'ai simplement mi un $progressbar.value = 0 au début de ma fonction avec un $Form2.Showdialog() et un $progressbar.value += 1 dans ma boucle principale

Resultat, quand je clique sur valider, la barre s'affiche et il ne se passe rien, de plus, la requete ne démarre que quand je ferme cette barre de progression.

Je comprend vraiment rien !

Pourquoi n'est-ce pas aussi simple que d'incrémenté une variable dans une boucle ?


Je pense que cet exemple m'irais mais je ne comprend pas comment elle fonctionne et a quoi correspond chaque ligne :s

[code:1]$timer1.Enabled = $true
$progressbar1.value=0
$progressbar1.Minimum=0
$progressbar1.Maximum=100
$progressbar1.MarqueeAnimationSpeed=1
function OnTick_timer1($Sender,$e){
$timer1.Enabled = $false
1..100|% {$progressbar1.value =$_;Write-host $_;start-sleep -m 20}
$FrmTest15ProgressBarTimer.Close()
}
$timer1.Add_Tick( { OnTick_timer1 $timer1 $EventArgs} )
[/code:1]<br><br>Message édité par: VashQuiRit, à: 12/03/09 14:50

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 1 semaine #4304 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Barre de progression
VashQuiRit écrit:

Je comprend vraiment rien !

Oui je vois :S
Mais as-tu lu la doc qui te permettrait de comprendre un peu mieux ?
VashQuiRit écrit:

Pourquoi n'est-ce pas aussi simple que d'incrémenté une variable dans une boucle ?

Le principe semble identique mais l'affectation se fait par l'appel de la méthode PerformStep() qui elle déclenche la progression en additionnant la valeur de la propriété Step à la propriété Value.
VashQuiRit écrit:

Je pense que cet exemple m'irais mais je ne comprend pas comment elle fonctionne et a quoi correspond chaque ligne

Une chose à la fois si tu n'y vois pas d'inconvénients.

Je te joins un code qui répond à ton besoin, je te laisse étudier la function OnClick_btnOk.
La valeur 3 correspond au nombre des checkbox présent sur la forme (les autres sont imbriqués dans un groupbox donc inaccessible avec la maniére de parcourir la liste des composants de la Form principale)
[code:1]$progressBar1.Maximum = 3[/code:1]

La pièce jointe TestCheckBox.zip est absente ou indisponible


Tutoriels PowerShell
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 1 semaine #4306 par Johan
Réponse de Johan sur le sujet Re:Barre de progression
Ouais nan je comprend toujours pas =D

A quoi cossrespond $EventArgs, $sender, $e ? Ca sort un peu de nul part pour moi

En fait toi tu fait plusieurs fonctions, mais moi je peux pas sinon je ne pourrais pas incrementé la barre de progression (ma fonction genere est apelé quand je clique sur valider)

Sinon en m'inspirant de ce que tu m'a passé j'ai :

[code:1]$Form2 = new-object System.Windows.Forms.form
$Form2.ClientSize = new-object System.Drawing.Size(337, 331)
$Form2.Controls.Add($progressBar)
$Form2.Name = \&quot;Form2\&quot;
$Form2.Text = \&quot;Progression \&quot;[/code:1]

Si je comprend bien la je cré une box

[code:1]$progressBar = new-object System.Windows.Forms.ProgressBar
$progressBar.Name = \&quot;progressBar1\&quot;
$progressBar.Maximum = 100
$progressBar.Minimum = 0
$progressBar.Value = 0
$progressBar.Step = 1
$progressBar.TabIndex = 8
$progressBar.Size = new-object System.Drawing.Size(435, 28)[/code:1]

Je configure la barre de progression pour alé de 0 a 100 et ce pas tranche de 1

[code:1]function OnFormClosing_Form1($Sender,$e){
($_).Cancel= $False
}[/code:1]

Je sais présume que ca ferme la box de la progress bar une fois fini ?

Ensuite j'ai mis au début de ma fonction

[code:1] $ProgressBar.Value=0
Start-sleep 1
$Form2.Add_FormClosing( { OnFormClosing_Form1 $Form2 $EventArgs} )
$Form2.Add_Shown({$Form2.Activate()})
$Form2.ShowDialog()[/code:1]

Et dans ma boucle de recherche :
[code:1]$progressBar.PerformStep() Start-sleep -m 200 [/code:1]

Et a la fin de la fonction :

[code:1] $Form2.Dispose()[/code:1]

Dans ton exemple, ton maximum correspond au nombre de checkbox sur ta form, mais moi mon maximum est différent a chaque requete =/ ce n'est pas possible de le faire en % ?<br><br>Message édité par: VashQuiRit, à: 12/03/09 16:48

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 1 semaine #4307 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Barre de progression
VashQuiRit écrit:

A quoi cossrespond $EventArgs, $sender, $e ? Ca sort un peu de nul part pour moi

On peut le dire comme ça ou aborder la programmation événementiel sous .NET/Winform.
Je préfére la première ;)
VashQuiRit écrit:

En fait toi tu fait plusieurs fonctions, mais moi je peux pas sinon je ne pourrais pas incrementé la barre de progression (ma fonction genere est apelé quand je clique sur valider)

Je te laisserai argumenter sur cette impossibilité...
Et pour rappel :
Laurnet Dardenne écrit:

...
ensuite comme je n'ai pas une vue d'ensemble
...

VashQuiRit écrit:

Si je comprend bien la je cré une box

oui.
VashQuiRit écrit:

Je présume que ca ferme la box de la progress bar une fois fini ?

Non.
Le nom de la fonction OnFormClosing_Form1, qui est normé, porte sur l'objet $Form1.
Et oui, car tous les objets contenus dans une form sont supprimés lors de la suppression de la form. Dans un cas tu supprimes un détail, dans l'autre la totalité. Je te l'accorde, c'est une petite nuance.
VashQuiRit écrit:

Dans ton exemple, ton maximum correspond au nombre de checkbox sur ta form, mais moi mon maximum est différent a chaque requete =/ ce n'est pas possible de le faire en % ?

Et si tu essayais d'adapter le code que je t'ai proposé ?
Si je peux me permettre un conseil, oublie 5 mn ton pb et concentre toi sur l'usage et la configuration de la progressBar. Et admet qu'il faille parfois \&quot;perdre\&quot; du temps pour en \&quot;gagner\&quot;.

Une fois ceci fait, l'intégration dans le script existant se fera les doigts dans le nez.

Maintenant si tu veux arriver vite à ton résultat, je ne peux rien pour toi.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 1 semaine #4311 par Johan
Réponse de Johan sur le sujet Re:Barre de progression
J'essaie d'avancer mais je ne comprend pas a quoi sert $sender, $e et $eventargs.

En gros quand t'appuie sur OK tu initialise la barre et ensuite tu avance de 1 pour chaque textbox présente et fait une requete si elle est coché.

J'ai essaié de l'adapté a mon script avec une requete ou je connais le nombre de fois ou la boucle se répéte mais mon appli passe toujours en \&quot;pas de reponse\&quot; quand je clic sur OK, Est-ce normal ?

En gros j'en suis a :

[code:1]$progressBar1.Maximum = 100
$progressBar1.Minimum = 0
$progressBar1.Value = 0
$progressBar1.Step = 25
$form_generation.Controls.Add($progressBar1)

$button_Valider_OnClick=
{
genere $button_Valider $EventArgs
}

function genere($Sender,$e)
{
$ProgressBar1.Value=0
Start-sleep 1
foreach {
$progressBar1.PerformStep()
Start-sleep -m 200
}
}


function OnFormClosing_Form_generation($Sender,$e)
{
($_).Cancel= $False
}

$Form_generation.Add_FormClosing( { OnFormClosing_Form1 $Form_generation $EventArgs} )
$Form_generation.Add_Shown({$Form_generation.Activate()})
$Form_generation.ShowDialog()| Out-Null
$Form_generation.Dispose()[/code:1]

Le foreach se répete donc 4 fois.

j'ai rajouté apres genere : $button_Valider $EventArgs et apres function genere : ($Sender,$e) sans trop comprendre.

Au final quand j'execute la requete, mon programme se fige et au bout de 3 minutes me sors la resultat et affiche la barre de progression remplie a fond.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 1 semaine #4313 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Barre de progression
VashQuiRit écrit:

J'essaie d'avancer mais je ne comprend pas a quoi sert $sender, $e et $eventargs.

Voir le paragraphe \&quot;Création du gestionnaire d'événement\&quot; ici . Voir aussi ceci .
VashQuiRit écrit:

En gros quand t'appuie sur OK tu initialise la barre et ensuite tu avance de 1 pour chaque textbox présente et fait une requete si elle est coché.

Oui, bien que l'affectation à zero à vocation de réinitialiser la barre de progression car on peut déclencher l'événement + fois.
VashQuiRit écrit:

Est-ce normal ?

Aucune idée, aider sur du code inconnu, çà je ne sais pas faire.
Pour
function genere($Sender,$e)
Cette fonction n'est pas un gestionnaire d'événement, de plus les arguments déclarés ne sont pas utilisés dans le corps de la function. Donc ici $Sender et $e n'ont pas de raison d'être.

foreach {
Là je ne comprend pas trop :pinch: , soit c'est un pipeline soit une boucle mais dans les 2 cas on doit connaître les éléments sur lesquels itérer :
1..10|foreach {
ou
foreach($Item in $Liste) {
VashQuiRit écrit:

Au final quand j'execute la requete, mon programme se fige

Le mieux serait que tu postes ton script de test.
On gagnera du temps :P

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.111 secondes
Propulsé par Kunena