Delphi, C++ Builder & .NET Fait partie de sgcUI

sgcPlanner, Planificateur, Gantt & Kanban pour Delphi, C++ Builder & .NET

Trois vues d'un même plan. Affiche-le comme un calendrier pour l'équipe, comme un diagramme de Gantt pour le chef de projet et comme un tableau Kanban pour ceux qui font le travail, le tout lié à un seul objet de données. Glisse une carte vers Terminé et la barre du Gantt et la couleur du calendrier suivent aussitôt.

VCL, FireMonkey, WinForms, WPF, Avalonia10 000 tâches planifiées automatiquement en 11 ms sous Win64Édition .NET Community gratuiteInclus dans sgcUI Enterprise
Démo ProjectPlanner : les mêmes tâches sur un tableau Kanban, un diagramme de Gantt et un Planificateur

Un plan, trois vues

Treize fonctionnalités pour l'équipe, le chef de projet et ceux qui font le travail. Les fonctionnalités marquées Enregistrée ne sont pas dans l'édition .NET Community gratuite.

Un seul modèle de données

Toutes les vues lisent et écrivent le même TsgcPlannerData.

Un seul modèle de données

Trois vues, un objet de données, toujours synchronisés

Un calendrier, un diagramme de projet et un tableau de tâches ne devraient jamais se contredire. sgcPlanner lie autant de vues que tu veux à un seul objet de données : une carte glissée vers Terminé sur le tableau est dessinée aussitôt avec la couleur Terminé dans le Gantt et le Planificateur, une barre déplacée dans le Gantt déplace l'événement dans le calendrier, et un événement créé dans le Planificateur devient une carte. Chaque modification est une seule mise à jour, donc chaque vue se redessine une seule fois par dépôt.

  • TsgcPlannerData contient le plan, et chaque vue y pointe via Data
  • BarColorMode pbcStatus colore les barres du Gantt selon le statut, comme le fait le tableau
  • SyncSelection partage l'élément sélectionné via SelectedId
  • Le même modèle fonctionne sans aucune vue, dans un service ou un test unitaire
  • De droite à gauche pour l'arabe et l'hébreu : les colonnes du Scheduler et du Kanban s'écoulent depuis la droite, la grille des tâches du Gantt passe à droite, et MirrorTimeline fait aussi courir l'axe de temps du Gantt depuis la droite
Lire la rubrique d'aide
Démo DataSetPlanner : des lignes de jeu de données et les vues du plan qui y sont liées

Un seul modèle de données

Lie un TDataSet, enregistre en JSON, génère du PNG

Ton plan vit déjà dans une base de données, et sgcPlanner le rejoint là où il est. Une source de jeu de données lie l'objet de données à n'importe quel TDataSet, comme FireDAC, TClientDataSet ou dbExpress, charge les éléments, les ressources et les dépendances, suit les changements des jeux de données et réécrit les modifications faites dans les vues. La persistance JSON fonctionne dans toutes les éditions et sur toutes les plateformes, et le moteur de rendu sans interface dessine n'importe quelle vue en PNG ou SVG sur un serveur, Linux64 compris.

  • TsgcPlannerSource_DataSet associe tes noms de champs via ItemFields
  • SaveToFile et LoadFromFile écrivent et lisent le format JSON documenté
  • TsgcPlannerRenderer dessine le Planificateur, le Gantt ou le Kanban sans fenêtre
  • N'utilise que l'unité DB, donc il fonctionne dans les applications VCL, FireMonkey et console
Lire la rubrique d'aide

Un seul modèle de données

Annule et rétablis chaque modification du plan

Un mauvais dépôt ne devrait jamais coûter son après-midi à un planificateur. L'objet de données enregistre chaque ajout, suppression, changement de propriété et déplacement d'un élément, d'une ressource, d'un statut ou d'une dépendance, quel qu'en soit l'auteur : un glisser dans une vue, une modification sur place, Smart Paste, le moteur de planification ou ton propre code. Toutes les vues liées aux données partagent un seul historique, et un groupe de modifications, comme une passe complète de replanification, s'annule en une seule étape.

  • Data.Undo avec Undo, Redo, CanUndo et CanRedo
  • BeginGroup et EndGroup font de plusieurs modifications une seule étape
  • UndoCaption et RedoCaption nomment l'étape suivante pour un élément de menu ou une info-bulle
  • Limit plafonne l'historique, et OnChange met à jour les boutons
Lire la rubrique d'aide

Un seul modèle de données

Saisis le titre directement sur la vue

Ouvrir une boîte de dialogue pour renommer un élément fait perdre du temps. Avec la modification sur place, F2 modifie le titre de l'élément sélectionné dans un petit éditeur placé par-dessus, et un rendez-vous créé en glissant sur un espace vide du Planificateur ouvre aussitôt son éditeur de titre : l'utilisateur glisse et tape. Cela fonctionne de la même façon dans le Planificateur, le Gantt et le tableau Kanban, et chaque modification est enregistrée par l'historique d'annulation.

  • InplaceEdit l'active, il est désactivé par défaut
  • F2 modifie l'élément sélectionné, Entrée valide et Échap annule
  • BeginEdit ouvre l'éditeur depuis ton propre élément de menu
  • IsEditing indique aux touches du formulaire, comme Ctrl+Z, d'attendre pendant que l'utilisateur tape
Lire la rubrique d'aide

Planificateur : réunions, personnes et salles

TsgcVCLScheduler et TsgcFMXScheduler, et les mêmes vues en .NET.

