Page 1 of 1

synchonize two Gantt Charts

Posted: Thu Nov 29, 2018 10:43 am
by 16583724
Hello,
The two Gantt Charts are related. The Timelines are different, however. How can I achieve that they are equal?
Edit the lower Gantt so that it is equal to the upper one?

Henk
Gantt.PNG
Gantt.PNG (98.18 KiB) Viewed 826 times

Re: synchonize two Gantt Charts

Posted: Mon Dec 03, 2018 8:03 am
by yeray
Hello,

You can change the bottom axis scale for the lower chart. Ie:

Code: Select all

  lowerChart.Axes.Bottom.SetMinMax(upperChart.Axes.Bottom.Minimum, upperChart.Axes.Bottom.Maximum);

Re: synchonize two Gantt Charts

Posted: Wed Dec 05, 2018 11:05 am
by 16583724
Hello,

Something strange happens: setting the bottom axis happens with a delay of a click. See Video
The Bottomaxis automatic is set to false.

The code is:

Code: Select all

procedure TWerktijdoverzichtDag.SetChart;
var
  startT, endT: TTime;
  activiteit: string;
  kleur: TColor;
  i, Y: Integer;
  Itemnummer: Integer;
begin
  Series1.Clear;
  Chart1.Title.Caption := nxMTL_Medewerkers.FieldByName('naam').AsString + ' datum: ' + DateToStr(AdvDateTimePicker1.Date);
  Series1.XValues.DateTime := true;
  Y := 10;
  i := 0;
  nxQL_Activiteiten.First;
  while not nxQL_Activiteiten.eof do
  begin
    startT := TimeOf(nxQL_Activiteiten.FieldByName('WT_VanDT').AsDateTime);
    endT := TimeOf(nxQL_Activiteiten.FieldByName('WT_TotDT').AsDateTime);
    activiteit := nxQL_Activiteiten.FieldByName('A_Activiteitsoort').AsString;
    kleur := nxQL_Activiteiten.FieldByName('A_Activiteitkleur').AsInteger;
    Y := Y + 20;
    Series1.AddGanttColor(startT, endT, Y, activiteit, kleur); // met kleur
    recinfo1[i] := nxQL_Activiteiten.FieldByName('WT_Autonum').AsInteger;
    inc(i);
    nxQL_Activiteiten.Next;
  end;
  // WO toevoegen:
  GanttSeries1.Clear;
  GanttSeries1.XValues.DateTime := true;
  Chart2.Title.Caption := nxMTL_Medewerkers.FieldByName('naam').AsString + ' datum: ' + DateToStr(AdvDateTimePicker1.Date);
  Chart2.Axes.Bottom.SetMinMax(Chart1.Axes.Bottom.Minimum, Chart1.Axes.Bottom.Maximum);
  nxQL_Werkopdrachten.First;
  Y := 10;
  i := 0;
  while not nxQL_Werkopdrachten.eof do
  begin
    startT := TimeOf(nxQL_Werkopdrachten.FieldByName('Van').AsDateTime);
    endT := TimeOf(nxQL_Werkopdrachten.FieldByName('Tot').AsDateTime);
    activiteit := nxQL_Werkopdrachten.FieldByName('Werksoort').AsString;
    kleur := clRed; // nxQL_Activiteiten.FieldByName('A_Activiteitkleur').AsInteger;
    Y := Y + 20;
    Itemnummer := GanttSeries1.AddGanttColor(startT, endT, Y, activiteit, kleur); // met kleur
    GanttSeries1.Marks.Item[Itemnummer].Text.Add('Werk voor: ' + nxQL_Werkopdrachten.FieldByName('Voor').AsString);
    GanttSeries1.Marks.Item[Itemnummer].Text.Add('Van: ' + nxQL_Werkopdrachten.FieldByName('VanT').AsString);
    GanttSeries1.Marks.Item[Itemnummer].Text.Add('Tot: ' + nxQL_Werkopdrachten.FieldByName('TotT').AsString);
    recinfo2[i] := nxQL_Werkopdrachten.FieldByName('Nummer').AsInteger;
    inc(i);
    nxQL_Werkopdrachten.Next;
  end;
end;
Link to video:
https://www.dropbox.com/s/ot4p98yeuvgku ... 4.mp4?dl=0

Re: synchonize two Gantt Charts

Posted: Wed Dec 05, 2018 2:26 pm
by 16583724
Problem solved by putting a Chart1.Repaint

Code: Select all

procedure TWerktijdoverzichtDag.SetChart;
var
  startT, endT: TTime;
  activiteit: string;
  kleur: TColor;
  i, Y: Integer;
  Itemnummer: Integer;
begin
  Series1.Clear;
  Chart1.Title.Caption := nxMTL_Medewerkers.FieldByName('naam').AsString + ' datum: ' + DateToStr(AdvDateTimePicker1.Date);
  Series1.XValues.DateTime := true;
  Y := 10;
  i := 0;
  nxQL_Activiteiten.First;
  while not nxQL_Activiteiten.eof do
  begin
    startT := TimeOf(nxQL_Activiteiten.FieldByName('WT_VanDT').AsDateTime);
    endT := TimeOf(nxQL_Activiteiten.FieldByName('WT_TotDT').AsDateTime);
    activiteit := nxQL_Activiteiten.FieldByName('A_Activiteitsoort').AsString;
    kleur := nxQL_Activiteiten.FieldByName('A_Activiteitkleur').AsInteger;
    Y := Y + 20;
    Series1.AddGanttColor(startT, endT, Y, activiteit, kleur); // met kleur
    recinfo1[i] := nxQL_Activiteiten.FieldByName('WT_Autonum').AsInteger;
    inc(i);
    nxQL_Activiteiten.Next;
  end;
  Chart1.Repaint;   //<----------------------------
  // WO toevoegen:
  GanttSeries1.Clear;
  GanttSeries1.XValues.DateTime := true;
  Chart2.Title.Caption := nxMTL_Medewerkers.FieldByName('naam').AsString + ' datum: ' + DateToStr(AdvDateTimePicker1.Date);
  Chart2.Axes.Bottom.SetMinMax(Chart1.Axes.Bottom.Minimum, Chart1.Axes.Bottom.Maximum);
  nxQL_Werkopdrachten.First;
  Y := 10;
  i := 0;
  while not nxQL_Werkopdrachten.eof do
  begin
    startT := TimeOf(nxQL_Werkopdrachten.FieldByName('Van').AsDateTime);
    endT := TimeOf(nxQL_Werkopdrachten.FieldByName('Tot').AsDateTime);
    activiteit := nxQL_Werkopdrachten.FieldByName('Werksoort').AsString;
    kleur := clRed; // nxQL_Activiteiten.FieldByName('A_Activiteitkleur').AsInteger;
    Y := Y + 20;
    Itemnummer := GanttSeries1.AddGanttColor(startT, endT, Y, activiteit, kleur); // met kleur
    GanttSeries1.Marks.Item[Itemnummer].Text.Add('Werk voor: ' + nxQL_Werkopdrachten.FieldByName('Voor').AsString);
    GanttSeries1.Marks.Item[Itemnummer].Text.Add('Van: ' + nxQL_Werkopdrachten.FieldByName('VanT').AsString);
    GanttSeries1.Marks.Item[Itemnummer].Text.Add('Tot: ' + nxQL_Werkopdrachten.FieldByName('TotT').AsString);
    recinfo2[i] := nxQL_Werkopdrachten.FieldByName('Nummer').AsInteger;
    inc(i);
    nxQL_Werkopdrachten.Next;
  end;
end;
Henk