Delphi, C++ Builder & .NET Onderdeel van sgcUI

sgcPlanner, Planner, Gantt & Kanban voor Delphi, C++ Builder & .NET

Drie weergaven van hetzelfde plan. Toon het als agenda voor het team, als Gantt-diagram voor de projectmanager en als Kanban-bord voor de mensen die het werk doen, allemaal gebonden aan één gegevensobject. Sleep een kaart naar Klaar en de Gantt-balk en de agendakleur volgen meteen.

VCL, FireMonkey, WinForms, WPF, Avalonia10.000 taken automatisch gepland in 11 ms op Win64Gratis .NET Community-editieInbegrepen in sgcUI Enterprise
ProjectPlanner-demo: dezelfde taken op een Kanban-bord, in een Gantt-diagram en in een planner

Eén plan, drie weergaven

Dertien functies voor het team, de projectmanager en de mensen die het werk doen. Functies met het label Registered zitten niet in de gratis .NET Community-editie.

Eén gegevensmodel

Elke weergave leest en schrijft dezelfde TsgcPlannerData.

Eén gegevensmodel

Drie weergaven, één gegevensobject, altijd synchroon

Een agenda, een projectdiagram en een takenbord mogen nooit van mening verschillen. sgcPlanner bindt een willekeurig aantal weergaven aan één gegevensobject. Een kaart die op het bord naar Klaar wordt gesleept, krijgt dus meteen de kleur van Klaar in de Gantt en de planner, een balk die in de Gantt wordt verplaatst, verplaatst de afspraak in de agenda, en een afspraak die in de planner wordt gemaakt, wordt een kaart. Elke wijziging is één update, dus elke weergave tekent zich per drop één keer opnieuw.

  • TsgcPlannerData bevat het plan en elke weergave verwijst ernaar via Data
  • BarColorMode pbcStatus kleurt de Gantt-balken op status, net als het bord
  • SyncSelection deelt het geselecteerde item via SelectedId
  • Hetzelfde model werkt zonder weergave, in een service of een unittest
  • Rechts naar links voor Arabisch en Hebreeuws: Scheduler- en Kanban-kolommen stromen vanaf rechts, het takenraster van het Gantt-diagram verhuist naar rechts, en MirrorTimeline laat ook de Gantt-tijdas van rechts lopen
Het helponderwerp lezen
DataSetPlanner-demo: datasetrijen en de planweergaven die eraan gebonden zijn

Eén gegevensmodel

Bind een TDataSet, bewaar JSON, render PNG

Je plan staat al in een database en sgcPlanner pakt het daar op. Een dataset-bron bindt het gegevensobject aan elke TDataSet, zoals FireDAC, TClientDataSet of dbExpress, laadt items, resources en afhankelijkheden, volgt de wijzigingen van de datasets en schrijft de bewerkingen uit de weergaven terug. JSON-opslag werkt in elke editie en op elk platform, en de headless renderer tekent elke weergave als PNG of SVG op een server, ook op Linux64.

  • TsgcPlannerSource_DataSet koppelt je veldnamen via ItemFields
  • SaveToFile en LoadFromFile schrijven en lezen het gedocumenteerde JSON-formaat
  • TsgcPlannerRenderer tekent de planner, de Gantt of het Kanban-bord zonder venster
  • Gebruikt alleen de DB-unit, dus werkt in VCL-, FireMonkey- en consoletoepassingen
Het helponderwerp lezen

Eén gegevensmodel

Elke wijziging in het plan ongedaan maken en opnieuw uitvoeren

Een verkeerde drop mag een planner nooit zijn middag kosten. Het gegevensobject legt elke toevoeging, verwijdering, eigenschapswijziging en verplaatsing vast van een item, een resource, een status of een afhankelijkheid, wie de wijziging ook maakt: een sleepbeweging in een weergave, bewerken ter plekke, Smart Paste, de planningsengine of je eigen code. Alle weergaven die aan de gegevens gebonden zijn delen één geschiedenis, en een groep wijzigingen, zoals een complete herplanning, maak je in één stap ongedaan.

  • Data.Undo met Undo, Redo, CanUndo en CanRedo
  • BeginGroup en EndGroup maken van veel wijzigingen één stap
  • UndoCaption en RedoCaption benoemen de volgende stap voor een menu-item of een hint
  • Limit begrenst de geschiedenis, en OnChange werkt de knoppen bij
Het helponderwerp lezen

Eén gegevensmodel

