2016-06-11 19 views
0

私は初心者です。私はStringGridとGanttChartを使ってC++ VCLプロジェクトに取り組んでいます。私がやりたいことは、新しいデータがStringGridに入力されると自動的にガントバーを「更新」することです。チャートを作成するが、バーは自動的にリサイズしてどのように私は、ガントのバーの日付を更新しないために最適ですTeechart Gantt date in C++

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日の間に自動的に「サイズ変更」される。

私にこれを行う機能やプロパティはありますか?

答えて

1

Steema Software公式フォーラム(here)であなたに返信しました。
私はここで答えをコピーしています:

私が正しく理解していれば、あなたのシリーズ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; 
     } 
    } 
    } 
}