c++ - C++ 中的 Teechart 甘特图日期

标签 c++ c++builder vcl teechart gantt-chart

我是新手,我正在使用 StringGrid 和 GanttChart 开发一个 C++ VCL 项目。我想要做的是在将新数据输入 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 天。

是否有任何函数或属性可以为我执行此操作?

最佳答案

我刚刚在 Steema Software 官方论坛 ( here ) 回复了你。
我在这里复制答案:

如果我理解正确,您可以在 StringGrid1SetEditText 事件中更新您的系列 StartValues/EndValues。即:

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;
      }
    }
  }
}

关于c++ - C++ 中的 Teechart 甘特图日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767445/

相关文章:

c++ - 假 FTP 服务器

c++ - 非 const 函数 _fastcall TStrings::GetCount() 为 const 对象调用

delphi - 如何使窗体或窗口控件 RecreateWnd 正确感知?

c++ - C++ 是否深度初始化类成员?

c++ - 如何分析 cpp/汇编代码的性能

C++ Builder 窗体崩溃

delphi - delphi XE7中KeyDown需要移位寄存器

delphi - 如何使 TVirtualStringTree 以更高的优先级处理按键?

c++ - 通过使用带有私有(private)数据成员的类重载 + 运算符来添加分数

delphi - 如何知道有多少任务已经完成?