Typ de titel direct in de weergave

Een dialoogvenster openen om een item een andere naam te geven houdt mensen op. Bij bewerken ter plekke bewerkt F2 de titel van het geselecteerde item in een kleine editor die erboven staat, en een afspraak die je maakt door op lege ruimte in de planner te slepen opent meteen zijn titeleditor, zodat de gebruiker sleept en typt. Het werkt hetzelfde in de planner, de Gantt en het Kanban-bord, en elke bewerking wordt vastgelegd in de geschiedenis voor ongedaan maken.

  • InplaceEdit schakelt het in, standaard staat het uit
  • F2 bewerkt het geselecteerde item, Enter accepteert en Escape annuleert
  • BeginEdit opent de editor vanuit je eigen menu-item
  • IsEditing laat de formuliersneltoetsen, zoals Ctrl+Z, wachten terwijl de gebruiker typt
Het helponderwerp lezen

Planner: afspraken, mensen en ruimtes

TsgcVCLScheduler en TsgcFMXScheduler, en dezelfde weergaven in .NET.

TsgcVCLScheduler dagweergave
TsgcVCLScheduler werkweekweergave
TsgcVCLScheduler weekweergave
TsgcVCLScheduler maandweergave
TsgcVCLScheduler agendaweergave
TsgcVCLScheduler resourcetijdlijnweergave

Planner: afspraken, mensen en ruimtes

Zeven agendaweergaven, mensen en ruimtes naast elkaar

Gebruikers weten al hoe een agenda zich hoort te gedragen, dus geeft de planner ze de weergaven die ze verwachten: dag, werkweek, week, maand, jaar, agenda en een resourcetijdlijn. De jaarweergave toont twaalf minimaanden met elke dag gearceerd naar hoe druk die is, en een dubbelklik opent die dag. Voeg mensen, ruimtes of machines toe als resources met een eigen kleur en groepeer de dag of week per resource, zodat een kliniek elke arts in een kolom ziet en een werkplaats elke werkplek. Werkuren, het zichtbare dagbereik en de navigatie zijn eigenschappen en aanroepen van één regel.

  • View: psvDay, psvWorkWeek, psvWeek, psvMonth, psvYear, psvAgenda, psvTimeline
  • AddResource met een kleur, en Options.GroupByResource voor een kolom per resource
  • DayStartHour, DayEndHour en SlotMinutes bepalen het tijdraster
  • GoToday, Prior, Next en ScrollToTime navigeren door de agenda

De resourcetijdlijn is Registered; in Community toont die weergave een melding.

Het helponderwerp lezen

Planner: afspraken, mensen en ruimtes

Slepen om te maken, te verplaatsen en het formaat te wijzigen

Een afspraak inplannen moet voelen als tekenen. Sleep over lege tijdsloten en de planner maakt een afspraak, waarna je OnItemCreate-handler de titel instelt of het tijdslot weigert. Sleep een afspraak naar een andere tijd, dag of resourcekolom, of trek aan een rand om de duur te wijzigen, en elke verplaatsing springt naar de slotgrootte. Dezelfde gebaren werken in de andere weergaven: balken verplaatsen en wijzigen van grootte in de Gantt, en kaarten gaan tussen kolommen op het bord.

  • OnItemCreate geeft een nieuwe afspraak een naam of weigert die
  • Verplaatsen en formaat wijzigen springen naar Options.SlotMinutes
  • Een voorbeeld volgt de aanwijzer, de weergave scrolt aan de randen en Escape annuleert
  • Muis, pen en touch; OnCardMoving kan een verplaatsing op het bord weigeren
Het helponderwerp lezen
Maandweergave met een wekelijkse dinsdag-stand-up op elke dinsdag

Planner: afspraken, mensen en ruimtes Alleen geregistreerd

Terugkerende afspraken met standaardregels

Een wekelijkse stand-up of een maandelijkse review voer je maar één keer in. Geef een item een iCalendar-RRULE en de planner toont elke herhaling in elke weergave en elke periode. De regel heeft het RFC 5545-formaat dat Google Agenda, Outlook en Apple Agenda gebruiken, dus terugkerende afspraken behouden hun regel bij het importeren of exporteren van .ics-bestanden, en je code kan het gegevensobject vragen om de herhalingen in elk datumbereik, bijvoorbeeld om een ruimte op conflicten te controleren.

  • RecurrenceRule := 'FREQ=WEEKLY;BYDAY=TU' herhaalt elke dinsdag
  • Start en Finish van het item vormen de eerste herhaling
  • GetOccurrences geeft de herhalingen van elke periode terug
  • Geïmporteerd en geëxporteerd met iCalendar-bestanden

