Fenêtre mère MDI et fenêtre fille non MDI

Le
David Berthemet
Bonjour,

La fenêtre principale de mon programme est une fenêtre mère MDI.
À partir de cette fenêtre, toutes les fenêtres ouvertes le sont via des
fonctions Ouvre ou OuvreFille.
Pour certaines fenêtres, je souhaite maximiser la taille de la fenêtre fille
à la zone MDI.
Pour cela, j'ai inclu un ajustement de la taille de la fenêtre dans
l'initialisation de la fenêtre via le code suivant :

MoiMême..X = FenIntPosX(mere) + mere..MDIGauch + 2
MoiMême..Y = FenIntPosY(mere) + mere..MDIHaut + 2
MoiMême..Largeur = mere..Largeur - mere..MDIGauche - mere..MDIDroite -
FenIntPosX(mere) - LargeurBords
MoiMême..Hauteur = mere..Hauteur - FenIntPosY(mere) - mere..MDIHaut -
mere..MDIBas - HauteurBarreMessage

Les valeurs X et Y sont correctes et ne posent pas de problème.
Par contre, je n'arrive pas à déterminer les valeurs à affecter aux
variables "LargeurBords" et "HauteurBarreMessage" et suivant les postes sur
lequel le programme est ouvert, ma fenêtre déborde de la fenêtre mère ou
laisse apparaître le fond de celle-ci à droite et en bas (Cela semble
dépendre de la résolution du poste mais aussi du sytème d'exploitation,
windows 7 donnant l'impression d'affecter uen valeur plus grande aux
bordures de la fenêtre mère).
Le problème est aussi très net lorsque l'on modifie la taille de la fenêtre
mère, l'écart pouvant apparaître lorsque la fenêtre est réduite alors qu'il
est nul avec la fenêtre maximisée.
Existe-t-il une astuce pour déterminer la taille exacte de la zone MDI pour
éviter ce problème d'adaptation de la taille de la fenêtre fille ?

Merci d'avance

Cordialement,

David Berthemet
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
rpc
Le #22646951
Peut-être ai-je mal compris la question, mais ça devrait être le
contraire qu'il faut faire, la fenêtre mère étant une fenêtre
'normale' et les filles étant configurées MDI et ouvertes avec
mdiouvre ? De ce fait, celles-ci se retrouvent obligatoirement
incluses à l'intérieur de la fenêtre mère; un déplacement de la
fenêtre mère déplace alors toutes les fenêtres filles ouvertes à
l'intérieur de celle-ci.

Richard
David Berthemet
Le #22647421
"rpc"
Peut-être ai-je mal compris la question, mais ça devrait être le
contraire qu'il faut faire, la fenêtre mère étant une fenêtre
'normale' et les filles étant configurées MDI et ouvertes avec
mdiouvre ? De ce fait, celles-ci se retrouvent obligatoirement
incluses à l'intérieur de la fenêtre mère; un déplacement de la
fenêtre mère déplace alors toutes les fenêtres filles ouvertes à
l'intérieur de celle-ci.

Richard

Richar, merci de ton intérêt à mon problème que tu as effectivement mal
compris.
Ma fenêtre mère est une fenêtre mère MDI.
Toutes les autres fenêtres ne sont pas des fenêtres MDI mais des fenêtres
libres. Je souhaite adapter automatiquement la taille de ces fenêtres libres
à la zone MDI de ma fenêtre principale. Je n'ai pas de problèmes pour
modifier la taille de mes fenêtres filles avec celle de la fenêtre mère ou
pour les déplacer de concert.
Malheureusement, lorsque j'adapte la taille des fenêtres filles, dans
certains cas et/ou sur certains postes, la taille des fenêtres est un peu
plus petite que la taille de la zone libre MDI.
Je comprends mal pourquoi mon code d'adaptation est faux uniquement dans
certains cas et pourquoi il fonctionne bien dans d'autres cas.

Cordialement,

David Berthemet
Emmanuel Haefelé
Le #22647571
"David Berthemet"
Malheureusement, lorsque j'adapte la taille des fenêtres filles, dans
certains cas et/ou sur certains postes, la taille des fenêtres est un
peu plus petite que la taille de la zone libre MDI.



