Autor Beitrag
Cool-Fux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 11.06.07 08:42 
Hallo,
ich möchte in meinem StringGrid eine zusätzilche Zeile erstellen!
Das soll in etwa so funktionieren:
Ich trage in meine StringGrid einige Werte ein.

(A)(B)(C)(D)
(g)(s)(j)(3)
(j)(e)(k)(2)
(o)(f)(h)(4)
.........(9) zusätzliche Zeile (Summe 3+2+4)
(j)(t)(u)(1)

Jetzt möchte ich eine neue Zeile unter den Werten in der StringGrid erstellen und dort die Summe der Werte dort anzeigen lassen.
Ist das möglich? Wenn ja bitte ich um einen Denkanstoß!
Gruß
Cool Fux
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Mo 11.06.07 08:50 
Hallo Cool-Fux

Gehen tut das. Einfach eine Zeile am Ende anfügen und dann den ganzen Rest nach unten verschieben. Ein Insert als fertige Funktion gibt es, soweit ich weiß,
nicht.

Grüße,
Michael
Cool-Fux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 11.06.07 09:06 
Hallo freedy,

danke für die schnelle Antwort.

So ganz habe ich es nicht kapiert aber ich werde mich mal etwas probieren!
Wenn ich etwas Code habe oder es funst werde ich es hier schreiben.

Gruß
Cool Fux
Cool-Fux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 11.06.07 10:25 
Hallo,
soweit funst es bei mir, nur bei der Summenbildung habe ich keine Idee!
Kann mir da jemand helfen?
Kann man diese Zeile auch anders farbig hinterlegen?

Gruß Cool Fux
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Mo 11.06.07 11:13 
user profile iconCool-Fux hat folgendes geschrieben:
nur bei der Summenbildung habe ich keine Idee!

Was für eine Summe willst du denn bilden? Alle Werte einer Spalte?
Dann bräuchtest du eine for Schleife, die deine komplette Tabelle durchläuft und in der du die Werte aufsummierst.
Auf die Werte zugreifen kannst du über Stringgrid1.Cells[row, col]

_________________
Anonymes Eckenkind
Cool-Fux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 11.06.07 17:07 
Hallo Miri,

ich möchte alle Werte einer Spalte!
Die Schleife habe ich fertig!
benötige ich eine Stringliste um die Werte auszulesen?

z.B. sl1 := TStringList.Create;

Gruß
Cool Fux
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Di 12.06.07 08:58 
Zeig doch mal, was du bisher versucht hast.
Wie schon gesagt: du brauchst
user profile iconMiri hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
Stringgrid1.Cells[row, col]					

und eine Variable, in der du die Werte aufsummierst.

_________________
Anonymes Eckenkind
Cool-Fux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Di 12.06.07 10:10 
Hallo,

bei mir sieht es bis jetzt so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Summen1Click(Sender: TObject);
var
  DS : TDatensatz;
  i : Integer;
begin
  editNummer.Text := IntToStr(StringGrid1.RowCount);
  DS.Nummer := StrToInt(editNummer.Text);
  StringGrid1.RowCount := DS.Nummer +1;
  for i := 2 to StringGrid1.RowCount-1 do
    StringGrid1.Cells[9, StringGrid1.RowCount-1]; //Hier komm ich nicht weiter!

    StringGrid1.Cells[7, StringGrid1.RowCount-1] := EditGewicht.Text;
    StringGrid1.Cells[8, StringGrid1.RowCount-1] := EditOFL.Text;
end;


Gruß
Cool Fux

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Mi 13.06.07 11:12 
user profile iconCool-Fux hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
editNummer.Text := IntToStr(StringGrid1.RowCount);
  DS.Nummer := StrToInt(editNummer.Text);
  StringGrid1.RowCount := DS.Nummer +1;

Was genau tust du hier?! :gruebel:
Du wandelst die Anzahl der Zeilen in einen String um und schreibst diesen in ein Editfeld. Dann wandelst du das, was im Editfeld steht wieder in einen Integer um und packst es auf eine Variable und dann packst du diese Variable + 1 wieder in das Rowcount?!
Erklär mir das mal...
Wieso machst du nicht
ausblenden Delphi-Quelltext
1:
2:
3:
editNummer.Text := IntToStr(StringGrid1.RowCount);
DS.Nummer := StringGrid1.RowCount;
StringGrid1.RowCount := StringGrid1.RowCount + 1;

?

user profile iconCool-Fux hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for i := 2 to StringGrid1.RowCount-1 do
    StringGrid1.Cells[9, StringGrid1.RowCount-1]; //Hier komm ich nicht weiter!

    StringGrid1.Cells[7, StringGrid1.RowCount-1] := EditGewicht.Text;
    StringGrid1.Cells[8, StringGrid1.RowCount-1] := EditOFL.Text;
end;



StringGrid1.Cells[] ist nichts, was allein steht. In den nächsten beiden Zeilen hast du dem ja auch was zugewiesen.
Du kannst ihm irgendetwas zuweisen, oder es irgendetwas anderem zuweisen, aber was soll es so alleinstehend in einer zeile bezwecken?!
Und was hat das nun mit deinem Problem zu tun? Wo versuchst du hier irgendetwas aufzusummieren?!

_________________
Anonymes Eckenkind
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Mi 13.06.07 12:34 
Hi
Warum so kompliziert ?
Zuerst mußt du wissen, wieviele Zeilen dein Stringgrid hat. Geh immer davon aus, das ist veränderbar.
Also deklarierst du eine Variable
Zeilen : Integer;
des weiteren benötigst du eine Variable Summe. Da ich nicht weiß, ob Integer oder Real geh ich von Real aus also
Summe: Real; //oder  Single, double oder andere Fließkommatypen
Da in einem Stringgrid wie der name schon sagt "Strings" sind und keine Zahlen, auch wenn's so aussieht, mußt du diese Werte Wandeln.
Nun zur Summenrechnung der Zahlen in einer Spalte "x".
Zuerst wollen wir wissen wieviele Zeilen, also
ausblenden Delphi-Quelltext
1:
Zeilen:=Stringgrid1.RowCount;					

Nun können wir der Schleifenvariable i den Endwert Zeilen-1 geben, da ja die erste Zeile des Stringgrids bei 0 anfängt. Auch wenn in der 1. Zeile keine Zahl steht, weil da z. B. 'Preis' oder 'Wert' steht, bleibt das -1, nur der Schleifenanfangswert ändert sich.
Doch zuerst setzen wir den Wert der Variablen Summe auf 0
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
Summe:=0;
For i:=1 to Zeilen-1 do //oberste Zeile enthält keine Zahl
begin
  Summe:=Summe+StrToFloat(StringGrid1.Cells[x,i]); //Nun können wir Zele für Zeile die Zahl zur Summe addieren
end;

Jetzt soll das ergebnis unten in einer zusätzlichen Zeile
ausblenden Delphi-Quelltext
1:
2:
StringGrid1..RowCount:=StringGrid1..RowCount+1;
 StringGrid1.Cells[x,Zeilen]:=FloatToStr(Summe);// wieder in String wandeln

Nun kannst du dich fragen, wieso ich einfach Zeilen genommen habe. Nun, wenn Zeilen-1 die oberste Zeile war muß nach hinzufügen einer neuen Zeile der Wert passen.
Ich hoffe das hilft
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
Cool-Fux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: So 17.06.07 07:24 
Hallo,

eure Beiträge haben mir sehr geholfen!

VIELEN DANK!!!!!!

Gruß
Cool Fux