Community toont een terugkerend item één keer en bewaart de regel.

Het helponderwerp lezen
ICalSubscription-demo met een feestdagenagenda samengevoegd in de planner

Planner: afspraken, mensen en ruimtes Alleen geregistreerd

Google Agenda, Outlook, CalDAV en .ics in en uit

De afspraken van je gebruikers staan al in andere agenda's. TsgcPlannerICalendar importeert en exporteert .ics-bestanden, het formaat van Google Agenda, Outlook en Apple Agenda. Met de sgcPlannerWS-bridge volgt een abonnement elke alleen-lezen .ics-URL, zoals een lijst met feestdagen of een gedeelde agenda, en drie synccomponenten houden een plan in beide richtingen gelijk met één Google Agenda, één Outlook-agenda van Microsoft 365 of Outlook.com via Microsoft Graph, of één CalDAV-agenda van Nextcloud, iCloud, Fastmail, Radicale of een andere CalDAV-server. Elk leest alleen de wijzigingen sinds de vorige synchronisatie en heeft een duidelijke conflictregel.

  • TsgcPlannerICalendar met ImportFromFile en ExportToFile
  • TsgcPlannerICalSubscription met URL en RefreshInterval, met ETag en If-Modified-Since
  • TsgcPlannerGoogleSync met CalendarId, Direction en AutoSyncInterval
  • TsgcPlannerGraphSync met CalendarId en een OAuth2-AccessToken, met de Graph-deltaquery
  • TsgcPlannerCalDAVSync met CalendarURL, UserName en Password, met synctokens en ETags
  • De latere wijziging wint een conflict, en OnConflict kan anders beslissen

Registered-editie. De bridge-componenten hebben ook een geregistreerde sgcWebSockets nodig; in .NET zitten ze in esegece.sgcPlanner.sgcWebSockets.

Het helponderwerp lezen

Planner: afspraken, mensen en ruimtes

Herinneringen met uitstellen en negeren

Een vergadering die niemand onthoudt, is een vergadering die niemand bijwoont. Geef een item een herinnering in minuten voor de start, en TsgcPlannerReminders zoekt de herinneringen die aan de beurt zijn en roept voor elke een gebeurtenis aan. Je toepassing roept het aan vanuit een eigen timer en bepaalt hoe de herinnering getoond wordt: een popup, een toast of een geluid. Een terugkerend item herinnert opnieuw bij elke herhaling, en een herinnering kan worden uitgesteld of genegeerd.

  • ReminderMinutes van het item: -1 voor geen, 0 bij de start
  • Check roept OnReminder aan voor elke herinnering die aan de beurt is
  • Snooze en Dismiss voor de huidige of volgende herhaling
  • Opgeslagen in JSON en vastgelegd in de geschiedenis voor ongedaan maken
Het helponderwerp lezen

Planner: afspraken, mensen en ruimtes

Tijdzones per item

Teams die over kantoren verspreid zijn, boeken vergaderingen in hun eigen lokale tijd. Elk item kan zijn eigen tijdzone dragen, zodat een gesprek om 10:00 in New York om 10:00 New Yorkse tijd blijft staan, terwijl de weergaven elk item in één weergavetijdzone tonen. Wijzig de weergavetijdzone en de items verschuiven naar hun kloktijd in de nieuwe zone, terwijl zwevende items en hele-dagitems blijven staan waar ze staan.

  • Item.TimeZone is de zone van Start en Finish, leeg voor een zwevend item
  • Data.DisplayTimeZone is de zone die de weergaven tonen, leeg voor de lokale zone
  • De omrekening gebeurt alleen wanneer de items worden getoond
  • Herinneringen draaien ook in de weergavetijdzone
Het helponderwerp lezen

Gantt: plan projecten en volg het kritieke pad

TsgcVCLGantt en TsgcFMXGantt: taken, koppelingen, een tijdschaal en een planningsengine.

ProjectGantt-demo: WBS-structuur met eind-begin- en begin-begin-koppelingen

Gantt: plan projecten en volg het kritieke pad Alleen geregistreerd

Gantt-diagrammen met afhankelijkheden en vertraging