TsgcVCLScheduler day view
TsgcVCLScheduler work week view
TsgcVCLScheduler week view
TsgcVCLScheduler month view
TsgcVCLScheduler agenda view
TsgcVCLScheduler resource timeline view

Planificateur : réunions, personnes et salles

Sept vues calendrier, personnes et salles côte à côte

Les utilisateurs savent déjà comment un calendrier doit se comporter, donc le Planificateur leur donne les vues attendues : jour, semaine de travail, semaine, mois, année, agenda et chronologie par ressource. La vue année affiche douze mini-mois dont chaque jour est teinté selon son niveau d'occupation, et un double clic ouvre ce jour. Ajoute des personnes, des salles ou des machines comme ressources, chacune avec sa couleur, et regroupe le jour ou la semaine par ressource : une clinique voit chaque médecin dans une colonne, un atelier voit chaque poste. Les heures de travail, la plage de jours visible et la navigation sont des propriétés et des appels d'une ligne.

  • View : psvDay, psvWorkWeek, psvWeek, psvMonth, psvYear, psvAgenda, psvTimeline
  • AddResource avec une couleur, et Options.GroupByResource pour une colonne chacune
  • DayStartHour, DayEndHour et SlotMinutes définissent la grille horaire
  • GoToday, Prior, Next et ScrollToTime permettent de se déplacer

La vue Chronologie par ressource est Enregistrée ; dans Community, cette vue affiche un avis.

Lire la rubrique d'aide

Planificateur : réunions, personnes et salles

Glisse pour créer, déplacer et redimensionner

Réserver une réunion doit donner l'impression de la dessiner. Glisse sur des créneaux vides et le Planificateur crée un événement, et ton gestionnaire OnItemCreate définit son titre ou refuse le créneau. Glisse un événement vers une autre heure, un autre jour ou une autre colonne de ressource, ou tire sur un bord pour changer sa durée, et chaque déplacement s'aligne sur la taille du créneau. Les mêmes gestes fonctionnent dans les autres vues : les barres se déplacent et se redimensionnent dans le Gantt, et les cartes passent d'une colonne à l'autre sur le tableau.

  • OnItemCreate nomme ou refuse un nouvel événement
  • Les déplacements et redimensionnements s'alignent sur Options.SlotMinutes
  • Un aperçu suit le pointeur, la vue défile sur ses bords et Échap annule
  • Souris, stylet et tactile ; OnCardMoving peut refuser un déplacement sur le tableau
Lire la rubrique d'aide
Vue mois avec un point d'équipe hebdomadaire chaque mardi

Planificateur : réunions, personnes et salles Enregistrée uniquement

Réunions récurrentes à partir de règles standard

Un point d'équipe hebdomadaire ou une revue mensuelle ne devrait être saisi qu'une fois. Donne à un élément une RRULE iCalendar et le Planificateur affiche chaque occurrence dans n'importe quelle vue et n'importe quelle période. La règle suit le format RFC 5545 qu'utilisent Google Calendar, Outlook et Apple Calendar, donc les événements récurrents gardent leur règle lors d'un import ou d'un export de fichiers .ics, et ton code peut demander à l'objet de données les occurrences de n'importe quelle plage de dates, par exemple pour vérifier les conflits d'une salle.

  • RecurrenceRule := 'FREQ=WEEKLY;BYDAY=TU' se répète chaque mardi
  • Le Start et le Finish de l'élément correspondent à la première occurrence
  • GetOccurrences renvoie les occurrences de n'importe quelle période
  • Importé et exporté avec des fichiers iCalendar

Community affiche un élément récurrent une seule fois et conserve sa règle.

Lire la rubrique d'aide
Démo ICalSubscription avec un calendrier de jours fériés fusionné dans le Planificateur

Planificateur : réunions, personnes et salles Enregistrée uniquement

Google Calendar, Outlook, CalDAV et .ics en import et en export

Les rendez-vous de tes utilisateurs vivent déjà dans d'autres calendriers. TsgcPlannerICalendar importe et exporte des fichiers .ics, le format de Google Calendar, Outlook et Apple Calendar. Avec la passerelle sgcPlannerWS, un abonnement suit n'importe quelle URL .ics en lecture seule, comme une liste de jours fériés ou un calendrier partagé, et trois composants de synchronisation gardent un plan à jour dans les deux sens avec un Google Calendar, un calendrier Outlook de Microsoft 365 ou Outlook.com via Microsoft Graph, ou un calendrier CalDAV de Nextcloud, iCloud, Fastmail, Radicale ou de tout autre serveur CalDAV. Chacun ne lit que les changements depuis la dernière synchronisation et applique une règle de conflit claire.

  • TsgcPlannerICalendar avec ImportFromFile et ExportToFile
  • TsgcPlannerICalSubscription avec URL et RefreshInterval, en utilisant ETag et If-Modified-Since
  • TsgcPlannerGoogleSync avec CalendarId, Direction et AutoSyncInterval
  • TsgcPlannerGraphSync avec CalendarId et un AccessToken OAuth2, en utilisant la requête delta de Graph
  • TsgcPlannerCalDAVSync avec CalendarURL, UserName et Password, en utilisant des jetons de synchronisation et des ETags
  • La modification la plus récente l'emporte en cas de conflit, et OnConflict peut en décider autrement

Édition enregistrée. Les composants passerelle exigent aussi un sgcWebSockets enregistré ; en .NET, ils sont dans esegece.sgcPlanner.sgcWebSockets.

Lire la rubrique d'aide

