StringGrid und RadioGroup Problem
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Borland C++ Builder (VCL/CLX) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
-
Statt des Textes aller Items solltest du dir wohl lieber den eines einzelnen, bevorzugt den des selektierten Items holen.
-
Bau halt eine zusätzliche Bedingung in die Schleife ein, um die Zahl der FixedRows zu beachten. Sieh dir ggf. mal den StringGrid-Abschnitt in der FAQ an.
-
In Zukunft bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema. Danke!
-
-
Jansen schrieb:
<Edit: Zitate auf das Notwendigste beschränken. Danke!>
wie kann die Lösung zu Punkt 1 aussehen?
Danke
-
Sieh dir doch mal in der Hilfe an, was die RadioGroup noch für Eigenschaften und Methoden hat (idealerweise was mit 'item' im Namen ...), was die so machen und wie die dazu aufgeführten Beispiele funktionieren.
PS.
Wenn du mit der Hilfe nicht so richtig klarkommst dann wirf doch mal einen Blick auf den Abschnitt "Allgemein: Softwareentwicklung" in der FAQ.
-
die Hilfe und das FAQ helfen mir auch nicht weiter!
Irgendwie habe ich das gefühle dass ihr mir nicht helfen wollt bzw. könnt
weil hier jeder um den heißen brei herumredet!!!!!
Hab mir echt etwas mehr Hilfe von dem Board erwartet!Trotzdem vielen Dank für die kontstruktiven Beiträge!
MfG
CM900
-
StringGrid1->Cells[2][nummer] = Genre->Items->Strings[Genre->ItemIndex];void __fastcall TForm1::floeschenClick(TObject *Sender) { int todelete=StringGrid1->Selection.Top; for( int i= todelete+1; i< StringGrid1->RowCount;i++) { StringGrid1->Cells[0][i-1] = StringGrid1->Cells[0][i]; StringGrid1->Cells[1][i-1] = StringGrid1->Cells[1][i]; StringGrid1->Cells[2][i-1] = StringGrid1->Cells[2][i]; } if(StringGrid1->RowCount>2) StringGrid1->RowCount--; else StringGrid1->Rows[1]->Clear(); }3.Nicht gleich immer aus der Haut fahren.Manchmal braucht es halt bis jemand kommt und sich der Sache annimmt ...

-
Vielen Dank für deine Hilfe!!!
jetzt gibt es noch ein kleines Problem
hier war es so, das die Zeilen Nr. automatisch nachkorrigiert wird wenn man einen Eintrag löscht!
StringGrid1->Cells[0][i-1] = StringGrid1->Cells[0][i-1];durch das entfernen der "-1" ist diese Funktion nicht mehr gegeben
StringGrid1->Cells[0][i-1] = StringGrid1->Cells[0][i];hast du evtl. eine Lösung zu diesem Problem
-
Du läst das
StringGrid1->Cells[0][i-1] = StringGrid1->Cells[0][i-1];komplett raus.
-
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.