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

Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
13 novembre 2008
- - Dernière réponse : cs_Loda
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
- 19 nov. 2007 à 20:28
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Loda
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
13 novembre 2008
0
Merci
En passant, la même chose arrive lorsque les fenetres MDI sont maximized et que j'en crée une nouvelle..
Commenter la réponse de l0sth34d2
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
13 novembre 2008
0
Merci
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);
Commenter la réponse de l0sth34d2
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
0
Merci
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.
Commenter la réponse de cs_Loda
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
13 novembre 2008
0
Merci
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.
Commenter la réponse de l0sth34d2
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
0
Merci
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.
Commenter la réponse de cs_Loda

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.