Teechart Дата Ганта в C++

Я новичок и работаю над проектом C++ VCL с StringGrid и GanttChart. Что я хочу сделать, так это автоматически «обновлять» панель Ганта после ввода новых данных в StringGrid.

Сначала я создаю диаграмму с барами с помощью этой команды:

TGanttSeries *Series1;
 int i = 0;

Series1 = new TGanttSeries(this);
Series1->AddGantt(StrToDate(StringGridEd1->Cells[4][1]),StrToDate(StringGridEd1->Cells[5][1]), i,"Task"+IntToStr(i));
Series1->ParentChart = Chart1;

Это идеально подходит для создания диаграммы, но как обновить дату столбца Ганта, чтобы размер столбца автоматически изменялся? Например, если пользователь вводит 1 день, полоса Ганта отображает только 1 день, а когда пользователь вводит 5 дней, полоса Ганта автоматически «меняет размер» с 1 до 5 дней.

Есть ли какие-либо функции или свойства, которые могут сделать это для меня?


person Laz22434    schedule 11.06.2016    source источник


Ответы (1)


Я только что ответил вам на официальном форуме Steema Software (здесь).
Я копирую ответ здесь:

Если я правильно понимаю, вы можете обновить StartValues/EndValues ​​вашей серии в событии StringGrid1SetEditText. То есть:

TGanttSeries *Series1;

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  StringGrid1->ColCount = 6;
  StringGrid1->RowCount = 2;
  StringGrid1->Cells[4][1] = "01/01/2016";
  StringGrid1->Cells[5][1] = "02/01/2016";
  StringGrid1->Options << goEditing;

  int i = 0;

  Series1 = new TGanttSeries(this);
  Series1->AddGantt(StrToDate(StringGrid1->Cells[4][1]),StrToDate(StringGrid1->Cells[5][1]), i,"Task"+IntToStr(i));
  Series1->ParentChart = Chart1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol, int ARow,
          const UnicodeString Value)
{
  TDateTime tmp;

  if ((ACol==4) || (ACol==5)) {
    if (TryStrToDate(StringGrid1->Cells[ACol][ARow], tmp)) {
      if (ACol==4) {
        Series1->StartValues->Value[ARow-1] = tmp;
        Series1->StartValues->Modified = true;
      }
      else {
        Series1->EndValues->Value[ARow-1] = tmp;
        Series1->EndValues->Modified = true;
      }
    }
  }
}
person Yeray    schedule 13.06.2016