TListView Zugriff auf Spalten
-
ich habe Radiobuttons und möchte, dass Daten in einer ListView (Ansicht Report) bei ausgewählten Radiobuttons mit aufgenommen werden. Die Spalten der ListView habe ich über TListColumns vorgegeben. Nun möchte ich die Spalten mit den Daten ausfüllen lassen. Leider klappt das bisher nicht bei mir.
for (unsigned int i=0; i<batch.size(); i++) { HO_PC_TS2_LV_Messwerte->Items->Add(); HO_PC_TS2_LV_Messwerte->Items->Item[i]->Caption=i+1; HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add(batch[i].Get_date()); HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add(batch[i].Get_time()); if (HO_CG_Messwerte->Checked[0]) // wenn der 1.Radiobutton gesetzt { HO_PC_TS2_LV_Messwerte->Items->Add(); HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add(batch[i].Get_temperatur()); } if (HO_CG_Messwerte->Checked[1]) { HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add(batch[i].Get_phwert()); } }
Eigentlich funktioniert das so aber wenn ich einen Radiobutton wieder deaktiviere rutscht die ganze Spalte nach links, was ich natürlich nicht will.
-
Hallo,
wenn ich Dich (und Deinen Quellcode) richtig verstehe, dann musst Du es so lösen:
for (unsigned int i=0; i<batch.size(); i++) { HO_PC_TS2_LV_Messwerte->Items->Add(); HO_PC_TS2_LV_Messwerte->Items->Item[i]->Caption=i+1; HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add(batch[i].Get_date()); HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add(batch[i].Get_time()); if(HO_CG_Messwerte->Checked[0]) // wenn der 1.Radiobutton gesetzt { HO_PC_TS2_LV_Messwerte->Items->Add(); HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add(batch[i].Get_temperatur()); } else { HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add("") } if(HO_CG_Messwerte->Checked[1]) { HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add(batch[i].Get_phwert()); } else { HO_PC_TS2_LV_Messwerte->Items->Item[i]->SubItems->Add("") } // usw... }
Das else { .... } natürlich nach jedem SubItem...
In einer Listview können SubItems nicht "ausgelassen" werden;
ich würde eh lieber mit einem TStringGrid arbeiten. Da kannst
Du gezielt mit Grid->Cells[iSpalte][iReihe]="Text" diese be-
füllen.Gruss Stefan
-
na klar. danke für die schnelle Hilfe. Das mit dem Grid probier ich mal.