Enregistrement et barre de progression
Veillard
Membre
Bonjour,
Comment gère-ton une barre de progression à l'ouverture d'un fchier ?
Je m'explique : j'ai des fichiers assez volumineux qui mettent 2 à 3 sec. voire plus pour s'ouvrir. Pour montrer que tout se passe bien, j'aimerais afficher une barre de progression pour montrer l'état d'avancement lors du chargement du fichier. Comment fait-on ?
Comment gère-ton une barre de progression à l'ouverture d'un fchier ?
Je m'explique : j'ai des fichiers assez volumineux qui mettent 2 à 3 sec. voire plus pour s'ouvrir. Pour montrer que tout se passe bien, j'aimerais afficher une barre de progression pour montrer l'état d'avancement lors du chargement du fichier. Comment fait-on ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu as deux types : Determinate (Barre de progression) et Indeterminate (la célèbre roue avec ses dégradés de gris).
Pour un type Determinate, tu règles la barre avec les méthodes incrementBy: ou setDoubleValue:.
Et pour démarrer ton progress indicator, tu fais simplement un startAnimation: dessus, puis un stopAnimation: pour l'arrêter.
Mais pour plus de précisions il vaut mieux jeter un coup d'oeil dans la doc...
En revanche, comment peut-on envoyer le signal d'affichage de la fenêtre contenant la barre après avoir fait un "openDocument:" puis comment envoyer le signal de fin (dès que le fichier est chargé).
...Et surtout comment faire progresser cette barre ? On part de "0.0" et on arrive à "100.0" ça, c'est facile la barre est blanche puis toute bleue sans une vraie progression. :-\\
[aProgressIndicator setUseThreadedAnimation:YES]
Je ne sais pas si c'est ce que tu cherche.
J'ai pas de Mac sous la main, alors ces une idée comme ça...
J'ai essayé la solution de Fouf, mais le compilo ne reconnaà®t pas "setUseThreadedAnimation" ???
Merde, j'ai fais une typo : c'est setUsesThreadedAnimation:
La c'est sur, j'ai fais un copier-coller.
Par contre ça risque de ne pas être cool en termes de vitesse... :-\\
Qui ne veux rien n'a rien. CQFD ;D
J'ai toujours pas trouvé
Quelqu'un a une petite idée ? :why?:
Salut Favouille )
C'est la progression de ton "parsing" des datas contenues dans un fichier que tu veux visualiser ?
Tu peux pas tout simplement appeler l'affichage de ta barre en entrant dans ta méthode loadDataRepresentation et en la quitter à la fin de cette méthode ?
Je sens que c'est pas tout à fait ce qui te bloque, tu peux préciser ta question ?
P.S. Et si tu veux être compatible windows n'oublies pas de également de prévoir de figer la barre de progression et toute l'appli avant la fin de ta méthode, si possible en imposant un redémarrage complêt de la machine ;D :P
L'idéal serait de faire apparaà®tre une fenêtre avec une barre de progression indiquant l'avancée de chargement du fichier. Ce serait mieux que la roue chromatique...
Comment on fait ???
Désolé, c'est plus dur sur Mac :)beta:
bein tu peux tout simplement créer ta fenêtre sous I.B. avec sa barre de progression et un outlet sur la fenêntre et sur la barre.
- En entrant dans ta méthode loadDataRepresentation tu commence par un:
[maFenetreProgress orderFront:self];
ou
[maFenetreProgress makeKeyAndOrderFront:self];
si tu veux que ta fenêtre puisse recevoir des actions de l'utilisateur (annulation ...)
- puis t'adresse à la barre tous les messages que tu veux pour la mettre à jour au fur et à mesure.
- puis en fin de méthode, si t'as rien planté, tu envoies un:
[maFenetreProgress orderBack:self]
Que faire ?
Qu'est-ce donc qui marche pas ?
Ta fenêtre n'apparaà®t pas ?
J'ai utilisé "[loadingWindow orderFront:self]" dans d'autres méthodes et ça marche...
N'aurais tu pas mis ta fenêtre de progression dans le nid du document au lieu du main.nib?
En fait ton nib du document n'est pas encore chargé à ce moment là et ce genre de fenêtre de progression et d'alerte n'a pas vocation à exister en autant d'exemplaire que de document.
Si c'est là ton erreur alors mets donc tout ça dans le main.nib.
Eventuellement crée et instancie un délégate de ton appli dans le main.nib pour recevoir les outlets.
dans loadDataRepresentation t'as "plus qu'à " écrire les choses de cette façon par exemple:
Bien sur après avoir implémenté dans ton AppDelegate les méthodes showFenetre advanceProgress hideFenetre ... tout ce dont t'as besoin quoi.
OK, j'ai corrigé.
C'est bon !
Mais bon, t'as qu'a importer le header de ton AppController
et typer, comme AppDelegate, l'objet auquel t'adresses ton showLoadingWindow.
Tu fais alors l'appel en 2 lignes
Il ne me reste plus qu'à chercher comment animer cettre progressBar...