Ven 08/02/2013 - Actualités

Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 08/02/2013 - Actualités

Message non lu par Xavier »

Périodes


Le design de la gestion des Périodes est toujours bloqué, le choix ne pouvant être finalisé entre :
- Une page dédiée, ce qui donne plus de place mais oblige à remettre un TreeView pour les dossiers.
- Un panneau à la place de celui de l'Agenda (solution désormais préférée).

Il a été question de ne pas gérer les dossiers pour les Périodes, du fait de l'impossibilité de toutes les afficher dans le Calendrier. Finalement il sera bien possible de ranger les types de périodes dans les dossiers. Par contre, il n'est pas encore certain que la vue étendue s'appliquera aux Périodes, la notion de priorité entre dossiers n'existant pas. Par exemple, s'il y a 3 périodes dans le dossier Perso et 3 dans le dossier Pro, lesquelles afficher en vue étendue ?


La gestion elle-même sera faite via un ListView qui affichera les types de périodes et leurs entrées :

Code : Tout sélectionner

( ) Congés payés 2013 (11,0 jours)
    Lun 21/01/2013 - Ven 01/02/2013 (10,0 jours)
    Ven 08/02/2013 (1,0 jour)
( ) RTT 2013 (0.0 jour)
Il sera possible d'assigner une couleur aux types de périodes. Ils seront triables, et ce tri déterminera la priorité, car seules 3 entrées seront affichables dans le Calendrier. Le tri des périodes elles-mêmes sera fait par l'application.


Niveau stockage, blocage également, il faut analyser les impacts et décider si une période de 5 jours doit être stockée dans 1 objet ou 5.


La signalisation dans le Calendrier se fera avec un système de bandes de couleur, de largeur 3 pixels, inspiré (copié / plagié) du calendrier Android comme proposé par FBu :
AndroidCal.png
Les premières maquettes donnent des résultats mitigés, il va falloir éclaircir les cellules du Calendrier et travailler les couleurs à proposer (une demi douzaine à priori).


Tout cela ne servira à rien si l'affichage des bandes dans le Calendrier ne fonctionne pas, et c'est donc la prochaine tâche.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 08/02/2013 - Actualités

Message non lu par Xavier »

Cellules et marqueurs


Afficher les marqueurs en dessinant directement sur la fenêtre (via son Canvas) ne fonctionne pas, car les composants existants recouvrent les dessins. Il a d'ailleurs fallu positionner les marqueurs à la position (0, 0) de la fenêtre pour se rendre compte que le bouton Agenda les recouvrait... lol

Les cellules sont composées d'un TShape (pour afficher la couleur de fond) et d'un TLabel par dessus (pour afficher la date). Les TLabel ont bien un Canvas, et il est possible d'y afficher les marqueurs, mais ils sont immédiatement effacés par la couleur de fond.

Pour le moment, la seule solution qui fonctionne est de créer d'autres objets TShape et de les positionner au dessus des TLabel des dates.


On a donc une solution, mais elle oblige à créer des objets, donc de les détruire après usage, d'en faire une liste, etc...

Il va falloir continuer à travailler le topic des Canvas, l'objectif étant vraiment de dessiner les marqueurs sur les composants existants, afin que Windows les efface automatiquement quand XT redessine ses composants.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 08/02/2013 - Actualités

Message non lu par Xavier »

Marqueurs


Avoir un objet pour chaque marqueur n'est finalement pas une si mauvaise chose :
- Lors d'une réduction de la largeur, le passage de 20 à 10 semaines (par ex.) cache les composants des semaines en trop.
- Si la fenêtre est élargie à nouveau, les composants sont simplement rendus visibles.

Avoir les marqueurs en composants permet donc de ne pas avoir à les redessiner à chaque resize. Il va juste falloir lier tous ces objets ensemble pour que les Hide et Show se fassent automatiquement.


On garde donc, en partant du fond :
- Un TShape pour afficher une couleur de fond et un rectangle de sélection.
- Par dessus, de 0 à 3 autres TShapes pour afficher les marqueurs.
- Tout en haut, un TLabel pour afficher la date. (Elle pourrait être affichée sur le TShape du fond mais ces objets n'ont pas d’évènement OnClick, donc il faut de toute façon un vrai composant Windows au dessus pour intercepter tous les clics faits sur la cellule.) Le TLabel a la même largeur que le TShape du fond, et il est évidemment transparent.

Les semaines et les mois utilisent encore des TPanel comme en XT3 puisqu'ils ne sont pas destinés à afficher des marqueurs. (Les TPanels étant des vrais composants, ils recouvriraient les images des marqueurs.)

Toutes ces restrictions sont vraiment contraignantes... :|
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Ven 08/02/2013 - Actualités

Message non lu par Xavier »

Marqueurs


La liste des marqueurs de chaque cellule, nécessaire pour les opérations de Hide et Show lors du resize, va à priori s'intercaler entre les deux objets.

Les objets sont liés entre eux par le stockage dans leur propriété Tag du pointeur convertit en entier d'un autre objet : "Object_A.Tag := Integer(Object_B)". La lecture se faisant dans l'autre sens : "Object_B := Pointer(Object_A.Tag)".

Et comme il faut quand même stocker la date (également convertie en entier 32 bits), c'est le dernier objet de la lignée qui s'en occupe, on va donc avoir : TLabel -> TList -> TShape -> Date.


Avant de passer à l'implémentation, il reste à voir comment obtenir des marqueurs en pseudo-relief comme cela :
Markers.png
Les TShape ne permettant de faire que des formes simples, voyons un peu du côté des TImages ...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Répondre