Planificateur : réunions, personnes et salles

Rappels avec report et fermeture

Une réunion dont personne ne se souvient est une réunion à laquelle personne n'assiste. Donne à un élément un rappel en minutes avant son début, et TsgcPlannerReminders trouve les rappels arrivés à échéance et déclenche un événement pour chacun. Ton application l'appelle depuis son propre minuteur et décide comment le rappel s'affiche : une fenêtre, une notification ou un son. Un élément récurrent rappelle à nouveau à chaque occurrence, et un rappel peut être reporté ou fermé.

  • ReminderMinutes de l'élément : -1 pour aucun, 0 au début
  • Check déclenche OnReminder pour chaque rappel échu
  • Snooze et Dismiss pour l'occurrence en cours ou la suivante
  • Enregistré en JSON et pris en compte par l'historique d'annulation
Lire la rubrique d'aide

Planificateur : réunions, personnes et salles

Un fuseau horaire par élément

Les équipes réparties entre plusieurs bureaux réservent leurs réunions à leur heure locale. Chaque élément peut porter son propre fuseau horaire : un appel fixé à 10:00 à New York reste à 10:00 heure de New York, tandis que les vues affichent tous les éléments dans un seul fuseau d'affichage. Change le fuseau d'affichage et les éléments passent à l'heure locale du nouveau fuseau, alors que les éléments flottants et ceux de la journée entière restent en place.

  • Item.TimeZone est le fuseau de Start et Finish, vide pour un élément flottant
  • Data.DisplayTimeZone est le fuseau affiché par les vues, vide pour le fuseau local
  • La conversion n'a lieu qu'à l'affichage des éléments
  • Les rappels s'exécutent aussi dans le fuseau d'affichage
Lire la rubrique d'aide

Gantt : planifie tes projets et suis le chemin critique

TsgcVCLGantt et TsgcFMXGantt : tâches, liens, échelle de temps et moteur de planification.

Démo ProjectGantt : arborescence WBS avec des liens fin à début et début à début

Gantt : planifie tes projets et suis le chemin critique Enregistrée uniquement

Diagrammes de Gantt avec dépendances et décalage

Le Gantt affiche une arborescence de découpage du travail avec des lignes de synthèse, des jalons et l'avancement sur chaque barre, et dessine les liens entre les tâches sous forme de flèches. Lie les tâches en code ou en glissant de la fin d'une barre vers une autre, choisis fin à début, début à début, fin à fin ou début à fin, et ajoute un décalage en temps de travail. L'échelle de temps va de 5 minutes à plusieurs années.

  • Découpage du travail via ParentId, consolidé avec UpdateSummaries
  • AddDependency avec TsgcPlannerDependencyKind : pdkFS, pdkSS, pdkFF, pdkSF
  • Lag compté sur le calendrier de travail
  • Milestone et Progress sur chaque élément, TimeScale pour le zoom

Community stocke et enregistre les liens mais ne les dessine pas, et le glisser pour lier est Enregistré.

Lire la rubrique d'aide
Gantt avec le chemin critique mis en évidence et les jours fériés grisés d'après le calendrier de travail

Gantt : planifie tes projets et suis le chemin critique Enregistrée uniquement

Planification automatique et chemin critique

Quand une tâche glisse, le chef de projet a besoin de la nouvelle date de fin tout de suite, pas après un après-midi à déplacer des barres. Le moteur de planification place chaque tâche le plus tôt possible après ses prédécesseurs sur le calendrier de travail, en sautant les jours non travaillés et les jours fériés, calcule la marge de chaque tâche et marque le chemin critique, la chaîne de tâches qui fixe la fin du projet. Lance-le à la demande, après chaque modification, ou sur un objet de données sans aucune vue.

  • Schedule lance le moteur, AutoSchedule le lance après chaque modification
  • ShowCriticalPath met en évidence les tâches qui déterminent la date de fin
  • TotalSlack donne les minutes de travail dont une tâche peut glisser
  • Le calendrier de travail définit WorkDays, WorkTime et Holidays

Dans Community, Schedule lève EsgcPlannerError et ShowCriticalPath n'a aucun effet.

Lire la rubrique d'aide
Gantt avec des barres de référence grises sous les barres actuelles et deux tâches en retard

Gantt : planifie tes projets et suis le chemin critique Enregistrée uniquement

Les références de base montrent le glissement d'un coup d'œil

Les parties prenantes demandent rarement quel est le plan ; elles demandent de combien il a bougé. Enregistre une référence de base quand le plan est approuvé et le Gantt la dessine comme une fine barre sous chaque barre actuelle, donc une tâche en retard se voit sans lire une seule date. Les dates de référence sont stockées avec les éléments, enregistrées en JSON et échangées avec Microsoft Project XML, et ton code peut les lire pour construire son propre rapport d'écarts.

  • SetBaseline copie Start et Finish de chaque élément en une seule mise à jour
  • ShowBaseline dessine les barres de référence
  • BaselineStart et BaselineFinish sur chaque élément
  • Enregistré en JSON et lu depuis Microsoft Project XML

Community stocke et enregistre les dates de référence mais ne les dessine pas ; SetBaseline lève EsgcPlannerError.

Lire la rubrique d'aide

Gantt : planifie tes projets et suis le chemin critique Enregistrée uniquement

Échange des plans avec Microsoft Project

Les bureaux de projet reçoivent des plans de Microsoft Project et les renvoient. TsgcPlannerMSProject importe et exporte Microsoft Project XML (MSPDI), le format XML que Project ouvre et enregistre, avec les tâches, les liens, le calendrier, les ressources, les affectations et les références de base. Un import peut remplacer le plan ou fusionner avec lui, et un document mal formé lève une erreur avec son numéro de ligne. L'import de 10 000 tâches avec 15 000 liens a pris 264 ms lors d'une mesure de développement sous Win64. Les ressources et les affectations arrivent avec les tâches.

  • ImportFromFile, ImportFromStream et ImportFromString
  • ExportToFile écrit le XML que Microsoft Project ouvre
  • ImportMode : pmiReplace (par défaut) ou pmiMerge
  • Un XML mal formé lève EsgcPlannerError avec le numéro de ligne

Absent de l'édition Community, où JSON est le format de fichier.

Lire la rubrique d'aide

Gantt : planifie tes projets et suis le chemin critique

Une échelle de temps à trois niveaux et un histogramme des ressources

Les longs plans se lisent mieux avec plus de contexte dans l'en-tête, et les personnes surchargées doivent être visibles avant la publication du plan. L'échelle de temps du Gantt peut afficher un troisième niveau, par exemple le mois au-dessus des semaines au-dessus des jours. Un volet histogramme au bas du diagramme dessine, pour chaque graduation, la charge de travail de chaque ressource par rapport à son temps de travail, et la part supérieure à 100 % est peinte dans la couleur critique.

  • TimeScale.TierCount à 3 ajoute un niveau supérieur, avec TopFormat pour ses libellés
  • ShowHistogram et HistogramHeight affichent le volet
  • HistogramResourceId montre une seule ressource, ou toutes les ressources empilées, chacune dans sa couleur
  • Le volet suit le défilement et le zoom du diagramme
Lire la rubrique d'aide

Kanban : des tableaux qui suivent le plan

TsgcVCLKanban et TsgcFMXKanban : une colonne par statut, sur les mêmes données que le Gantt.

Tableau Kanban avec cinq colonnes de statut, des étiquettes, des initiales de responsables, des échéances et des barres d'avancement

Kanban : des tableaux qui suivent le plan

Un tableau de tâches sur lequel ton équipe peut travailler

Ceux qui font le travail veulent un tableau, pas un diagramme. La vue Kanban construit une colonne par statut, avec un badge de comptage et une flèche de repli, et chaque carte affiche son titre, ses étiquettes, les initiales de la ressource, l'échéance et l'avancement. Déposer une carte sur une autre colonne change son statut et son rang dans les données partagées, donc le Gantt et le Planificateur se mettent à jour aussitôt, et ton code peut refuser n'importe quel déplacement avant qu'il ait lieu. Le tableau suit le même thème clair ou sombre que les autres vues.

  • ColumnSource construit les colonnes à partir des statuts, ou de tes propres Columns
  • CardOptions choisit ce qu'affiche une carte
  • OnCardMoving accepte ou refuse un dépôt
  • La largeur des colonnes et le repli fonctionnent dans toutes les éditions
Lire la rubrique d'aide
Démo TaskBoard : cinq colonnes, trois couloirs par ressource et une colonne au-delà de sa limite

Kanban : des tableaux qui suivent le plan Enregistrée uniquement

Les couloirs et les limites WIP gardent le travail fluide

Les couloirs le découpent en bandes horizontales par ressource, tâche parente ou étiquette, pour que chaque personne ou epic ait sa ligne, et les limites de travail en cours plafonnent chaque colonne, comptées sur tous les couloirs. En mode avertissement, une colonne qui dépasse sa limite est marquée ; en mode blocage, une carte qui dépasserait la limite ne peut pas être déposée. La mise en page de 5 000 cartes dans 8 colonnes et 6 couloirs a pris 5 ms sous Win64.

  • SwimlaneBy : pslResource, pslParent ou pslTag
  • WIPLimit par entrée de colonne, 0 pour aucune limite
  • WIPMode : pwmWarn marque la colonne, pwmBlock refuse le dépôt
  • Les couloirs et les limites fonctionnent sur les mêmes données que les autres vues

Community ignore SwimlaneBy et les limites WIP ; les colonnes, les largeurs et le repli fonctionnent.

Lire la rubrique d'aide

Accessibilité

UI Automation pour les lecteurs d'écran, le clavier et le contraste élevé, sans configuration.

Accessibilité

Chaque vue du planificateur, lisible et utilisable sans souris

sgcPlanner expose à Microsoft UI Automation les vues Scheduler, Timeline, Gantt et Kanban : les jours, les couloirs et les colonnes, les éléments avec leurs horaires, et les dépendances du Gantt. Tout ce qui se fait en glissant à la souris peut aussi se faire au clavier.

  • Scheduler et Timeline : Ins ajoute un élément à l'emplacement qui a le focus, Suppr le supprime, Ctrl+Flèches déplacent l'élément et Ctrl+Shift+Flèches modifient sa fin
  • Gantt : Ctrl+Gauche et Ctrl+Droite déplacent la tâche d'un cran, Ctrl+K démarre une dépendance, Ctrl+Shift+K parcourt les dépendances de la tâche qui a le focus
  • Kanban : Ctrl+Gauche et Ctrl+Droite déplacent la carte vers la colonne voisine, Ctrl+Haut et Ctrl+Bas la réordonnent
  • Sous un thème à contraste élevé de Windows, les couleurs d'élément de l'application sont remplacées par des couleurs du système avec des contours, si bien qu'aucune information ne dépend de la couleur seule

L'accessibilité est activée par défaut dans toutes les éditions, l'édition Community gratuite comprise, sur VCL dans toutes les versions de Delphi et C++Builder de Delphi 7 à Delphi 13, sur FireMonkey sous Windows, et sur WinForms, WPF et Avalonia. Dans Delphi et C++Builder, AccessibleName et AccessibleDescription définissent le nom et la description exposés à UI Automation, et en .NET le nom accessible et le texte d'aide standard de chaque framework font de même. Voir les rapports de conformité d'accessibilité.

Lire la rubrique d'aide

Découvre sgcPlanner en action

sgcPlanner dans les démos de la suite sgcUI : des applications complètes qui fonctionnent hors ligne avec des données simulées intégrées.

Mesuré sur des charges réelles

Mesures de développement de builds release Win64 à 1920 x 1080. Win32 est environ 1,5 à 1,7 fois plus lent.

MesureRésultatConditions
Planification automatique de 10 000 tâches (1 000 synthèses, 3 niveaux) avec 15 000 liens et 30 jours fériés, chemin critique compris11 msBuild release Win64
Image du Gantt pendant le défilement de 10 000 tâches avec 15 000 liens11 msBuild release Win64, 1920 x 1080
Mise en page Kanban de 5 000 cartes dans 8 colonnes et 6 couloirs5 msBuild release Win64
Vue semaine du Planificateur avec 2 000 éléments horodatés, mise en page1 msBuild release Win64
Import de 10 000 tâches avec 15 000 liens depuis MS Project XML264 msBuild release Win64

Source : la rubrique d'aide qui documente ces chiffres.

Qui construit avec sgcPlanner

Logiciels de gestion de projet et d'ingénierie

Bureaux de projet et sociétés d'ingénierie

Planifie un projet comme un découpage du travail, lie les tâches et laisse le moteur les planifier sur le calendrier de l'entreprise pendant que le chemin critique montre ce qui détermine la date de fin. Enregistre une référence de base à l'approbation et le glissement apparaît sous chaque barre. Les plans arrivent de Microsoft Project et y retournent en XML, et les mêmes tâches apparaissent sur un tableau pour l'équipe.

  • Gantt avec dépendances
  • Planification automatique et chemin critique
  • Références de base
  • MS Project XML
Lance la démo ProjectGantt

Systèmes de réservation et de rendez-vous

Cliniques, ateliers et réservation de salles

Affiche chaque médecin, poste ou salle de réunion dans sa propre colonne et laisse le personnel réserver en glissant sur les créneaux libres. Les rendez-vous récurrents viennent de règles standard, les jours fériés arrivent par un abonnement .ics, et la passerelle Google Calendar garde à jour le calendrier personnel d'un praticien. La source de jeu de données réécrit chaque réservation directement dans tes tables. Le personnel voit les mêmes réservations dans toutes les vues.

  • Vues du Planificateur et ressources
  • Récurrence
  • Liaison DataSet
  • Synchronisation Google Calendar
Lance la démo TeamScheduler

Outils de suivi des tâches et de support

Équipes agiles et services d'assistance

Donne à l'équipe un tableau Kanban avec un couloir par personne et des limites de travail en cours par colonne, et donne au responsable un Gantt des mêmes tickets. Déplacer une carte vers Terminé recolore la barre et l'événement du calendrier aussitôt, parce que les trois vues partagent un seul objet de données. Les images d'état pour un e-mail nocturne peuvent être générées sans interface sur un serveur.

  • Kanban
  • Couloirs et limites WIP
  • Vues synchronisées
  • Rendu sans interface
Lance la démo TaskBoard

A Team Scheduler in a Few Lines

The same API in Delphi, C++ Builder and C#: two people, a daily stand-up from a recurrence rule, and a week view that lets users drag new meetings.

A VCL week Scheduler: two people as resources, a daily stand up from a recurrence rule, drag to create.

unit frmTeam;

interface

uses
  Classes, Controls, Forms, SysUtils,
  sgcUICore_Theme, sgcPlanner_Data, sgcPlanner_Scheduler,
  sgcPlanner_Scheduler_VCL;

type
  TFormTeam = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    FData: TsgcPlannerData;
    FScheduler: TsgcVCLScheduler;
    procedure DoItemCreate(Sender: TObject; const aStart, aFinish: TDateTime;
      const aResourceId: string; var aTitle: string; var aAccept: Boolean);
  end;

implementation

procedure TFormTeam.FormCreate(Sender: TObject);
var
  vItem: TsgcPlannerItem;
  vMonday: TDateTime;
begin
  vMonday := Date - DayOfWeek(Date) + 2;
  FData := TsgcPlannerData.Create(Self);
  FData.Resources.AddResource('ana', 'Ana').Color := $FF2563EB;
  FData.Resources.AddResource('luis', 'Luis').Color := $FF0F766E;
  // a daily stand-up from an iCalendar recurrence rule
  vItem := FData.AddItem('standup');
  vItem.Title := 'Daily stand-up';
  vItem.Start := vMonday + EncodeTime(9, 0, 0, 0);
  vItem.Finish := vMonday + EncodeTime(9, 15, 0, 0);
  vItem.RecurrenceRule := 'FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR';
  vItem.Resources := 'ana,luis';
  vItem := FData.AddItem('review');
  vItem.Title := 'Design review';
  vItem.Start := vMonday + 1 + EncodeTime(14, 0, 0, 0);
  vItem.Finish := vMonday + 1 + EncodeTime(15, 30, 0, 0);
  vItem.Resources := 'ana';

  FScheduler := TsgcVCLScheduler.Create(Self);
  FScheduler.Parent := Self;
  FScheduler.Align := alClient;
  FScheduler.Data := FData;
  FScheduler.Theme := utDark;
  FScheduler.View := psvWeek;
  FScheduler.Options.DayStartHour := 8;
  FScheduler.Options.DayEndHour := 18;
  FScheduler.Options.GroupByResource := True;
  FScheduler.OnItemCreate := DoItemCreate;
  FScheduler.ScrollToTime(vMonday + EncodeTime(8, 0, 0, 0));
end;

procedure TFormTeam.DoItemCreate(Sender: TObject; const aStart,
  aFinish: TDateTime; const aResourceId: string; var aTitle: string;
  var aAccept: Boolean);
begin
  // the user dragged an empty slot: name the new meeting
  aTitle := 'New meeting';
  aAccept := True;
end;

end.

Lire la rubrique d'aide →

The same scheduler in C++ Builder.

#include <vcl.h>
#pragma hdrstop
#include <System.DateUtils.hpp>
#include "sgcUICore_Theme.hpp"
#include "sgcPlanner_Data.hpp"
#include "sgcPlanner_Scheduler.hpp"
#include "sgcPlanner_Scheduler_VCL.hpp"

class TTeamHandlers : public TObject
{
public:
	// the user dragged an empty slot: name the new meeting
	void __fastcall ItemCreate(TObject *Sender, const TDateTime aStart,
		const TDateTime aFinish, const UnicodeString aResourceId,
		UnicodeString &aTitle, bool &aAccept)
	{
		aTitle = "New meeting";
		aAccept = true;
	}
};

void __fastcall BuildTeamScheduler(TForm *Form)
{
	static TTeamHandlers *vHandlers = new TTeamHandlers();
	TDateTime vMonday = Date() - DayOfWeek(Date()) + 2;
	TsgcPlannerData *vData = new TsgcPlannerData(Form);
	vData->Resources->AddResource("ana", "Ana")->Color = 0xFF2563EB;
	vData->Resources->AddResource("luis", "Luis")->Color = 0xFF0F766E;
	// a daily stand-up from an iCalendar recurrence rule
	TsgcPlannerItem *vItem = vData->AddItem("standup");
	vItem->Title = "Daily stand-up";
	vItem->Start = vMonday + EncodeTime(9, 0, 0, 0);
	vItem->Finish = vMonday + EncodeTime(9, 15, 0, 0);
	vItem->RecurrenceRule = "FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR";
	vItem->Resources = "ana,luis";
	vItem = vData->AddItem("review");
	vItem->Title = "Design review";
	vItem->Start = vMonday + 1 + EncodeTime(14, 0, 0, 0);
	vItem->Finish = vMonday + 1 + EncodeTime(15, 30, 0, 0);
	vItem->Resources = "ana";

	TsgcVCLScheduler *vScheduler = new TsgcVCLScheduler(Form);
	vScheduler->Parent = Form;
	vScheduler->Align = alClient;
	vScheduler->Data = vData;
	vScheduler->Theme = utDark;
	vScheduler->View = psvWeek;
	vScheduler->Options->DayStartHour = 8;
	vScheduler->Options->DayEndHour = 18;
	vScheduler->Options->GroupByResource = true;
	vScheduler->OnItemCreate = vHandlers->ItemCreate;
	vScheduler->ScrollToTime(vMonday + EncodeTime(8, 0, 0, 0));
}

Lire la rubrique d'aide →

The C# version for WinForms.

using System;
using System.Windows.Forms;
using esegece.sgcPlanner;
using esegece.sgcUICore;

namespace TeamPlanner
{
    internal class MainForm : Form
    {
        public MainForm()
        {
            Text = "Team scheduler";
            DateTime monday = DateTime.Today.AddDays(-(((int)DateTime.Today.DayOfWeek + 6) % 7));

            var data = new TsgcPlannerData();
            data.Resources.AddResource("ana", "Ana").Color = 0xFF2563EB;
            data.Resources.AddResource("luis", "Luis").Color = 0xFF0F766E;

            // a daily stand-up from an iCalendar recurrence rule
            var item = data.AddItem("standup");
            item.Title = "Daily stand-up";
            item.Start = monday.AddHours(9);
            item.Finish = monday.AddHours(9).AddMinutes(15);
            item.RecurrenceRule = "FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR";
            item.Resources = "ana,luis";

            item = data.AddItem("review");
            item.Title = "Design review";
            item.Start = monday.AddDays(1).AddHours(14);
            item.Finish = monday.AddDays(1).AddHours(15.5);
            item.Resources = "ana";

            var scheduler = new TsgcWinFormsScheduler { Dock = DockStyle.Fill, Data = data, Theme = TsgcUITheme.utDark };
            scheduler.View = TsgcPlannerSchedulerViewKind.psvWeek;
            scheduler.Options.DayStartHour = 8;
            scheduler.Options.DayEndHour = 18;
            scheduler.Options.GroupByResource = true;
            // the user dragged an empty slot: name the new meeting
            scheduler.OnItemCreate = (object sender, DateTime start, DateTime finish, string resourceId,
                ref string title, ref bool accept) => { title = "New meeting"; accept = true; };
            Controls.Add(scheduler);
            scheduler.ScrollToTime(monday.AddHours(8));
        }

        [STAThread]
        static void Main() { Application.EnableVisualStyles(); Application.Run(new MainForm()); }
    }
}
dotnet add package esegece.sgcPlanner.WinForms

Lire la rubrique d'aide →

Gantt in Delphi

Three tasks, two links, a baseline, the critical path and the schedule engine (the Gantt features here are Registered edition features).

unit frmGantt;

interface

uses
  Classes, Controls, Forms, SysUtils,
  sgcUICore_Theme, sgcPlanner_Data, sgcPlanner_Gantt, sgcPlanner_Gantt_VCL;

type
  TFormGantt = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

implementation

procedure TFormGantt.FormCreate(Sender: TObject);
var
  vData: TsgcPlannerData;
  vGantt: TsgcVCLGantt;
  vItem: TsgcPlannerItem;
  vStart: TDateTime;
begin
  vStart := Date + EncodeTime(8, 0, 0, 0);
  vData := TsgcPlannerData.Create(Self);
  vData.ProjectStart := vStart;
  vItem := vData.AddItem('1');
  vItem.Title := 'Design';
  vItem.Start := vStart;
  vItem.Finish := vStart + 3 + EncodeTime(9, 0, 0, 0);
  vItem.Progress := 100;
  vItem := vData.AddItem('2');
  vItem.Title := 'Build';
  vItem.Start := vStart;
  vItem.Finish := vStart + 6 + EncodeTime(9, 0, 0, 0);
  vItem.Progress := 40;
  vItem := vData.AddItem('3');
  vItem.Title := 'Release';
  vItem.Start := vStart;
  vItem.Finish := vStart;
  vItem.Milestone := True;
  // Build starts when Design finishes, Release when Build finishes
  vData.Dependencies.AddDependency('1', '2');
  vData.Dependencies.AddDependency('2', '3');

  vGantt := TsgcVCLGantt.Create(Self);
  vGantt.Parent := Self;
  vGantt.Align := alClient;
  vGantt.Data := vData;
  vGantt.Theme := utDark;
  vGantt.ShowCriticalPath := True;
  vGantt.SetBaseline;
  // the schedule engine moves the tasks to honour the links
  vGantt.Schedule;
end;

end.

Recurrence rules and the Gantt Schedule and SetBaseline calls are Registered edition features. The free Community edition shows a recurring item once.

Lance les démos de sgcPlanner

Les démos compilées se trouvent dans sgcUI_bin.zip, sans rien installer. Le code source de chaque démo est fourni avec le paquet, pour Delphi, C++ Builder et .NET.

ProjectPlanner

ProjectPlanner

Gantt, Kanban et Planificateur sur un seul objet de données, toujours synchronisés.

TeamScheduler

TeamScheduler

Sept vues avec la vue année, groupes de ressources, réunions récurrentes, rappels, fuseaux horaires, annuler et rétablir et modification sur place.

Enregistrée uniquement ProjectGantt

Liens, planification automatique, chemin critique, références de base, Microsoft Project XML, une échelle de temps à trois niveaux et l'histogramme des ressources.

Enregistrée uniquement TaskBoard

Colonnes de statut, couloirs par ressource et limites WIP sur un tableau Kanban.

DataSetPlanner

DataSetPlanner

Éléments, ressources et dépendances liés à des TDataSet, avec réécriture des modifications.

Enregistrée uniquement ICalendarSync

Importe et exporte des fichiers .ics.

ICalSubscription

Enregistrée uniquement ICalSubscription

Suit une URL .ics en lecture seule, comme une liste de jours fériés.

Enregistrée uniquement GoogleCalendarSync

Synchronisation dans les deux sens avec un Google Calendar via sgcWebSockets.

Enregistrée uniquement OutlookCalendarSync

Synchronisation dans les deux sens avec un calendrier Outlook de Microsoft 365 ou Outlook.com via Microsoft Graph.

Enregistrée uniquement CalDAVSync

Synchronisation dans les deux sens avec un calendrier CalDAV, comme Nextcloud, iCloud, Fastmail ou Radicale.

HeadlessReport

Génère les vues en fichiers image sans fenêtre.

PlannerFMX

Les trois vues dans une application FireMonkey.

Démos compilées

Des exécutables prêts à lancer pour chaque produit sgcUI, rien à installer.

Télécharger sgcUI_bin.zip →

Où sgcPlanner est inclus

sgcPlanner fait partie de sgcUI Enterprise, et il est aussi vendu séparément. sgcPlanner est aussi inclus dans le pack All-Access.

sgcPlanner, package seul

€249 / développeur, code source complet, 1 an de mises à jour.

Acheter sgcPlanner → Voir les tarifs →

sgcUI Enterprise

Les 14 produits sgcUI, à partir de €699.

Voir Enterprise →

.NET

L'édition .NET a le même prix. Une édition Community gratuite est disponible sur NuGet sous le nom esegece.sgcPlanner.Community.

Voir les tarifs →

L'édition Community gratuite est esegece.sgcPlanner.Community sur NuGet. Le tableau montre ce qu'elle inclut.

FonctionnalitéCommunity (gratuite)Enregistrée
Scheduler day, work week, week, month and agenda views✓✓
Gantt task tree, summaries, milestones and progress✓✓
Kanban columns, collapsing and card options✓✓
Drag and drop in every view✓✓
DataSet binding, JSON, themes and headless PNG and SVG✓✓
Scheduler Year view✓✓
Reminders and per item time zones✓✓
Undo and redo, in place editing✓✓
Three tier Gantt time scale and resource histogram✓✓
Recurrence−✓
Scheduler resource Timeline view−✓
Dependency arrows and drag to link−✓
Auto scheduling, critical path and baselines−✓
Swimlanes and WIP limits−✓
iCalendar and Microsoft Project XML−✓
Google Calendar, Outlook and CalDAV sync and iCal subscription (sgcPlannerWS)−✓

