Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringgrid Spalten in Zeilen tauschen (https://www.delphipraxis.net/147516-stringgrid-spalten-zeilen-tauschen.html)

fl63 10. Feb 2010 11:56


Stringgrid Spalten in Zeilen tauschen
 
Hallo DPler!

Ich möchte eine Art Logbuch Datei anlegen, d.h.
ein zweispaltiges Stringgrid mit erster Spalte als Spaltenüberschrift und zweiter Spalte als WerteSpalte soll in ein
zweites Stringgrid dessen Spalten die Spaltenüberschriften des ersten Grids enthalten und die Wertespalte des ersten Grids soll in den Zeilen des zweiten Grids übernommen werden.

also ungefähr so:

Delphi-Quellcode:
procedure TForm1.einfugenClick(Sender: TObject);
var i :integer;
begin
 SG2.Cells[0,1] := DateToStr(DateTimePicker1.Date);
 SG2.Cells[1,1] := 'hauf'; //hier kommt FileName der laufenden Datei hinein
 SG2.Cells[2,1] := IntToStr(SGaddieren(SG1,1)) ; //Summe der WerteSpalte des ersten Grids
 SG2.Cells[3,1] := SG1.Cells[1,0]; // 15 Werte entsprechend der Wertespalte ds ersten Grids
 SG2.Cells[4,1] := SG1.Cells[1,1];
 SG2.Cells[5,1] := SG1.Cells[1,2];
 SG2.Cells[6,1] := SG1.Cells[1,3];
 SG2.Cells[7,1] := SG1.Cells[1,4];
 SG2.Cells[8,1] := SG1.Cells[1,5];
 SG2.Cells[9,1] := SG1.Cells[1,6];
 SG2.Cells[10,1] := SG1.Cells[1,7];
 SG2.Cells[11,1] := SG1.Cells[1,8];
 SG2.Cells[12,1] := SG1.Cells[1,9];
 SG2.Cells[13,1] := SG1.Cells[1,10];
 SG2.Cells[14,1] := SG1.Cells[1,11];
 SG2.Cells[15,1] := SG1.Cells[1,12];
 SG2.Cells[16,1] := SG1.Cells[1,13];
 SG2.Cells[17,1] := SG1.Cells[1,14];
 SG2.Cells[18,1] := SG1.Cells[1,15]; //WerteSpalte Ende

 SG2.SaveToCSV('HaufigLog.txt',#9);
end;
dieser Text ist natürlich nur dummes Zeug. Es fehlt die Zeilenweiterschaltung für das zweite Grid und vieles andere mehr.
Aber vielleicht kennt jemand eine Funktion die Spalten in Zeilen tauscht

hoika 10. Feb 2010 12:14

Re: Stringgrid Spalten in Zeilen tauschen
 
Hallo,

ich habe das jetzt 5 mal gelesen und nicht verstanden ...

Und nein, so ene Funktion gibt es nicht.
Kann man aber leicht selber schreiben.
So wie ich das gesehen habve, reicht eine for-Schleife,
vielleicht auch 2 (geschachtelt).


Heiko

fl63 10. Feb 2010 14:11

Re: Stringgrid Spalten in Zeilen tauschen
 
also versuch ich es zu erklären

Ich habe ein Stringgrid mit zwei Spalten. Nun soll die zweite Spalte, nennen wir sie Wertespalte, zur (Werte)Zeile eines zweiten Stringgrids werden.

Hier habe ich 'nen Vorschlag für die Zeilenweiterschaltung:
Delphi-Quellcode:

i:= SG2.RowCount-1 +1;
:
SG2.Cells[5,i] := SG1.Cells[1,2];
:
Wo mein Fehler steckt weiß ich nicht.


Zitat:

Zitat von hoika
Hallo,

So wie ich das gesehen habve, reicht eine for-Schleife,
vielleicht auch 2 (geschachtelt).


Heiko

???

Ich hoffe doch das mir jemand helfen kann.

hoika 10. Feb 2010 14:17

Re: Stringgrid Spalten in Zeilen tauschen
 
Hallo,

Delphi-Quellcode:
SG2.Cells[5,i] := SG1.Cells[1,2];
rechts ist kein i ...

F5 / F7 / F8 / Add Watch


Heiko

fl63 10. Feb 2010 14:26

Re: Stringgrid Spalten in Zeilen tauschen
 
Zitat:

Zitat von hoika
Hallo,

Delphi-Quellcode:
SG2.Cells[5,i] := SG1.Cells[1,2];
rechts ist kein i ...

F5 / F7 / F8 / Add Watch


Heiko


rechts ist kein i.. Ich versteh nicht... Das i soll doch nur die Zeilennummer des Zielgrids um eine Zeile weiterschalten?
Und das funktioniert nicht!

Ach so ich begreife :wall:

andersrum ist es aber auch nicht möglich.

So habe ich aber keine Idee für die ZeilenWeiterSchaltung.

p80286 10. Feb 2010 15:54

Re: Stringgrid Spalten in Zeilen tauschen
 
Wenn ich das Problem richtig verstanden habe sollte das hier weiter hefen:
Delphi-Quellcode:
var
  x,y : integer;
begin
  { dient nur zum füllen }
  y:=0;
  for x:=0 to 5 do
    stringgrid1.Cells[y,x]:=inttohex(x,2);
  y:=1;
  for x:=0 to 5 do
    stringgrid1.Cells[y,x]:=char(x+32);
  stringgrid1.rowcount:=6; {x+1}
  stringgrid1.ColCount:=2; {y+1}
{--------------------------------------}

  for x:=0 to stringgrid1.RowCount-1 do
    for y:=0 to stringgrid1.ColCount-1 do
      stringgrid2.Cells[x,y]:=stringgrid1.Cells[y,x];

end;
Gruß
K-H

fl63 11. Feb 2010 08:42

Re: Stringgrid Spalten in Zeilen tauschen
 
Manchmal ist man wirklich :wall: :wall: :wall:

Anbei meine Lösung verwendet wurde ein Jedi Stringgrid

Delphi-Quellcode:
procedure TForm1.einfuegenClick(Sender: TObject);
var i,j,Zeile,Spalte :integer;
begin
 begin
   Spalte := 0;
 For j := 0 to SG1.RowCount-1 do
   begin
   SG2.Cells[Spalte,1] := SG1.Cells[1,j];
   Spalte := Spalte+1;
   end;
 end;
 SG2.InsertRow(1);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz