AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid nach Kriterien sortieren

Ein Thema von Subsidenz · begonnen am 28. Mai 2008 · letzter Beitrag vom 15. Jun 2008
Antwort Antwort
Seite 2 von 2     12   
Subsidenz

Registriert seit: 24. Mai 2008
Ort: Dresden
34 Beiträge
 
#11

Re: StringGrid nach Kriterien sortieren

  Alt 28. Mai 2008, 21:39
Zitat von Hansa:
Warum der Umweg über die Combobox ? Ich würde über Klick auf Titelleiste sortieren lassen. Wie das bei einzeiligen Stringgrids geht hat Quickanddirty angedeutet. Mit einzeilig meine ich pro zusammenhängender Wert. Manchmal braucht man mehr Zeilen, um was gut darzustellen.
Ja das ginge auch aber mein Programmierverständnis geht soweit, dass ich was mit Code-Schnipseln in vereinfachter Form anfangen kann. Ich bräuchte einen Anfang.
Ich würde mich ja gerne mit dir geistig duellieren,
aber wie ich sehe bist du unbewaffnet.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12

Re: StringGrid nach Kriterien sortieren

  Alt 28. Mai 2008, 22:07
Die Spalten des Stringgrids sind TStrings. Das ist nicht weit von der TStringlist weg und die hat die Methode Sort. Genau das ist der Ansatz. Pseudocode :
Delphi-Quellcode:
MyStringList.Items := MyStringGrid.Cols [x];
MyStringList.Sort
..und wieder zurück ins Stringgrid
Jetzt ist wohl das Hauptproblem, dass die Zeilen ja wohl zusammenbleiben müssen und dann nützt die sortierte Spalte alleine auch nichts ? Tja, dann wirds schon nicht mehr trivial. Viele kennen nicht mal die Objects-Eigenschaft. Mir fällt tatsächlich dafür aber nur die Objects-Eigenschaft ein. Du packst die Zellen jeder ZEILE mit AddObject in ein TObject (ähnlich wie record zu behandeln). Dieses muss an der Stringliste (AddObject von TStringList -> F1) dranpappen. Jetzt wird diese sortiert und das zu jedem Stringlist-Item gehörende Objekt (quasi die vorherige Zeile) ist mitsortiert !! Das Objekt muss dann nur wieder in das Stringgrid hinein. Du kapito ? Mann ist das einfach. Ich muss gerade ein Stringgrid sortieren, bei dem das, was zusammengehört auf 1-5 Zeilen verteilt ist (in EINEM Stringgrid !). Da mache ich das ähnlich wegen der variablen Zeilen ist allerdings sogar TObjectList nötig. Bin schon 2 Wochen dran und immer noch nicht fertig damit.
Gruß
Hansa
  Mit Zitat antworten Zitat
Subsidenz

Registriert seit: 24. Mai 2008
Ort: Dresden
34 Beiträge
 
#13

Re: StringGrid nach Kriterien sortieren

  Alt 28. Mai 2008, 22:52
Zitat von Hansa:
Die Spalten des Stringgrids sind TStrings. Das ist nicht weit von der TStringlist weg und die hat die Methode Sort. Genau das ist der Ansatz. Pseudocode :
Delphi-Quellcode:
MyStringList.Items := MyStringGrid.Cols [x];
MyStringList.Sort
..und wieder zurück ins Stringgrid
Jetzt ist wohl das Hauptproblem, dass die Zeilen ja wohl zusammenbleiben müssen und dann nützt die sortierte Spalte alleine auch nichts ? Tja, dann wirds schon nicht mehr trivial. Viele kennen nicht mal die Objects-Eigenschaft. Mir fällt tatsächlich dafür aber nur die Objects-Eigenschaft ein. Du packst die Zellen jeder ZEILE mit AddObject in ein TObject (ähnlich wie record zu behandeln). Dieses muss an der Stringliste (AddObject von TStringList -> F1) dranpappen. Jetzt wird diese sortiert und das zu jedem Stringlist-Item gehörende Objekt (quasi die vorherige Zeile) ist mitsortiert !! Das Objekt muss dann nur wieder in das Stringgrid hinein. Du kapito ? Mann ist das einfach. Ich muss gerade ein Stringgrid sortieren, bei dem das, was zusammengehört auf 1-5 Zeilen verteilt ist (in EINEM Stringgrid !). Da mache ich das ähnlich wegen der variablen Zeilen ist allerdings sogar TObjectList nötig. Bin schon 2 Wochen dran und immer noch nicht fertig damit.
Ja ich glaube das Licht in meinem Hirn wird schon heller . So langsam komm ich glaub ich dahinter. Ich versuchs einfach mal nach deiner Idee. Danke erstmal bis dahin. Wenn ich die Lösung hab post ich die mal.

MFG Subsidenz
Ich würde mich ja gerne mit dir geistig duellieren,
aber wie ich sehe bist du unbewaffnet.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#14

Re: StringGrid nach Kriterien sortieren

  Alt 28. Mai 2008, 22:54
guckste hier: Hier im Forum suchenstringgrid sortieren
  Mit Zitat antworten Zitat
Subsidenz

Registriert seit: 24. Mai 2008
Ort: Dresden
34 Beiträge
 
#15

Re: StringGrid nach Kriterien sortieren

  Alt 15. Jun 2008, 14:50
So nach langem Rumprobieren und Suchen hab ich es endlich geschafft.

Delphi-Quellcode:
procedure SortStringGrid(var GenStrGrid: TStringGrid; ThatCol: Integer);
const
  TheSeparator = '@';
var
  CountItem, I, J, K, ThePosition: integer;
  MyList: TStringList;
  MyString, TempString: string;
begin
  CountItem := GenStrGrid.RowCount;
  MyList := TStringList.Create;
  MyList.Sorted := False;
  try
    begin
      for I := 1 to (CountItem - 1) do
        MyList.Add(GenStrGrid.Rows[I].Strings[ThatCol] + TheSeparator +
        GenStrGrid.Rows[I].Text);
        Mylist.Sort;
      for K := 1 to Mylist.Count do
       begin
        MyString := MyList.Strings[(K - 1)];
        ThePosition := Pos(TheSeparator, MyString);
        TempString := '';
        TempString := Copy(MyString, (ThePosition + 1), Length(MyString));
        MyList.Strings[(K - 1)] := '';
        MyList.Strings[(K - 1)] := TempString;
       end;
      for J := 1 to (CountItem - 1) do
        GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)];
      end;
  finally
    MyList.Free;
  end;
end;

procedure TForm1.exChange(Sender: TObject);
begin
SortStringGrid(grid, ex.ItemIndex)
end;
Die Lösung ist eigentlich ganz einfach, nur muss man erst mal darauf kommen.

MFG Subsidenz
Ich würde mich ja gerne mit dir geistig duellieren,
aber wie ich sehe bist du unbewaffnet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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