IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Position des boites de dialogues "systeme"


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 002
    Par défaut Position des boites de dialogues "systeme"
    Bonjour,

    En mettant la propriété "StartPosition" à "Manual" et ensuite en définissant dans le code les valeurs de .Top et .Left j'arrive à contrôler précisément la position à laquelle s'affiche les boites de dialogues de mon application

    Mais comment faire avec les boites de dialogues système ? A savoir :

    OpenFileDialog
    SaveFileDialog
    MsgBox
    PrintDialog
    PageSetupDialog
    ...

    A noter, cela est bizarre, pour le PrintPreviewDialog j'ai accès aux propriétés .Top .Left .With .Height ce qui est bien pratique, mais pas pour les autres boîtes de dialogues

    Après quelques recherches j'ai trouvé des codes en VB.NET et C# mais ils ne fonctionnent pas.

    Vu que le .NET est vraiment orienté objet (gros avantage par rapport à VB5) je suppose que toutes ces boîtes de dialogues doivent, à un moment ou à un autre, hériter de la classe Windows.Form. J'imagine qu'en obtenant la bonne référence je dois bien pouvoir accéder aux propriétés .Width et .Height (au moins en lecture seule) et aux propriétés .Top et .Left en écriture.

    Comment faire ?

    Merci

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 128
    Par défaut
    ..

  3. #3
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    bonjour,

    ce sujet a deja eté traité sur le forum.
    Il existe une solution liée aux appels Pinvoke :
    http://stackoverflow.com/questions/1...savefiledialog

    .....Breffff une solution qui a fait ses preuves consiste a developper toi meme tes classes de boite de dialogue en les faisant heriter de la classe form.
    Voila comment palier au problème.

    a+

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    tu peux aussi importer FindWindow et SetWindowPos de user32.dll. Juste avant l'appel à ShowDialog tu lances un nouveau thread qui cherche la fenêtre de dialog avec son lpClassName, dans une boucle infinie, puis qui set sa position x,y avec le flag 0x0201 pour ne pas modifier les autres dimensions (w, h et z). Pense bien à tuer le thread une fois ça fait.

    Quoi c'est super compliqué !? Ben ouai

    Blague à part (quoique, ce que je décris plus haut est fonctionnel ^^) il est normal que PrintPreviewDialog propose les attributs de Form puisqu'il en dérive, ce qui n'est pas le cas d'OpenFileDialog par exemple.

  5. #5
    Membre chevronné Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 002
    Par défaut
    Bonjour,

    L'intérêt de la programmation - et plus particulièrement du .NET - est de ne pas réinventer la roue

    Dommage qu'une chose aussi triviale soit aussi complexe ou "crade"

    Je vais quand même essayer la manip avec la dll

    Merci A+

  6. #6
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par electroremy Voir le message
    Bonjour,

    L'intérêt de la programmation - et plus particulièrement du .NET - est de ne pas réinventer la roue
    je pense que tu ne sais pas de quoi tu parles....... plus particulierement le dotnet qui s appuie sur les api natives ou pinvoke...... (que tu appelles vulgairement la manip avec la dll) !!! Et puisqu en plus de ca il est question d heritage dans la majeure partie des classes que constitue le framework .... il ne serait pas question de reinventer la roue en creant une classe heritant d une autre afin de repondre à un besoin !

    ++

  7. #7
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Re,

    pour le WinForm sous Zindozs le .NET lui-même ne réinvente pas la roue, puisqu'il se base sur "le bon vieux Win32 des familles" qu'on utilisait y'a presque 20 ans.
    L'astuce que je présente consiste juste a rappatrier les fonctionnalités d'origine qui permettent de manipuler les objets à notre guise.
    Dans l'absolu faire ce genre de choses n'est pas sale, dans le cas qui nous intéresse et avec la solution que je propose oui, un peu
    (mais y'a peut-être moyen de faire plus propre, tu peux creuser le sujet si ça t'intéresse).

    Maintenant si t'es amené à faire beaucoup de WinForm tu te rendras rapidement compte qu'avoir son pool de Form maison est très, très pratique.
    Tu te fais une petite DLL, avec un arbre de classes qui va bien et un namespace bien causant et pour chaque nouveau projet t'auras plus qu'à l'intégrer.
    La solution proposée par wallace1 (faire ses propres dialog) est donc la meilleure à mon sens. Ma réponse précédente c'était surtout pour la blague

Discussions similaires

  1. [MFC]Application basée sur des boites de dialogue
    Par -=Spoon=- dans le forum MFC
    Réponses: 2
    Dernier message: 24/08/2005, 11h55
  2. [ThemeEngine] Comment modifier la langue des boites de dialogue ?
    Par piloumoi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 15/08/2005, 11h35
  3. colorer des boites de dialogue à la validation
    Par shout dans le forum Windows
    Réponses: 20
    Dernier message: 04/08/2004, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo