cs_vbond
Messages postés4Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 6 novembre 2003
-
5 nov. 2003 à 22:38
CyberCoinkoin
Messages postés1Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention23 avril 2004
-
23 avril 2004 à 14:28
Salut,
Je désire réaliser une fenetre qui contient une partie avec des controles standards (labels, boutons, zones de texte...) et en dessous, une zone qui puisse contenir des fenetres filles MDI.
Comment faire, puisque si on positionne IsMDIContainer à true sur une Form, alors celle-ci ne peut plus contenir de controles standards? Et si on laisse IsMDIContainer à false alors on ne peut ajouter de fenetres filles MDI.
(En java ce n'est pas difficile à faire... oups, je vais me faire taper sur les doigts là non? ;o) )
bucherb
Messages postés412Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 août 2007 6 nov. 2003 à 09:54
Une soltion serais de faire une ToolBar dans ta fenetre parente..
Ou une autre serais de faire une autre fenêtre avec tes controls (à la photoshop style)
Ou alors de faire en java ;-)
-------------------------
Trambert le vert
MCP SQL2000, C# .NET, ASP .NET
cs_vbond
Messages postés4Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 6 novembre 2003 6 nov. 2003 à 13:56
Merci pour ces idées.
J'avais pensé à faire une autre fenetre style photoshop, mais je n'avais pas pensé à la toolbar.
Quoi qu'il en soit, je trouve dommage qu'il y ait une telle limitation.
Il n'était pas difficile d'implémenter les fenêtres MDI comme cela est fait en JAVA, et cela n'aurait absolument rien enlever au mode de fonctionnement actuel.
Pendant qu'on y est, si j'opte pour la solution "à la photoshop style", y a-t-il moyen de rendre une fenêtre MDI toutjours visible (always on top) facilement?
bucherb
Messages postés412Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 août 2007 6 nov. 2003 à 14:03
Euh je sais pas, je dirais que le plus simple moyen c'est de lui redonner le focus quand elle la perd.
Euh non oublie. Sa c'est le plus sur moyen de rien pouvoir faire lol. Sa bloque tout tu peux rien ouvrir d'autre, Même pas le menu démarrer lol
Euh mais a part ça tu peux mettre des controls sur une fenêtre qui est Parent Mdi, le seul ennui c'est qu'ils seront cachés par tes mdi child. Donc rien ne t'empeche de gérer tes mdi pour pas qu'ils recouvrent ta zone de controls...
-------------------------
Trambert le vert
MCP SQL2000, C# .NET, ASP .NET
cs_vbond
Messages postés4Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 6 novembre 2003 6 nov. 2003 à 14:47
Mouais, je suis d'accord, mais c'est pas aussi "simple" que je l'aimerais.
Néanmoins ca semble réalisable.
Si je trouve une solution élégante, je la fournirai en tant que source.
To be continued...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_PetitJean
Messages postés15Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention17 avril 2004 6 nov. 2003 à 17:27
Salut,
Ci-après, un petit exemple de code qui permet d'afficher un controle dans une fenetre MDI.
Pour afficher les fenetres enfants sans cacher les différents contrôles, il suffit de traiter les positions d'affichage des fenetres enfants et le redimensionnement.
Pour mieux faire la différence entre les 2 zones de l'écran, pourquoi ne pas poser les controles sur un panel
En espèrant que cela pourra vous aider ...
--------------------------------------
Le code ...
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
public class FormMdi : Form
{
private Button BtNewMdiChild;
private int childCount;
[STAThread]
public static void Main(string[] args)
{
FormMdi MaFormMdi = new FormMdi();
Application.Run(MaFormMdi);
}
public FormMdi()
{
InitializeComponent();
}
private void InitializeComponent()
{
SuspendLayout();
BtNewMdiChild = new Button();
BtNewMdiChild.Size = new Size(100, 24);
BtNewMdiChild.Location = new Point(10, 10);
BtNewMdiChild.Text = "New Form";
BtNewMdiChild.Click += new EventHandler(BtNewMdiChild_OnClick);
cs_vbond
Messages postés4Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 6 novembre 2003 6 nov. 2003 à 21:59
Merci.
J'avais essayé de mettre des controles dans la fenetre (qui était définie comme MDIContainer), mais alors l'application plantait (sous C# Builder)
J'ai essayé votre code et ca fonctionne (c'est à rien n'y comprendre).
Il ne reste plus qu'à gérer le positionnement des fenetres filles et le tour est joué.
CyberCoinkoin
Messages postés1Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention23 avril 2004 23 avril 2004 à 14:28
Salut,
Merci à petitJean pour sa solution que j'ai décidé d'adopter (c'est quand même abhérant qu'on soit obligé de faire ça...).
Donc je gère le positionnement de mes fenêtres en surchargeant mes méthodes de la manière suivante :
// Ici j'empeche d'aller avant la position x = 200
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint (e);
if (this.Location.X < 200) this.Location
= new System.Drawing.Point(200,this.Location.Y);
}
protected override void OnMove(System.EventArgs e)
{
if (this.Location.X < 200)
this.Location =
new System.Drawing.Point (200,this.Location.Y);
base.OnMove (e);
}
mais voila j'ai deux problèmes:
1) le déplacement cause un petit bug graphique lorsque je vais en dela de l'abscisse x=200 (j'ai des scintillements).
2) je ne trouve pas comment gérer la minisation des fenêtres. En effet mes fenêtres minimisées vienne se placer en dessous des x= 200 ce qui évidement ne m'arrange pas.