De Gantt toont een werkpakketstructuur met samenvattingsrijen, mijlpalen en voortgang op elke balk, en tekent de koppelingen tussen taken als pijlen. Koppel taken in code of door van het einde van de ene balk naar een andere te slepen, kies eind-begin, begin-begin, eind-eind of begin-eind, en voeg een vertraging in werktijd toe. De tijdschaal zoomt van 5 minuten tot jaren.

  • Werkpakketstructuur via ParentId, samengevat met UpdateSummaries
  • AddDependency met TsgcPlannerDependencyKind: pdkFS, pdkSS, pdkFF, pdkSF
  • Lag geteld op de werkkalender
  • Milestone en Progress op elk item, TimeScale voor de zoom

Community bewaart en slaat de koppelingen op maar tekent ze niet, en slepen om te koppelen is Registered.

Het helponderwerp lezen
Gantt met het kritieke pad gemarkeerd en feestdagen gearceerd vanuit de werkkalender

Gantt: plan projecten en volg het kritieke pad Alleen geregistreerd

Automatisch plannen en het kritieke pad zien

Als één taak uitloopt, wil de projectmanager nu de nieuwe einddatum weten, niet na een middag balken schuiven. De planningsengine plaatst elke taak zo vroeg mogelijk na zijn voorgangers op de werkkalender, slaat niet-werkdagen en feestdagen over, berekent de speling van elke taak en markeert het kritieke pad, de keten van taken die het projecteinde bepaalt. Voer hem uit op verzoek, na elke wijziging, of op een gegevensobject zonder weergave.

  • Schedule draait de engine, AutoSchedule draait hem na elke wijziging
  • ShowCriticalPath markeert de taken die de einddatum bepalen
  • TotalSlack geeft de werkminuten die een taak mag uitlopen
  • De werkkalender stelt WorkDays, WorkTime en Holidays in

In Community geeft Schedule een EsgcPlannerError en heeft ShowCriticalPath geen effect.

Het helponderwerp lezen
Gantt met grijze basislijnbalken onder de huidige balken en twee taken die uitlopen

Gantt: plan projecten en volg het kritieke pad Alleen geregistreerd

Basislijnen tonen de uitloop in één oogopslag

Stakeholders vragen zelden wat het plan is; ze vragen hoever het is verschoven. Sla een basislijn op wanneer het plan is goedgekeurd en de Gantt tekent die als een dunne balk onder elke huidige balk, zodat een late taak zichtbaar is zonder één datum te lezen. De basislijndatums worden bij de items opgeslagen, bewaard in JSON en uitgewisseld met Microsoft Project XML, en je code kan ze lezen om een eigen afwijkingsrapport te bouwen.

  • SetBaseline kopieert Start en Finish van elk item in één update
  • ShowBaseline tekent de basislijnbalken
  • BaselineStart en BaselineFinish op elk item
  • Opgeslagen in JSON en gelezen uit Microsoft Project XML

Community bewaart en slaat de basislijndatums op maar tekent ze niet; SetBaseline geeft een EsgcPlannerError.

Het helponderwerp lezen

Gantt: plan projecten en volg het kritieke pad Alleen geregistreerd

Wissel plannen uit met Microsoft Project

Projectbureaus ontvangen plannen uit Microsoft Project en sturen ze terug. TsgcPlannerMSProject importeert en exporteert Microsoft Project XML (MSPDI), het XML-formaat dat Project opent en opslaat, met taken, koppelingen, de kalender, resources, toewijzingen en basislijnen. Een import kan het plan vervangen of erin samenvoegen, en een document dat niet goed gevormd is, geeft een fout met het regelnummer. Het importeren van 10.000 taken met 15.000 koppelingen duurde 264 ms in een Win64-ontwikkelmeting. Resources en toewijzingen komen mee met de taken.

  • ImportFromFile, ImportFromStream en ImportFromString
  • ExportToFile schrijft de XML die Microsoft Project opent
  • ImportMode: pmiReplace (standaard) of pmiMerge
  • Ongeldige XML geeft EsgcPlannerError met het regelnummer

Niet in de Community-editie, waar JSON het bestandsformaat is.

Het helponderwerp lezen

Gantt: plan projecten en volg het kritieke pad

Een tijdschaal met drie niveaus en een resourcehistogram

