Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#5

Re: StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 17:05
Zitat von Privateer3000:
einen kleinen schönheitsfehler gibts dabei.
die letzte Zeile wird exakt markiert
wird aber nicht ins sichtfeld geschoben.
Es muss also wieder gescrollt werden.
Eventuell gibt es noch eine andere (schönere) Lösung, aber so geht es auch:
Grid1.TopRow := Grid1.RowCount - Grid1.VisibleRowCount; Bei mir klappt das so; wegen der Indizierung musst Du in manchen Situationen evtl. noch +1 oder -1 anfügen.

Zitat von Privateer3000:
Ja schieb mal bitte so ein Teil hoch.
Kann es mir ja mal angucken.Danke nochmal
[/edit]Bitte sehr:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var x1, x2: integer;
    sListe: TStringList; // als Zwischenspeicher
begin
  sListe := TStringList.Create;
  try
    // alle Spalten nacheinander bearbeiten
    for x2 := 0 to sg.ColCount-1
    do begin
      // Zwischenspeicher leeren
      sListe.Clear;
      // alle Zellen von unten nach oben in den Zwischenspeicher kopieren
      for x1 := sg.RowCount-1 downto 1
      do sListe.Add(sg.Cells[x2,x1]);
      // alle Zellen von oben nach unten aus dem Zwischenspeicher kopieren
      for x1 := 1 to sg.RowCount-1
      do sg.Cells[x2,x1] := sListe[x1-1];
    end;
  finally
    sListe.Free;
  end;
end;
Wenn die erste Spalte nicht oder die erste Zeile ebenfalls sortiert werden soll, sind die Grenzen 0/1 in den Schleifen zu ändern.

Ich hoffe, es hilft. Jürgen

Nachtrag:
Zitat von Privateer3000:
visiblerowcount kannte ich ja nun garnicht :-)
Die 'alte' Delphi-Hilfe ist sehr nützlich: Delphi-Referenz durchsuchenTStringGrid listet alle Eigenschaften auf, auch solche, die nur zur Laufzeit gültig sind und auf die man von selbst nicht unbedingt kommt.

2.Nachtrag: TStringGrid.VisibleRowCount habe ich aus Delphi 5. Ich habe jetzt mal in Delphi 2005 VCL nachgesehen - vergeblich?!
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat