StringGrid und RadioGroup Problem
-
das hat geklappt!
was mir jetzt noch beim löschen aufgefallen ist, es bleibt immer ein Eintrag stehen den ich nicht löschen kann?!
Direkt in der 2 Zeile
-
Du meinst eine leere Zeile bleibt stehen ?
Das hängt hiermit zusammen:if(StringGrid1->RowCount>2) StringGrid1->RowCount--; else StringGrid1->Rows[1]->Clear();In einem StringGrid muss die Anzahl von Rows (Rowcount) immer größer als die der fixierten Rows (FixedRows) sein. Ansonsten fällt die Fixierung weg.
Kannst du hiermit probieren:
if(StringGrid1->RowCount>1) StringGrid1->RowCount--; else StringGrid1->Rows[1]->Clear();
-
nicht ganz!
wenn ich z.b 5 Filme eintrage und alle 5 Filme nacheinander lösche werden effektiv nur die Filme 2-5 geölscht, film 1 bleibt stehen und lässt sich nicht löschen!hier wird auch das FixRow gelöscht
if(StringGrid1->RowCount>1) StringGrid1->RowCount--; else StringGrid1->Rows[1]->Clear();
-
Wieviel fixierte Rows hast du denn ?
void __fastcall TForm1::floeschenClick(TObject *Sender) { int todelete=StringGrid1->Selection.Top; //todelete = Selektierte Row for( int i= todelete+1; i< StringGrid1->RowCount;i++) // alle Zeilen { // hinter todelete StringGrid1->Cells[0][i-1] = StringGrid1->Cells[0][i-1];// um eine Pos StringGrid1->Cells[1][i-1] = StringGrid1->Cells[1][i]; // verschieben StringGrid1->Cells[2][i-1] = StringGrid1->Cells[2][i]; } //wenn mehr als 2 Rows im Grid sind(1 fixierte + 1 Eintrag) Rowcount //runterzählen ansonsten alles in Zeile 1 löschen. if(StringGrid1->RowCount>2) StringGrid1->RowCount--; else StringGrid1->Rows[1]->Clear(); }
-
mit dem folgendem Code bleibt das FixRows erhalten, Nr.,Filmname und Genre werden gelöscht, egal wie ich die Löschung der Einträge vornehme!
if(StringGrid1->RowCount>2) StringGrid1->RowCount--; else StringGrid1->Rows[1]->Clear();
-
Sehe gerade das Problem in deiner hinzufügen Funktion
void __fastcall TfMain::fhinzuClick(TObject *Sender) { int nummer = 0 ; if ( Genre -> ItemIndex!=-1) //wenn bei RadioGroub nichts aktiviert, keine Funktion { nummer = StringGrid1->RowCount-1; //speichert RowCounts StringGrid1->Cells[0][nummer] = nummer; //(Zeilen) und Schreiben StringGrid1->Cells[1][nummer] = eZ1->Text; //übernimmt Text aus Edit und schreibt in Zelle StringGrid1->Cells[2][nummer] = Genre->Items->GetText(); //Fehler!!Genre StringGrid1->RowCount++; //nächste Zeile überlauf } }ändern nach:
void __fastcall TfMain::fhinzuClick(TObject *Sender) { int nummer = 0 ; if ( Genre -> ItemIndex!=-1) //wenn bei RadioGroub nichts aktiviert, keine Funktion { nummer = StringGrid1->RowCount-1; //speichert RowCounts StringGrid1->RowCount++; //nächste Zeile überlauf StringGrid1->Cells[0][nummer] = nummer; //(Zeilen) und Schreiben StringGrid1->Cells[1][nummer] = eZ1->Text; //übernimmt Text aus Edit und schreibt in Zelle StringGrid1->Cells[2][nummer] = Genre->Items->GetText(); //Fehler!!Genre } }
-
Sorry, etwas schnell gepostet. So müsste es funktionieren.
void __fastcall TForm1::fhinzufuegenClick(TObject *Sender) { int nummer = 0 ; if ( Genre -> ItemIndex!=-1) { if(StringGrid1->Cells[0][1]!="") StringGrid1->RowCount ++; nummer = StringGrid1->RowCount-1; //speichert RowCounts StringGrid1->Cells[0][nummer] = nummer; //(Zeilen) und Schreiben StringGrid1->Cells[1][nummer] = eZ1->Text; //übernimmt Text aus Edit und schreibt in Zelle StringGrid1->Cells[2][nummer] = Genre->Items->Strings[Genre->ItemIndex]; } }
-
Dank deiner Hilfe konnte ich die restlichen fehlerchen ausbessern!
Das Programm funktionoiert 1A
Danke------------------------
Wollte ich jetzt das ganze noch abspeichern und wieder einlesen können, müsste ich das über ein Memo machen?
-
-
Ps.:Besser währe sowas mit einer Datenbank zu lösen.