Changement de fenetres MDI... [Résolu]

Signaler
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
-
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
-
Bonjour, je suis entrain de developper une application MDI et il y a plusieurs fenêtres enfants. J'ai un petit problèmes quant aux changements de fenetres. En fait, j'ai une TreeView qui affiche toute les fenêtres MDI ouvertes et quand je click sur un item dans celle-ci, la fenêtre MDI correspondante s'affiche. Tout ceci marche très bien.

Mon problème est présent lorsque les fenêtres MDI sont "maximized". Quand je change de fenêtre, on peu voir en quelques millisecondes que la fenetre correspondante passe de "restored" a "maximized". Cela fait comme un flash dans l'écran. Y a t-il moyen d'éviter cela ? C'est un problème énervant apres un certain temps...

J'ai essayer de mettre toutes les fenetres MDI maximized lorsque une d'entre elles l'est.. mais on peut voir une animation de maximisation des fenetres assez lente lorsqu'il y en a 10 et +

Y a t-il moyen de ne pas faire d'animation de la fenetre lorsqu'elle change de taille ? Sinon une autre idée ?

Merci

6 réponses

Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

les fenêtre MDI sont pas génial-génial, mais cela vient (en grande partie) de leur design fait de long année en arrirère par MS. Ex: pas possible de les cacher, minize dans le coin, .... De nos jour, on a réalisé que le concept de MDI est assez difficile pour des débutants. La tendance est plus au tab (onglet) récement. (bien que les débutants ai aussi des problèmes avec ça....)

Sinon, j'ai résolut un problème similaire en émulait le comportement de maximixed pour les MDI:
Catch les messages de maximized et fait ton propre maximixed.
Change la taille de la fenêtre en fct de ta taille max et bouge tes fenêtres en dehors de la zone visible (genre .x:= -5000). Ceci te permet de rediemensionner tes fenêtre de manières invisible et ensuite tu les déplacer à l'origine.
Seul défautl: les bouttons de la bar de titre ne change pas.

Cela réprésente une charge suplémentaire de travail, mais cela te permet un meilleur control sur le minimize/maximized.

Bon code,

Loda

PS: Attention, je me rappel que l'origine du clientArea de la mdiForm n'est pas la même que la zone ou les mdi évolue. Tu t'en rend compte si tu as une bar d'outils. J'avais du calculer à la main la taille max de mes fenêtres mdi.

PS2: je te dé conseille de desiner toit même les bouttons de maximiz, la taille est fct de pas mal de paramêtre de windows et dépend aussi des versions. (genre t'as vu ceux de vista !?!!)
<hr size ="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
En passant, la même chose arrive lorsque les fenetres MDI sont maximized et que j'en crée une nouvelle..
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
J,ai réussi a faire en sorte que l'animation de la maximisation de la fenetre n'y soit plus.. mais tjr le meme probleme.. on dirait que delphi gere mal les fenetres MDI

var
  Info: TAnimationInfo;
begin
  ZeroMemory(@Info,SizeOf(Info));
  Info.cbSize := SizeOf(TAnimationInfo);
  BOOL(Info.iMinAnimate) := false;
  SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
oh, j'ai oublié:

tu peux aussi faire ta propre barre de titre: cad ne pas utiliser celle de MS et en dessiner une complète toit même dans un compo perso. Cela (peu) donner un look très sympa / original à ton prog.
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
Merci beaucoup! Je sent que j'ai beaucoup de travaila faire de se côté! :P

En premier j'ai cru que c'étaitl'animation des fenêtres qu'il fallais enlever, mais je n'avais pas penser à cette solution. Dommage que c'est comme ça avec Delphi.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
c'est un design de microsoft. Comme bcp de compo, c'est "juste" un wrapper des lib de ms avec des fct en plus. Jet un oeil aux code source !! tu apprendra bcp! De plus, tu verra comment tu peux les modifier.

bon code!

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.