Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

9 réponses
Avatar
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

9 réponses

Avatar
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
Avatar
David Berthemet
"rpc" a écrit dans le message de news:

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
Avatar
Emmanuel Haefelé
"David Berthemet" a écrit :

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é.
Avatar
David Berthemet
"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
Avatar
Emmanuel Haefele
"David Berthemet" a écrit

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é.
Avatar
Thierry G.
... et avec Maximize() ?


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

"David Berthemet" a écrit

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é.
Avatar
Emmanuel Haefelé
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é.
Avatar
David Berthemet
"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
Avatar
Thierry G.
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é.