Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid senkrecht in Stringgrid waagrecht umwandeln (https://www.delphipraxis.net/147194-stringgrid-senkrecht-stringgrid-waagrecht-umwandeln.html)

jethro_gibbs 3. Feb 2010 13:40


Stringgrid senkrecht in Stringgrid waagrecht umwandeln
 
Hallo zusammen,

ich hab folgendes Problem:

ich hab eine Liste die wie folgt aussieht.

01.01.2010 08:00 3
01.01.2010 10:30 2
01.01.2010 17:00 1
01.01.2010 23:30 2
02.01.2010 12:00 5
02.01.2010 17:30 2
03.01.2010 23:30 5
04.01.2010 05:30 6
04.01.2010 08:00 3
04.01.2010 09:30 6
..
..
..

Die Ausgabe sollte dann wie folgt sein;
Datum 00:00 00:30 01:00 01:30 .....
01.01.2010 ... 3 ..
02.01.2010 ....5 .. 2 ..
03.01.2010
04.01.2010

Unter der jeweiligen Uhrzeit sollte dann die dazu gehörige Zahl stehen.

Ich habe bereits eine 2. Tabelle angelegt mit der jeweiligen zugehörigen Spalte
00:00 1
00:30 2
01:00 3
...

Ich steh wie Ochs vorm Berg und komm nicht weiter.
Ich schaffe es zwar schon die Datums runterzuschreiben kummuliert aber beim Rest beisst es aus.
Ich würde das ganze dann in ein 2tes Stringgrid schreiben.

Bitte helft mir.

Danke & Grüße
JG

MacGuyver 4. Feb 2010 21:11

Re: Stringgrid senkrecht in Stringgrid waagrecht umwandeln
 
Moin,

das ist doch nicht weiter schwer. Durchlaufe als erstes die linke Spalte und suche das größte und kleinste Datum.

Ich hekel das mal so zusammen, ohne es zu testen:

Delphi-Quellcode:
var lRow : Integer;
    lMax,
    lMin,
    lTmp : TDate;

begin
  lMax := 0;
  lMin := 0;
  for lRow := 0 to SG1.RowCount - 1 do
  begin
    if SG1.Cells[0,lRow] > '' then
    begin
      try
        lTmp := StrToDate(SG1.Cells[0,lRow]);
        if lMax < lTmp then
          lMax := lTmp;
        if (lMin = 0) or (lMin > lTmp) then
          lMin := lTmp;
      except
      end;
    end;
  end;
  SG2.RowCount := Trunc(lMax - lMin + 2);
  SG2.Cells[0,0] := 'Datum';
  for lRow := 1 to SG2.RowCount - 1 do
    SG2.Cells[0,lRow] := DateToStr(lMin + lRow - 1);
So, in die erste Schleife baust du noch eine Abfrage ein, wo du minimale und maximale Uhrzeit ermittelst. Damit dann die Zellen [1,0] - [n,0] füllen. Zum Schluss musst du noch einmal SG1 von oben nach unten durchlaufen, mit dem Wert die Position für Datum und Uhrzeit suchen und den Wert dort eintragen.

Krist scho hin. Ich habe noch 150 Objekte und Objektaufrufe zu überarbeiten :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 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