TStringGrid zur nächsten Zeile springen



  • Hallo,

    also ich habe ein neues Form erstellt und darin ein tStringGrid mit 6 Spalten und 1 Zeile als Überschrift und zusätlich noch eine Zeile wo ich den ersten Datensatz immer reingeschrieben habe.

    Dann gibt es noch 6 Eingabefelder und einen Hinzufügen Button.

    Wenn man auf den Hinzufügen Button klickt sollen die Daten dem TStringGrid hinzugefügt werden

    Den Quelltext den ich bis jetzt hatte steht ja oben

    Die Anregung von dir das eine Zeile normal hinzugefügt wird hab ich so noch garnicht bedacht. Hab gerade mal in der Borland hilfe rumgesucht aber dort keinen Befehl zum hinzufügen einer Zeile gefunden



  • Hallo

    Mit der Eigenschaft TStringGrid::RowCount kannst du auslesen wie viele Zeilen das StringGrid hat, und die Anzahl ändern (vergrößern).
    Wenn du allerdings schon vo nAnfang an leere Zeilen hast, must du intern verfolgen wieviele echte Datensätze schon eingetragen wurde, um die nächste leere Zeile zu bestimmen bzw. eine neue Zeile anzufügen.

    bis bald
    akari



  • das mit der leeren zeile kann ich ja auch ändern das ich keine habe.

    zählen die zeilen die man als FixedRow definiert hat auch dazu? Da hab ich eine für die Überschrift...



  • Hallo

    ja FixedRows zählen auch dazu.

    bis bald
    akari



  • ok. hab das erstmal weggelassen mit den Überschriften.

    Hab das jetzt hinbekommen mit TStringGrid::RowCount die Anzahl der Zeilen zu bestimmen. Da gibt der mir ne 1 aus. Weil eine zeile muss ja immer da drinnen sein.

    Wie füge ich jetzt eine neue zeile hinzu mit meinem Daten?

    edit: ok habe es. hab jetzt nur noch das problem das die erste zeile im TStringGrid leer ist



  • hinzufügen kannst du es mit
    RowCount++

    und dann wie gewohnt deine daten reinschreiben



  • jo funktioniert jetzt alles.

    Als nächsten Schritt möchte ich jetzt ne kommaseparierte Liste einlesen...



  • kann das Gird nicht -> selbst progammieren

    Datei öffnen, Zeile lesen,neue Gridzeile, aufteilen, den Zellen zuordnen.

    Das kann beim aufteilen helfen:
    http://www.marquardtnet.info/cecke/quickies.1/1_quicky_01.html



  • jede Reihe oder Spalte eines Stringgrid ist vom Typ TStrings und die beherrschen alle CommaText, Delimiter und DelimitedText

    d.h. folgendes sollte funktionieren

    StringGrid1->Rows[1]->CommaText = "Heute,Gestern,Morgen";
    

    [Edit]geht allerdings erst ab BCB6



  • ne funktioniert auch mit der 5 version

    hab das jetzt so probiert

    TStringList* tmpList = new TStringList;
       tmpList->LoadFromFile("C:\Mappe1.csv");
       StringGrid1->Rows[1]->CommaText = tmpList;
    

    Bekomme jetzt folgende Fehlermeldung:

    [C++ Fehler] Unit1.cpp(56): E2034 Konvertierung von 'TStringList *' nach 'AnsiString' nicht möglich



  • Hallo

    Die Fehlermeldung ist doch eindeutig

    StringGrid1->Rows[1]->CommaText = tmpList->Text;
    

    bis bald
    akari



  • ok danke geht so.

    aber den lösungsansatz kann ich doch nicht verwenden. Die Datensätze sind leider durch ; getrennt und nicht durch ,



  • ich empfehle das du oben noch mal nachschauen solltest... oder die hilfe vom bcb nutzt und mal "DelimitedText" eingibst... da siehst du das was du brauchst... is das selbe wie commatext nur das du die zeichen selber definieren kannst...

    cya
    da vo



  • dann den Delimiter auf ; setzen und DelimitedText verwenden



  • Du kannst ja mit StringReplace vorher die Semikolons durch Kommas ersetzen. Ab dem BCB6 kann man das Trennzeichen auch selbst bestimmen (Separator).



  • ok. danke. hab das ganze jetzt auf kommas umgestellt. leuft jetzt

    aber ich hab da ja mehr als einen datensatz drinnen. jetzt muss ich ja irgendwie zählen wieviele das sind in der datei oder?

    Danke für eure geduld 👍



  • Gibt so Grundprinzipen in der EDV. Beim lesen aus Dateien:

    Vorlesen
    Prüfung (EOF)
    verarbeiten
    weiterlesen
    zur Prüfung
    nachverarbeiten

    Im "Verarbeiten" machst du dein schieben ins Grid und eine Zählung



  • @hoellenhund

    du solltest wirklich mal anfangen die BCB-Hilfe und die FAQ zu nutzen
    z.B. diese Thema aus der FAQ, einfach an deine Bedürfnisse anpassen
    oder die BCB-Hilfe zu TStringList (z.B. die Eigenschaft Count) und die diversen Beispiele

    hier noch ein nützlicher Link: Hilfe benutzen



  • jo. hab die hilfe mal benutzt. und es leuft sogar jetzt fast.

    Der ließt alle Datensätze (3 Stück) ein und schreibt die ins TStringGrid

    Nur nachdem der Die eingelesen hat bekomme ich noch folgende Meldung:

    Der Index der Liste überschreitet das Maximum(3)

    Kann damit irgendwie nichts anfangen. Ich denke da wird irgendwo nen fehler in meiner schleife sein

    int zeilen;
    
    TStringList* tmpList = new TStringList;
    tmpList->LoadFromFile("C:\\hallo.csv");
    zeilen = tmpList->Count;
    
    for (int y = 0; y <= zeilen; y++)
    {
    int j = StringGrid1->RowCount;
    StringGrid1->Rows[j-1]->CommaText = tmpList->Strings[y];
    StringGrid1->RowCount += 1;
    


  • hab den fehler. lag am = Zeichen in der Schleife


Anmelden zum Antworten