Gambas France BETA


Pas de compte ? Incription

Utilisation de SHELL ou EXEC

12
AuteurMessages
caracole#16 Posté le 17/12/2010 à 09:26:00
He je crois que j'ai de quoi bucher ce w.e!
Merci pour les suggestions et idées
a tout hasard, un site interessant pour generer ses barres de progression animées: http://ajaxload.info/
mieux encore: http://www.smileygenerator.us/index_francaise.html

ceci dit, quand je colle un objet image sur une feuille et que je choisi un gif animé ca ne bouge pas !

Cordialités à tous depuis l'Espagne

pierre
caracole#17 Posté le 17/12/2010 à 10:10:00
Alors si c'est cela, une icone qui tourne pour faire patienté il y a encore vraiment plus simple, on modifie l'aspet de la souris (je le fait d'ailleurs dans mon bout de code) :

Avant le shell on transforme l'icone en icone d'attente et après on la remet la souris par default : Un truc du style :

me.mouse = 3 '3 est la valeur de mouse qui montre un curseur type sablier , qui dit que ça travail....
shell "montraitement"
me.mouse=1 ' Valeur de la mouse par Default

Tout simplement mais on est très loin de la barre de progression là :)

Quand a l'idée d'une barre de progression par shell, ça va avancer de 30 % a chaque fois, ça va pas être très joli ni très intéressant pour l'utilisateur.
Travailler sur les process me parais beaucoup plus intéressant en terme de résultat et d'apprentissage, non ?


Ca ne fonctionne pas ( en vb oui ) ca m'a couté de trouver ...

il faut au prealable etre en environnement QT!
il faut écrire par exemple
1
PictureBox1.Mouse = Mouse.Wait
ou
1
ME.Mouse=Mouse.Wait


de toute facon, un gif animé je n'ai pas réussi !
linuxos#18 Posté le 17/12/2010 à 10:17:00
Un peu de sel, de poivre et la crevette sera... Gamuti,

Excuse moi d'insister, mais vu le dernier exemple que tu donnes, il me semble que c'est de loin le plus complexe qui ait été fourni dans ce Topic. L''utilisation des Process est vraiment beaucoup plus souple et plus sur.

Une problématique se pose dans ton exemple. Tous les fichiers que tu génères lors de tes commandes SHELL, il faut bien les supprimer une fois terminé et si tu lances 2 fois le même programme en même temps, ben les fichiers vont se télescoper .....

Dans le cas du Process, aucun fichier temporaire, transmission de données instantanément et tu peux même tuer le Process en cours d'exécution si il tu le désire. En cas de crash inopiné du Process, tu pourra intervenir et être informé

Je crois que j'ai tout dis....

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
caracole#19 Posté le 17/12/2010 à 10:53:00
Bonjour,
Voile, j'ai la solution !

Un petit test.

sur ma feuille je crée un controle movieBox
dans la propriété Path mettre le chemin et nom du fichier gif animé

creer un bouton toggle . sur l'évenement click j'affecte a la propriete Playing du movieBox la propriete Value du bouton.
toggle qui pas de True a False a chque appui.
C'est tout essayez ca roule

ensuite il faut pauffiner..

en pratique au moment ou je lance le shell je met True la proprieté Playing du moviebox et a la sortie je la met a False.

Plus simple ?
linuxos#20 Posté le 17/12/2010 à 11:04:00
Un peu de sel, de poivre et la crevette sera... Si cela te suffit, c'est impec.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
manu#21 Posté le 17/12/2010 à 14:32:00
Avec Gambas ca roule !plus simple mais ta progressBar ne dis riens de l'avancement réel de ton traitement, c'est juste un contrôle qui fait patienter l'utilisateur. Mais tu peux faire la même chose avec une boucle et une progressBar Gambas... !
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
caracole#22 Posté le 17/12/2010 à 14:37:00
plus simple mais ta progressBar ne dis riens de l'avancement réel de ton traitement, c'est juste un contrôle qui fait patienter l'utilisateur. Mais tu peux faire la même chose avec une boucle et une progressBar Gambas... !


modifier le curseur ca va tres bien aussi

1
ME.mouse=mouse.Wait
avant et
1
ME.mouse=mouse.Default
apres ca peut suffire !

le probleme pour la barre de progression est qu'on ne peut connaitre à l'avance la duree max ou le nombre maxi d'operations executées par le shell
manu#23 Posté le 17/12/2010 à 14:43:00
Avec Gambas ca roule !Oui c'est ca le probleme justement ! ;)

Mais je voullais dire que plutot de coller un gif animé il vaut mieux faire ca en gambas :

1
PUBLIC SUB Button1_Click()DIM i AS INTEGER FOR i = i TO 100 ProgressBar1.Value = ProgressBar1.value + i / 100 WAIT 0.1 NEXTEND
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
caracole#24 Posté le 20/12/2010 à 14:01:00
Bien sur il y a plus simple que d'utiliser des Process...

Tu fais juste comme ça:


* Application.Busy = 1

* SHELL = ".... commande a executer....." WAIT

* Application.Busy = 0

et le curseur de la souris changera d'aspect en OCUPPE .....

Il me semblait de comprendre les Process ouvrerai la porte a plein de chose ... mais je me suis trompé .... autant pour moi...


Olivier.
Ton exemple du traitement de process est un excellent exercice de compréhension ( a quelques ajustements pres dans l'exemple )
Ceci-dit la barre de progression ne fonctionnera jamais faute de connaitre le temps ou volume du traitement ( a moins d'etre devin ).
ceci dit, l'utilisation de Application.Busy=0/1 est excellent

Application.Busy=1 + Button.enabled=false dans Executer_Commande()
Application.Busy=0 + Button.enabled=true dans ProcessCompil_Kill()

C'est à mon avis, la meilleure solution que j'ai trouvé
Merci

Pierre
12