Frameworks et plateformes pris en charge

Composants de sgcPlanner

ComposantRôle
TsgcPlannerDataLe modèle partagé : éléments, ressources, statuts, dépendances et calendrier de travail.
TsgcVCLScheduler, TsgcFMXSchedulerVues jour, semaine de travail, semaine, mois, année, agenda et chronologie.
TsgcVCLGantt, TsgcFMXGanttArborescence des tâches, barres, liens, moteur de planification, chemin critique et références de base.
TsgcVCLKanban, TsgcFMXKanbanColonnes de statut, cartes, couloirs et limites WIP.
TsgcPlannerSource_DataSetPlan à partir d'un TDataSet.
TsgcPlannerICalendar, TsgcPlannerMSProjectLecture et écriture de fichiers iCalendar .ics et de Microsoft Project XML (Enregistrée).
TsgcPlannerRendererSortie PNG et SVG sans interface.
TsgcPlannerGoogleSync, TsgcPlannerGraphSync, TsgcPlannerCalDAVSync, TsgcPlannerICalSubscription (sgcPlannerWS)Synchronisation dans les deux sens avec Google Calendar, avec Outlook et Microsoft 365 via Microsoft Graph et avec les serveurs CalDAV, et abonnements iCal, via sgcWebSockets. Édition enregistrée uniquement.
CibleComposantPlateformes
Delphi 7 à 13, VCLPlanificateur, Gantt, KanbanWin32 et Win64
Delphi XE6 à 13, FireMonkeyTsgcFMXScheduler, TsgcFMXGantt, TsgcFMXKanbanWindows, macOS, iOS et Android
C++ Builder 2007 à 13Vues VCL et FMXEn-têtes .hpp générés et bibliothèques statiques
Delphi 10.2 à 13, indépendant du frameworkDonnées, moteurs, JSON, iCalendar, Microsoft Project, moteur de renduLinux64, par exemple pour générer des plans sur un serveur
.NET Framework 4.7.2, .NET 8, 9 et 10TsgcWinFormsScheduler, Gantt et Kanban, et leurs équivalents WPF et AvaloniaWinForms, WPF, Avalonia, PNG et SVG sans interface

Foire aux questions

Oui, dans l'édition Enregistrée. TsgcPlannerMSProject lit et écrit Microsoft Project XML (MSPDI) avec les tâches, les liens, le calendrier, les ressources, les affectations et les références de base. Le format XML est celui qui est pris en charge, donc enregistre le plan en XML dans Project.

Oui, dans les deux sens. Google Calendar se synchronise via TsgcPlannerGoogleSync, les calendriers Outlook de Microsoft 365 et Outlook.com se synchronisent via Microsoft Graph avec TsgcPlannerGraphSync, et les calendriers CalDAV, comme Nextcloud, iCloud, Fastmail ou Radicale, se synchronisent avec TsgcPlannerCalDAVSync. Tout autre calendrier qui publie une URL .ics peuvent être suivis en lecture seule avec TsgcPlannerICalSubscription, et les fichiers .ics s'importent et s'exportent avec TsgcPlannerICalendar. Les passerelles exigent l'édition Enregistrée et sgcWebSockets.

L'aide publie des mesures de développement de builds release Win64 : la planification automatique de 10 000 tâches avec 15 000 liens a pris 11 ms, et une image pendant le défilement de ces mêmes 10 000 tâches a pris 11 ms. Une mise en page Kanban de 5 000 cartes a pris 5 ms. Win32 est environ 1,5 à 1,7 fois plus lent.

Les trois vues avec glisser-déposer, les synthèses, les jalons, l'avancement, le calendrier de travail, la liaison DataSet, JSON et le rendu sans interface. La récurrence, la planification automatique, les dépendances dessinées, le chemin critique, les références de base, la vue Chronologie, les couloirs, les limites WIP, iCalendar, Microsoft Project XML et les passerelles sont Enregistrés.

Oui. TsgcPlannerSource_DataSet lie l'objet de données à n'importe quel TDataSet, comme FireDAC, TClientDataSet ou dbExpress. Il charge les éléments, les ressources et les dépendances via des correspondances de champs, suit les changements des jeux de données et réécrit les modifications faites dans les vues.

Oui, via FireMonkey : TsgcFMXScheduler, TsgcFMXGantt et TsgcFMXKanban fonctionnent à partir de Delphi XE6 sous Windows, macOS, iOS et Android. Sous Linux64, le modèle de données, les moteurs, JSON, iCalendar, Microsoft Project XML et le moteur de rendu se compilent à partir de Delphi 10.2.

Oui. TsgcPlannerRenderer dessine le Planificateur, le Gantt ou le Kanban d'un objet de données en PNG ou SVG sans fenêtre, sous Windows ou Linux64, avec le thème clair ou sombre.

Aide de sgcPlanner

3,000+Développeurs
20+Ans
761+Composants
30+Intégrations d'API
5Plateformes
Garantie satisfait ou remboursé de 30 joursPas satisfait ? Demandez un remboursement intégral dans les 30 jours suivant l'achat. Voir la politique de remboursement

Essaie sgcPlanner dès aujourd'hui

L'essai sgcUI inclut sgcPlanner et tous les autres produits sgcUI.