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:
TStringGrid 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?!