Lange plannen lezen beter met meer context in de kop, en overboekte mensen moeten zichtbaar zijn voordat het plan wordt gepubliceerd. De tijdschaal van de Gantt kan een derde niveau tonen, bijvoorbeeld de maand boven de weken boven de dagen. Een histogramvenster onderaan het diagram tekent voor elke tik hoeveel werk elke resource heeft ten opzichte van de werktijd, en het deel boven 100% wordt in de kritieke kleur geschilderd.

  • TimeScale.TierCount 3 voegt een bovenste niveau toe, met TopFormat voor de labels
  • ShowHistogram en HistogramHeight tonen het venster
  • HistogramResourceId toont één resource, of elke resource gestapeld in een eigen kleur
  • Het venster volgt het scrollen en zoomen van het diagram
Het helponderwerp lezen

Kanban: borden die het plan volgen

TsgcVCLKanban en TsgcFMXKanban: één kolom per status, op dezelfde gegevens als de Gantt.

Kanban-bord met vijf statuskolommen, tags, initialen van eigenaren, vervaldatums en voortgangsbalken

Kanban: borden die het plan volgen

Een takenbord waarmee je team kan werken

De mensen die het werk doen, willen een bord, geen diagram. De Kanban-weergave bouwt één kolom per status, met een tellerbadge en een inklappijl, en elke kaart toont titel, tags, initialen van de resource, vervaldatum en voortgang. Een kaart op een andere kolom neerzetten wijzigt de status en rangorde in de gedeelde gegevens, dus de Gantt en de planner worden meteen bijgewerkt, en je code kan elke verplaatsing weigeren voordat die gebeurt. Het bord volgt hetzelfde lichte of donkere thema als de andere weergaven.

  • ColumnSource bouwt de kolommen uit de statussen, of uit je eigen Columns
  • CardOptions bepaalt wat een kaart toont
  • OnCardMoving accepteert of weigert een drop
  • Kolombreedtes en inklappen werken in elke editie
Het helponderwerp lezen
TaskBoard-demo: vijf kolommen, drie swimlanes per resource en één kolom boven zijn limiet

Kanban: borden die het plan volgen Alleen geregistreerd

Swimlanes en WIP-limieten houden het werk in beweging

Swimlanes verdelen het bord in horizontale banen per resource, bovenliggende taak of tag, zodat elke persoon of epic een rij krijgt, en limieten voor onderhanden werk (WIP) begrenzen elke kolom, geteld over alle banen. In waarschuwingsmodus wordt een kolom boven zijn limiet gemarkeerd; in blokkeermodus kan een kaart die de limiet zou overschrijden niet worden neergezet. Het indelen van 5.000 kaarten in 8 kolommen en 6 banen duurde 5 ms op Win64.

  • SwimlaneBy: pslResource, pslParent of pslTag
  • WIPLimit per kolomitem, 0 voor geen limiet
  • WIPMode: pwmWarn markeert de kolom, pwmBlock weigert de drop
  • Banen en limieten werken op dezelfde gegevens als de andere weergaven

Community negeert SwimlaneBy en de WIP-limieten; kolommen, breedtes en inklappen werken.

Het helponderwerp lezen

Toegankelijkheid

UI Automation voor schermlezers, het toetsenbord en hoog contrast, zonder configuratie.

Toegankelijkheid

Elke weergave van de planner, leesbaar en bedienbaar zonder muis

sgcPlanner biedt de weergaven Scheduler, Timeline, Gantt en Kanban aan Microsoft UI Automation aan: dagen, banen en kolommen, de items met hun tijden en de Gantt-afhankelijkheden. Alles wat met de muis wordt gesleept, kan ook met het toetsenbord.

  • Scheduler en Timeline: Ins voegt een item toe op het slot met focus, Del verwijdert het, Ctrl+pijltoetsen verplaatsen het item en Ctrl+Shift+pijltoetsen wijzigen het einde
  • Gantt: Ctrl+Links en Ctrl+Rechts verplaatsen de taak één tik, Ctrl+K start een afhankelijkheid, Ctrl+Shift+K doorloopt de afhankelijkheden van de taak met focus
  • Kanban: Ctrl+Links en Ctrl+Rechts verplaatsen de kaart naar de aangrenzende kolom, Ctrl+Omhoog en Ctrl+Omlaag wijzigen de volgorde
  • Onder een Windows-thema met hoog contrast worden de itemkleuren van de applicatie vervangen door systeemkleuren met omlijningen, zodat geen informatie alleen van kleur afhangt

Toegankelijkheid staat standaard aan in elke editie, ook in de gratis Community-editie, op VCL in elke Delphi- en C++Builder-versie van Delphi 7 tot en met Delphi 13, op FireMonkey op Windows, en op WinForms, WPF en Avalonia. In Delphi en C++Builder stellen AccessibleName en AccessibleDescription de naam en de beschrijving in die aan UI Automation worden aangeboden, en in .NET doen de standaard toegankelijke naam en helptekst van elk framework hetzelfde. Zie de toegankelijkheidsrapporten.

Het helponderwerp lezen

Zie sgcPlanner in actie

sgcPlanner in de sgcUI suite-demo's: complete applicaties die offline draaien met ingebouwde gesimuleerde gegevens.

Gemeten op echte werklasten

Ontwikkelmetingen van Win64-releasebuilds op 1920 x 1080. Win32 is ongeveer 1,5 tot 1,7 keer trager.

MetingResultaatOmstandigheden
Automatisch plannen van 10.000 taken (1.000 samenvattingen, 3 niveaus) met 15.000 koppelingen en 30 feestdagen, kritieke pad inbegrepen11 msWin64-releasebuild
Gantt-frame tijdens het scrollen door 10.000 taken met 15.000 koppelingen11 msWin64-releasebuild, 1920 x 1080
Kanban-indeling van 5.000 kaarten in 8 kolommen en 6 banen5 msWin64-releasebuild
Plannerweekweergave met 2.000 items met tijdstip, indeling1 msWin64-releasebuild
Import van 10.000 taken met 15.000 koppelingen uit MS Project XML264 msWin64-releasebuild

Bron: het helponderwerp dat deze cijfers documenteert.

Wie bouwt er met sgcPlanner

Project- en engineeringsoftware

Projectbureaus en engineeringbedrijven

Plan een project als werkpakketstructuur, koppel de taken en laat de engine ze inplannen op de bedrijfskalender terwijl het kritieke pad toont wat de einddatum bepaalt. Sla bij goedkeuring een basislijn op en de uitloop is zichtbaar onder elke balk. Plannen komen binnen uit Microsoft Project en gaan als XML terug, en dezelfde taken staan op een bord voor het team.

  • Gantt met afhankelijkheden
  • Automatisch plannen en kritieke pad
  • Basislijnen
  • MS Project XML
Start de ProjectGantt-demo

Boekings- en afsprakensystemen

Klinieken, werkplaatsen en ruimtereserveringen

Toon elke arts, werkplek of vergaderruimte als eigen kolom en laat medewerkers boeken door over vrije tijdsloten te slepen. Terugkerende afspraken komen uit standaardregels, feestdagen komen binnen via een .ics-abonnement en de Google Agenda-bridge houdt de eigen agenda van een behandelaar gelijk. De dataset-bron schrijft elke boeking direct terug naar je tabellen. Medewerkers zien dezelfde boekingen in elke weergave.

  • Plannerweergaven en resources
  • Herhaling
  • DataSet-binding
  • Google Agenda-synchronisatie
Start de TeamScheduler-demo

Taakbeheer en helpdesktools

Agile teams en servicedesks

Geef het team een Kanban-bord met een swimlane per persoon en limieten voor onderhanden werk per kolom, en geef de manager een Gantt van dezelfde tickets. Een kaart naar Klaar verplaatsen kleurt de balk en de agenda-afspraak meteen opnieuw, omdat alle drie de weergaven één gegevensobject delen. Statusafbeeldingen voor een nachtelijke e-mail kunnen headless op een server worden gerenderd.

  • Kanban
  • Swimlanes en WIP-limieten
  • Gesynchroniseerde weergaven
  • Headless renderen
Start de TaskBoard-demo

Een teamplanner in een paar regels

Dezelfde API in Delphi, C++ Builder en C#: twee personen, een dagelijkse stand-up uit een herhalingsregel en een weekweergave waarin gebruikers nieuwe afspraken slepen.

Een VCL-weekplanner: twee personen als resources, een dagelijkse stand-up uit een herhalingsregel, slepen om te maken.

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.

Het helponderwerp lezen →

Dezelfde planner 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));
}

Het helponderwerp lezen →

De C#-versie voor 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

Het helponderwerp lezen →

Gantt in Delphi

Drie taken, twee koppelingen, een basislijn, het kritieke pad en de planningsengine (de Gantt-functies hier zijn functies van de Registered-editie).

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.

Herhalingsregels en de Gantt-aanroepen Schedule en SetBaseline zijn functies van de Registered-editie. De gratis Community-editie toont een terugkerend item één keer.

Probeer de sgcPlanner-demo's uit

Gecompileerde demo-programma's staan in sgcUI_bin.zip, zonder installatie. De broncode van elke demo zit in het pakket, voor Delphi, C++ Builder en .NET.

ProjectPlanner

ProjectPlanner

Gantt, Kanban en planner op één gegevensobject, altijd synchroon.

TeamScheduler

TeamScheduler

Zeven weergaven met de jaarweergave, resourcegroepen, terugkerende afspraken, herinneringen, tijdzones, ongedaan maken en opnieuw uitvoeren en bewerken ter plekke.

Alleen geregistreerd ProjectGantt

Koppelingen, automatisch plannen, kritieke pad, basislijnen, Microsoft Project XML, een tijdschaal met drie niveaus en het resourcehistogram.

Alleen geregistreerd TaskBoard

Statuskolommen, swimlanes per resource en WIP-limieten op een Kanban-bord.

DataSetPlanner

DataSetPlanner

Items, resources en afhankelijkheden gebonden aan TDataSets, met teruggeschreven bewerkingen.

Alleen geregistreerd ICalendarSync

.ics-bestanden importeren en exporteren.

ICalSubscription

Alleen geregistreerd ICalSubscription

Volg een alleen-lezen .ics-URL, zoals een lijst met feestdagen.

Alleen geregistreerd GoogleCalendarSync

Synchronisatie in twee richtingen met één Google Agenda via sgcWebSockets.

Alleen geregistreerd OutlookCalendarSync

Synchronisatie in twee richtingen met één Outlook-agenda van Microsoft 365 of Outlook.com via Microsoft Graph.

Alleen geregistreerd CalDAVSync

Synchronisatie in twee richtingen met één CalDAV-agenda, zoals Nextcloud, iCloud, Fastmail of Radicale.

HeadlessReport

Rendert de weergaven naar afbeeldingsbestanden zonder venster.

PlannerFMX

De drie weergaven in een FireMonkey-toepassing.

Gecompileerde demo's

Direct uitvoerbare programma's van elk sgcUI-product, zonder installatie.

sgcUI_bin.zip downloaden →

Waar sgcPlanner in zit

sgcPlanner is onderdeel van sgcUI Enterprise en wordt ook los verkocht. sgcPlanner zit ook in de All-Access-bundel.

sgcPlanner los pakket

€249 / ontwikkelaar, volledige broncode, 1 jaar updates.

sgcPlanner kopen → Prijzen bekijken →

sgcUI Enterprise

Alle 14 sgcUI-producten, vanaf €699.

Enterprise bekijken →

.NET

De .NET-editie heeft dezelfde prijs. Een gratis Community-editie staat op NuGet als esegece.sgcPlanner.Community.

Bekijk prijzen →

De gratis Community-editie is esegece.sgcPlanner.Community op NuGet. De tabel toont wat erin zit.

FunctieCommunity (gratis)Geregistreerd
Plannerweergaven dag, werkweek, week, maand en agenda✓✓
Gantt-taakstructuur, samenvattingen, mijlpalen en voortgang✓✓
Kanban-kolommen, inklappen en kaartopties✓✓
Slepen en neerzetten in elke weergave✓✓
DataSet-binding, JSON, thema's en headless PNG en SVG✓✓
Planner-jaarweergave✓✓
Herinneringen en tijdzones per item✓✓
Ongedaan maken en opnieuw uitvoeren, bewerken ter plekke✓✓
Gantt-tijdschaal met drie niveaus en resourcehistogram✓✓
Herhaling−✓
Resourcetijdlijnweergave van de planner−✓
Afhankelijkheidspijlen en slepen om te koppelen−✓
Automatisch plannen, kritieke pad en basislijnen−✓
Swimlanes en WIP-limieten−✓
iCalendar en Microsoft Project XML−✓
Synchronisatie met Google Agenda, Outlook en CalDAV en iCal-abonnement (sgcPlannerWS)−✓

Ondersteunde frameworks en platformen

Componenten in sgcPlanner

