TStringGrid dynamisch füllen
-
ich habe folgendes StringGrid:
for (unsigned int i=0; i<batch.size(); i++) { Grid->Cells[0][i+1]=i+1; Grid->RowCount = batch.size()+1; //Grid->ColCount = HO_CG_Messwerte->Items->Che; Grid->Cells[1][i+1]= batch[i].Get_date(); Grid->Cells[2][i+1]= batch[i].Get_time(); Grid->ColCount = CountCheckBoxes(HO_CG_Messwerte)+3; if (HO_CG_Messwerte->Checked[0]) { Grid->Cells[Grid->ColCount-1][0]= "T:"; Grid->Cells[Grid->ColCount-1][i+1] = batch[i].Get_temperatur(); Series1->AddXY(batch[i].Get_time(),batch[i].Get_temperatur(),"",clBlue); } if (HO_CG_Messwerte->Checked[1]) { Grid->Cells[Grid->ColCount-1][0]= "pH:"; Grid->Cells[Grid->ColCount-1][i+1] = batch[i].Get_phwert(); Series1->AddXY(batch[i].Get_time(),batch[i].Get_phwert(),"",clBlue); } if (HO_CG_Messwerte->Checked[2]) { Grid->Cells[Grid->ColCount-1][0]= "Redox:"; Grid->Cells[Grid->ColCount-1][i+1] = batch[i].Get_redox(); Series1->AddXY(batch[i].Get_time(),batch[i].Get_phwert(),"",clBlue); } }
zusätzlich habe ich eine Checkgroup mit mehreren CheckBoxes (HO_CG_Messwerte). Die ersten 3 Spalten sind fest. Dot steht immer was drin:
//Spaltentitel der Tabelle: Grid->Cells[0][0]="x"; Grid->Cells[1][0]="Datum:"; Grid->Cells[2][0]="Zeit:";
Die Funktion CountCheckBoxes gibt die Anzahl der ausgewählten Checkboxes zurück.
Nun soll das Programm bei gewählter Checkbox, die entsprechenden Daten in die Spalte eintragen. Nimmt man dieses wieder raus, soll die Spalte wieder verschwinden und eventuell noch aktivierte Spalten nachrutschen. Im Prinzip funktioniert es wenn ich nacheinander die ersten 3 Checkboxes aktiviere. Aktiviere ich aber erst die 2. Checkbox und dann die erste, erscheinen die Daten die zu der zweiten Checkbox gehören 2 mal. Das Problem ist wohl, dass die erste if Bedingung dann nicht mehr geprüft wird.
Wie kann ich das Problem lösen? (Ich hoffe man steigt einigermaßen durch das Programm durch)