2016-06-11 24 views
0

Ich bin ein Neuling und ich arbeite an einem C++ - VCL-Projekt mit einem StringGrid und einem GanttChart. Was ich tun möchte, ist die "Aktualisierung" des Gantt-Balkens automatisch, sobald neue Daten in das StringGrid eingegeben werden.Teechart Gantt Datum in C++

Was ich tue, ist zunächst ein Diagramm mit Balken mit diesem Befehl zu erstellen:

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; 

, die zum Erstellen eines Diagramms perfekt aber, wie aktualisiere ich die Bar Datum des Gantt so die Bar selbst automatisch die Größe? Wenn der Benutzer beispielsweise 1 Tag eingibt, zeigt die Gantt-Leiste nur 1 Tag an, und wenn der Benutzer 5 Tage eingibt, wird die Gantt-Leiste automatisch von 1 bis 5 Tagen "skaliert".

Gibt es irgendeine Funktion oder Eigenschaften, die das für mich tun können?

Antwort

1

Ich habe Sie gerade bei Steema Software offiziellen Forum (here) geantwortet.
Ich kopiere die Antwort hier:

Wenn ich es richtig verstehe, können Sie Ihre Serie StartValues ​​/ EndValues ​​am StringGrid1SetEditText-Ereignis aktualisieren. Ie:

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