Affichage pour CommonDialog

Résolu
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015 - 30 mai 2015 à 13:02
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015 - 1 juin 2015 à 15:18
Bonjour,

Quelqu'un sait-il comment prédéfinir l'affichage (Très grandes icônes, Grandes icônes, Icônes moyennes, Petites icônes, Liste, Détail) quand on utilise CommonDialog en mode ShowOpen ?

9 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
30 mai 2015 à 13:23
Je ne pense pas que cela soit possible, en quelle version de VB tu es ?
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
30 mai 2015 à 14:22
Merci pour la réponse

C'est en VB6 mais s'il y a un moyen on devrait pouvoir s'en servir dans toutes les versions.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 30/05/2015 à 16:59
Bonjour, qu'il s'agisse des paramètres du bureau, des fenêtres actives, des boîtes de dialogues, etc ... ils dépendent uniquement des valeurs données aux réglages avancés des paramètres d'affichage de Windows).
On peut modifier ces paramètres manuellement. On peut également le faire par utilisation de la fonction SystemParametersInfo de la librairie user32 de l'API de Windows.
Mais attention :
1) on touche-là à la configuration générale de Windows et pas uniquement à une application !
2) on ne fait jamais cela sur la machine d'un utilisateur sur laquelle on installe une appli (je fusillerais personnellement celui qui me ferait un coup pareil)
3) s'il s'agit de ta propre machine, autant le faire manuellement depuis le panneau de configuration. En observant que Windows lui-même mettra un certain temps (entre 5 et 30 secondes selon les paramètres modifiés) pour prendre en compte la nouvelle configuration.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
30 mai 2015 à 22:44
Oui mais le problème avec l'affichage de CommonDialog ShowOpen c'est que l'on a (aléatoirement ?) de temps en temps Grandes icones ou Liste ou autre, ça dépend peut-être de ce qui avait été choisi la dernière fois, encore que, mais cela semble imprédictible sur les dossiers qui n'ont jamais été ouverts, ça serait intéressant de pouvoir uniformiser tout ça mais évidemment dans le cadre d'exécution du programme, pas pour le fonctionnement général.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 31/05/2015 à 00:32
Ces paramètres, je le répète, ne dépendent que de la configuration de l'affichage décidé sur une machine. Pas d'aléas, dans cette affaire (aucun).
Et ces paramètres, je le répète, concernent l'ensemble et non une application. Je ne vois donc pas ce que tu veux dire.

Quel est ton OS ? (quelle version de Windows ?)
Ce qui m'intrigue en te relisant, c'est que tu parles de listes, de détails, ... qui n'ont rien à voir avec la taille des icônes et qui sont des options d'affichage de l'explorateur, options qui ne sont pas reprises par l'affichage de CommonDialog.showopen de VB chez moi (avec XP)

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
31 mai 2015 à 00:49
Je crois commencer à deviner que tu as utilisé la propriété flags du contrôle CommonDialog.
Si tu lui a donné une valeur liant son mode d'affichage à celui de l'explorateur, il obéit alors.
Et tu n'y pourrais rien car ce ne serait pas sur le contrôle, qu'il te faudrait agir, mais sur l'explorateur lui-même.
Si tu veux éviter ce genre de "liaison", mets donc la propriété flags de ce contrôle CommonDialog à 0.
Tu ne saurais avoir le beurre (paramètres d'affichages identiques à ceux définis pour l'explorateur) et l'argent du beurre (avoir des paramètres uniformisés, donc non identiques à ceux définis pour l'explorateur)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 31/05/2015 à 07:30
Ah ! Je vois maintenant, de bon matin, de quoi tu veux parler : de l'utilisation faite par l'utilisateur de l'icône des paramètres d'affichages (je n'avais pas compris cela ... et pensais que tu voulais parler des éléments de la boîte elle-même)
Je ne vois en effet pas comment intervenir sur le code (code interne du contrôle CommonDialog) qui régit l'utilisation de cette icône.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 31/05/2015 à 11:09
J'ai trouvé ceci, que je ne te recommande surtout pas, en cherchant sur la toile :
http://www.vbaccelerator.com/home/VB/Code/Libraries/Common_Dialogs/Common_Dialog_Direct/bugTrak1419-6.asp
le code en question (qui utilise un module de classe) :
- agit, par la fonction SendMessage de l'Api de Windows, sur le choix fait dans le menu déroulant de l'icône d'affichage (il impose celui que l'on détermine dans l'énumération ViewStyles)
- pour y parvenir, il énumère toutes les fenêtres en cours pour trouver le handle adéquat : le hwnd de la fenêtre à laquelle envoyer le message (hwnd = GetParent(DLG) dans son code)
J'ai décrit l'essentiel de ce code. Tu verras tout le reste en l'analysant.

Le gros hic de cette méthode : elle nécessite l'utilisation d'un timer tournant en permanence, seule manière de déterminer si la fenêtre en cause a été ouverte (attention : il s'agit non de celle du Commondialog, mais de celle de choix du mode d'affichage).

Tout cela me parait bien cher payer pour un faux confort très relatif.
Si tel n'avait pas été le cas, je me serais creusé un peu les méninges pour tenter d'y parvenir sans ce timer. Mais là ... non !
Je te laisse donc ce "plaisir".

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
1 juin 2015 à 15:18
Bon, je vois que pendant que j'avais renoncé tu dialoguais avec toi-même ;)
Après tout ce n'est qu'un point de détail pour le confort d'utilisation, comme il ne semble pas y avoir de solution simple je vais laisser en l'état.

En tout cas merci beaucoup pour t'être finalement investi plus que moi la dedans...
0
Rejoignez-nous