A tout hasard ...

As-tu essayé de faire ton calcul sur la fenêtre mère avec les fonctions
FenIntHaut et FenIntLarg, plutot que ..Largeur et ..Hauteur.

De mon côté je fais plutôt un truc du style :

nLargeurDisponible = FenIntLarg ( gsNomFenetreMère ) - { gsNomFenetreMère,
indFenêtre }..MDIGauche - { gsNomFenetreMère, indFenêtre }..MDIDroite

nHauteurDisponible = FenIntHaut ( gsNomFenetreMère ) - { gsNomFenetreMère,
indFenêtre }..MDIHaut


Amicalement,

Emmanuel Haefelé.
David Berthemet
Le #22657801
"Emmanuel Haefelé" a écrit dans le message de groupe de discussion :
4cab54ba$0$7717$
As-tu essayé de faire ton calcul sur la fenêtre mère avec les fonctions
FenIntHaut et FenIntLarg, plutot que ..Largeur et ..Hauteur.


...
Amicalement,

Emmanuel Haefelé.



Bonsoir,

Désolé pour le retour un peu tardif mais mon PC m'a joué des mauvais tours
:-)
Effectivement, FenIntHaut et FenIntLarg me permettent de mieux gérer
l'affichage et de corriger les bugs que j'avis sur certains postes.
Le seul problème restant et d'estimer la hauteur de la barre de message,
mais celle-ci semble identique quelque soit les postes testés et ne devrait
pas poser de problème.

Merci pour votre aide,

Cordialement,

David Berthemet
Emmanuel Haefele
Le #22660121
"David Berthemet"
Le seul problème restant et d'estimer la hauteur de la barre de message,
mais celle-ci semble identique quelque soit les postes testés et ne
devrait pas poser de problème.



Personnellement j'ai opté pour une hauteur fixe quelque soit le poste mais
je dois dire que je n'ai pas beaucoup cherché pour trouver la hauteur
exacte.


Amicalement,

Emmanuel Haefelé.
Thierry G.
Le #22719321
... et avec Maximize() ?


"Emmanuel Haefele" a écrit dans le message de groupe de discussion :
4cb0761b$0$32435$

"David Berthemet"
Le seul problème restant et d'estimer la hauteur de la barre de message,
mais celle-ci semble identique quelque soit les postes testés et ne
devrait pas poser de problème.



Personnellement j'ai opté pour une hauteur fixe quelque soit le poste mais
je dois dire que je n'ai pas beaucoup cherché pour trouver la hauteur
exacte.


Amicalement,

Emmanuel Haefelé.
Emmanuel Haefelé
Le #22720541
From: "Thierry G."
Bonjour Thierry,

... et avec Maximize() ?



Tout dépend de ce que l'on veut faire mais ici je ne pense pas que nous
voulions maximiser complètement les fenêtres. Ceci étant dit c'est aussi
une solution.


Amicalement,

Emmanuel Haefelé.
David Berthemet
Le #22720531
"Thierry G." a écrit dans le message de groupe de discussion :
4cc5d8af$0$32441$
... et avec Maximize() ?



Bonjour,

Maximise() ne répond pas à mon besoin car il s'agit de fenêtres libres que
je veux adapter à la zone MDI de la fenêtre mère (je veux aussi et surtout
qu'elles se déplacent avec la fenêtre mère) et maximise va les maximiser à
la taille de l'écran.

La solution d'Emmanuel est effectivement la bonne et me permet de résoudre
tous mes problèmes.

Cordialement,

David Berthemet
Thierry G.
Le #22721531
Désolé, j'ai lu trop vite :/

"Emmanuel Haefelé" a écrit dans le message de groupe de discussion :
4cc68557$0$7696$

From: "Thierry G."
Bonjour Thierry,

... et avec Maximize() ?



Tout dépend de ce que l'on veut faire mais ici je ne pense pas que nous
voulions maximiser complètement les fenêtres. Ceci étant dit c'est aussi
une solution.


Amicalement,

Emmanuel Haefelé.
Publicité
Poster une réponse
Anonyme