[.net 2] ordonnancement et affichage d'evenement dans le temps (comme dans outlook 2007)

Description

Ce code a pout but de répondre à une question du forum : (lisez la conclusion ^^)
http://www.vbfrance.com/infomsg_ARRANGEMENTS-RECTANGLES_970466.aspx
cela explique pourquoi je n'ai pas fait d'interface utilisateur je laisse le soins a ceux qui en auront besoin de changer la methode "DrawEvenement" de la classe en question ainsi que tout le reste.

Source / Exemple :


//Tri des différents evenement :
        internal void Organiser()
        {
            Int32 nIndex;
            Boolean bClasse ;
            lstDernierParColonne.Clear();
            lstDernierParColonne.Add(lstEvenement[0].Fin);
            lstEvenement[0].Colonne = 1;

            for(nIndex = 1; nIndex <= lstEvenement.Count-1; nIndex++)
            {
                bClasse = false;
                lstEvenement[nIndex].Colonne = 1;
                while(!bClasse)
                {
                    if ((lstEvenement[nIndex].Debut.Hour * 60 + lstEvenement[nIndex].Debut.Minute) < lstDernierParColonne[lstEvenement[nIndex].Colonne - 1])
                    {
                        lstEvenement[nIndex].Colonne++;
                        if (lstDernierParColonne.Count < lstEvenement[nIndex].Colonne)
                        {
                            lstDernierParColonne.Add(lstEvenement[nIndex].Fin);
                            bClasse = true;
                        }
                    }
                    else
                    {
                        lstDernierParColonne[lstEvenement[nIndex].Colonne - 1] = lstEvenement[nIndex].Fin;
                        bClasse = true;
                    }
                }
            }
        }

//Affichage

        public void DrawEvenement(Graphics grp)
        {
            SolidBrush brush = new SolidBrush(_clrCouleur);
            Pen pen = new Pen(Color.Black);
            grp.FillRectangle(brush, Parent.Location.X + (Parent.Largeur * (nColonne - 1)), Parent.Location.Y + (_dDebut.Hour * 60 + _dDebut.Minute) * Parent.Echelle / 30 - (Parent.OffSet * 60 * Parent.Echelle / 30), Parent.Largeur, ((_nDuree / 30) * Parent.Echelle));
            grp.DrawRectangle(pen  , Parent.Location.X + (Parent.Largeur * (nColonne - 1)), Parent.Location.Y + (_dDebut.Hour * 60 + _dDebut.Minute) * Parent.Echelle / 30 - (Parent.OffSet * 60 * Parent.Echelle / 30), Parent.Largeur, ((_nDuree / 30) * Parent.Echelle));
        }

//

Conclusion :


ce code ne se préoccupe pas de la date pour le moment meme si j'ai mit a la disposition des ascesseur du type "DateTime" il serrait de bonne augure de le gérer aussi en rajoutant des offsets et des largeurs pour les date comme le montré l'image mais ce n'est en rien qqchs d'obligatoire.

Peut être que j'ameliorerais le graphisme sous peu en utilisant des "brush" degradé avec des couleur un peux plus vives et un quadrillage de fond sur le form pour bien mettre en oeuvre cela mais pour le moment je tenais à apporter une reponse concrete à un pb.
Je vous pris donc de tenir compte de cela avant de m'harponner ^^

Codes Sources

A voir également

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.