ComponentWat het doet
TsgcPlannerDataHet gedeelde model: items, resources, statussen, afhankelijkheden en werkkalender.
TsgcVCLScheduler, TsgcFMXSchedulerDag-, werkweek-, week-, maand-, jaar-, agenda- en tijdlijnweergaven.
TsgcVCLGantt, TsgcFMXGanttTaakstructuur, balken, koppelingen, planningsengine, kritieke pad en basislijnen.
TsgcVCLKanban, TsgcFMXKanbanStatuskolommen, kaarten, swimlanes en WIP-limieten.
TsgcPlannerSource_DataSetPlan uit een TDataSet.
TsgcPlannerICalendar, TsgcPlannerMSProjectLees en schrijf iCalendar .ics-bestanden en Microsoft Project XML (Registered).
TsgcPlannerRendererHeadless PNG- en SVG-uitvoer.
TsgcPlannerGoogleSync, TsgcPlannerGraphSync, TsgcPlannerCalDAVSync, TsgcPlannerICalSubscription (sgcPlannerWS)Synchronisatie in twee richtingen met Google Agenda, met Outlook en Microsoft 365 via Microsoft Graph en met CalDAV-servers, en iCal-abonnementen, via sgcWebSockets. Alleen Registered.
DoelComponentPlatformen
Delphi 7 tot 13, VCLPlanner, Gantt, KanbanWin32 and Win64
Delphi XE6 tot 13, FireMonkeyTsgcFMXScheduler, TsgcFMXGantt, TsgcFMXKanbanWindows, macOS, iOS en Android
C++ Builder 2007 tot 13VCL- en FMX-weergavenGegenereerde .hpp-headers en statische bibliotheken
Delphi 10.2 tot 13, frameworkneutraalGegevens, engines, JSON, iCalendar, Microsoft Project, rendererLinux64, bijvoorbeeld om plannen op een server te renderen
.NET Framework 4.7.2, .NET 8, 9 en 10TsgcWinFormsScheduler, Gantt en Kanban, en de WPF- en Avalonia-tegenhangersWinForms, WPF, Avalonia, headless PNG en SVG

Veelgestelde vragen

Ja, in de Registered-editie. TsgcPlannerMSProject leest en schrijft Microsoft Project XML (MSPDI) met taken, koppelingen, de kalender, resources, toewijzingen en basislijnen. Het XML-formaat is het ondersteunde formaat, dus sla het plan in Project op als XML.

Ja, in beide richtingen. Google Agenda synchroniseert via TsgcPlannerGoogleSync, Outlook-agenda's van Microsoft 365 en Outlook.com synchroniseren via Microsoft Graph met TsgcPlannerGraphSync, en CalDAV-agenda's, zoals Nextcloud, iCloud, Fastmail of Radicale, synchroniseren met TsgcPlannerCalDAVSync. Elke andere agenda die een .ics-URL publiceert, kun je alleen-lezen volgen met TsgcPlannerICalSubscription, en .ics-bestanden importeer en exporteer je met TsgcPlannerICalendar. De bridges vereisen de Registered-editie en sgcWebSockets.

De help publiceert ontwikkelmetingen van Win64-releasebuilds: het automatisch plannen van 10.000 taken met 15.000 koppelingen duurde 11 ms, en een frame tijdens het scrollen door dezelfde 10.000 taken duurde 11 ms. Een Kanban-indeling van 5.000 kaarten duurde 5 ms. Win32 is ongeveer 1,5 tot 1,7 keer trager.

De drie weergaven met slepen en neerzetten, samenvattingen, mijlpalen, voortgang, de werkkalender, DataSet-binding, JSON en headless uitvoer. Herhaling, automatisch plannen, getekende afhankelijkheden, kritieke pad, basislijnen, de tijdlijnweergave, swimlanes, WIP-limieten, iCalendar, Microsoft Project XML en de bridges zijn Registered.

Ja. TsgcPlannerSource_DataSet bindt het gegevensobject aan elke TDataSet, zoals FireDAC, TClientDataSet of dbExpress. Het laadt items, resources en afhankelijkheden via veldkoppelingen, volgt de wijzigingen van de datasets en schrijft de bewerkingen uit de weergaven terug.

Ja, via FireMonkey: TsgcFMXScheduler, TsgcFMXGantt en TsgcFMXKanban draaien vanaf Delphi XE6 op Windows, macOS, iOS en Android. Op Linux64 compileren het gegevensmodel, de engines, JSON, iCalendar, Microsoft Project XML en de renderer vanaf Delphi 10.2.

Ja. TsgcPlannerRenderer tekent de planner, de Gantt of het Kanban-bord van een gegevensobject als PNG of SVG zonder venster, op Windows of Linux64, in het lichte of het donkere thema.

sgcPlanner help

3,000+Ontwikkelaars
20+Jaar
761+Componenten
30+API-integraties
5Platformen
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid

Probeer sgcPlanner vandaag

De sgcUI-proefversie bevat sgcPlanner en alle andere sgcUI-producten.