TStringGrid
-
hi,
habs versucht aber funzt net, bin mit dem programm nicht so sehr vertraut.
ich weiss ehrlich gesagt nicht an welcher stelle das in der unit1.h rein soll?!
die unit1.h sieht bei mir so aus://--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TStatusBar *StatusBar1; TStringGrid *SG1; TButton *Button1; TLabel *Label1; TButton *Button2; TLabel *Label2; TComboBox *ComboBox1; TButton *Button3; private: // Benutzer-Deklarationen public: // Benutzer-Deklarationen __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
mfg cr
-
Das gehört in die cpp und nicht in die Headerdatei. Da hast du, meist ganz oben, die Definition des Konstruktors.
Wieso verwendest du eigentlich Add von Rows und Cols und nicht TStringGrid::Cells?
Wenn dein Compiler Fehlermeldunge ausspuckt, gib die mit an und schreibe nicht einfach "Funzt nicht".
-
habs gefunden, thx!
aber habs jetzt in cols und rows von SG1, wie würde ich das in cells von SG1 schreiben, wenn ich ganz links die spalte und ganz oben die zeile ab 1 durch nummerieren möchte, bietet sich auch eine for-schleife an?mfg cr
-
Genau. Das ging z.Bsp. so für die zeilen
for( int i=1; i<=SG1->RowCount; ++i) SG1->Cells[0][i] = IntToStr(i);
-
suppa das geht,thx. aber am ende sollte statt eine eine ziffer das wort "Summe" stehen und zwar für die LETZTE celle der spalte und der zeile. baut man das auch in der for-schleife mit rein, wenn ja wie?
weil noch eine combobox rein muss wo man später die anzahl der zeilen bestimmen kann aber nur die anzahl der zeilen und am ende müsste dann Summe stehen.
mfg cr
-
Wenn du nur eine Zelle beschreiben willst macht es wohl wenig Sinn das in eine Schleife einzubauen oder?
-
nein, es sollen ja die anderen zellen auch beschriftet werden mit zahlen, nur die letzte zelle da soll Summe stehen. das äußere des Stringgrids soll so aussehen:
_________________________
1234Summe
1
2
3
4
Summe
_________________________mfg cR
-
for( int i=1; i<=SG1->RowCount; ++i) if( i == RowCount ){ SG1->Cells[0][i] = "Summe"; }else{SG1->Cells[0][i] = IntToStr(i);}
So? Ist aber ausm Gedächtnis geschrieben, also ungetestet
-
Hallo
Wohl eher so
int Summe = 0; int Wert; for( int i=1; i<=SG1->RowCount; ++i) { if( i == RowCount ) { SG1->Cells[0][i] = IntToStr(Summe); } else { Wert = // Wert für Zeile i bestimmen Summe += Wert: SG1->Cells[0][i] = IntToStr(Wert); } }
bis bald
akari
-
warum eigentlich "i<=SG1->RowCount" und "i==RowCount"? beides führt dazu, dass der Summenwert garnicht angezeigt wird, da er _hinter_ der letzten Zeile steht.
die Zählung beim StringGrid geht bei 0 los und geht bis RowCount-1außerdem glaube ich, dass cyberratte wirklich das Wort "Summe" dort stehen haben möchte, aber anhand des gezeigten Quellcodes sollte er das jetzt auch allein hinbekommen
-
hi,
der spuckt fehlermeldung:[C++ Fehler] Unit1.cpp(17): E2451 Undefiniertes Symbol 'RowCount'
und bei
if (i==SG1->RowCount)
startet der compiler aber nichts von "Summe" zu sehen.
mfg cR
-
ja "Summe" als Wort!
-
hi linnea ich gib mir wirklich größte mühe das zu verstehen aber habe überhaupt keine erfahrung mit dem programm, abgesehen davon erfühllt doch der forum sein zweck, stell dir vor wenn jeder diese einstellung hätte, dann wäre kommunikation und gegenseitige hilfe == 0 !
mfg cR
-
wenn du ein fertiges Programm möchtest frag im Projekte-Forum
wenn du etwas lernen möchtest um es für weitere Projekte verwenden zu können, dann nutze diese Forum und lies unsere Beiträge genau durch und teste einfach mal was der Quellcode den du bekommst so tut, dann ändere an der einen oder anderen Stelle etwas, sieh was dann passiert und so weiter. Nur dadurch wirst du verstehen was du eigentlich tust. Soetwas nennt man Learning-by-doing und nicht Copy-Paste.
noch einen Tipp: du müßtest Akaris Quellcode nur etwas abwandeln, meine darunter befindlichen Hinweis beachten und schon hast du "Summe" stehn
aber wenn du lange genug wartest gibt es bestimmt irgendeinen "netten", "hilfreichen" (Un)Registrierten, der dir den gewünschten Quellcode postet und dir damit das aufwendige lernen erspart
-
Learning-by-doing mache ich schon die ganze zeit, das programm wird noch viel größer, ich habs jetzt soweit geschafft mit folgendem code:
for (int i=1;i<5;i++) { SG1->Cells[0][i]=IntToStr(i); SG1->Rows[5]->Text="Summe"; for (int x=1;x<5;x++) { SG1->Cells[x][0]= IntToStr(x); SG1->Cols[5]->Text="Summe"; } }
das nächste: die zeilenanzahl bis maximal 10 bestimmen mit hilfe von combobox?
mfg cR
-
na geht doch
Einige kleine Änderungen möchte ich vorschlagen : mach die beiden For-Schleifen nicht ineinander, dadurch läuft die 2. For-Schleife unnütz andauernd mit durch.
Außerdem kann die Zuweisung der "Summe" außderhalb der Schleife gemacht werden, da auch diese sonst nur unnützt andauernd gemacht wird.
Falls wirklich immer die Spaltenanzahl der Zeilenanzahl entspricht kannst du das sogar in eine For-Schleife packen.cyberratte schrieb:
das nächste: die zeilenanzahl bis maximal 10 bestimmen mit hilfe von combobox?
das versteh ich nicht. mal grob geraten: ItemIndex