AGB  ·  Datenschutz  ·  Impressum  







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

StrinGrid letzte Zeile sichtbar

Ein Thema von Privateer3000 · begonnen am 11. Aug 2006 · letzter Beitrag vom 11. Aug 2006
Antwort Antwort
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#1

StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 15:34
Hi leutz,

wie bringt man ein StrinGrid dazu,
wenn die Liste schon Scrollbalken anzeigt,
immer die letzte Zeile zu markieren.

Oder noch besser, wie kehrt man ein
Stringgrid um, so dass die letzte Zeile oben
und die erste unten ist?

Grüße
Privateer3000
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Jürgen Thomas

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

Re: StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 16:05
Zitat von Privateer3000:
wie bringt man ein StrinGrid dazu, wenn die Liste schon Scrollbalken anzeigt, immer die letzte Zeile zu markieren.
So:
Grid1.Row := Grid1.RowCount - 1;
Zitat von Privateer3000:
Oder noch besser, wie kehrt man ein Stringgrid um, so dass die letzte Zeile oben und die erste unten ist?
Meines Wissens geht das nur manuell: in zwei (verschachtelten) Schleifen alle Spalten bearbeiten und darin Zeile für Zeile austauschen... Brauchst Du dafür ein Code-Fragment?

Ansonsten viel Erfolg! Jürgen
#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
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 16:44
Dankeschön

Ja schieb mal bitte so ein Teil hoch.
Kann es mir ja mal angucken.

Danke nochmal
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 16:50
einen kleinen schönheitsfehler gibts dabei.
die letzte Zeile wird exakt markiert
wird aber nicht ins sichtfeld geschoben.
Es muss also wieder gescrollt werden.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
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
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 17:46
Danke funktioniert spitze.
visiblerowcount kannte ich ja nun garnicht
vielen Dank
ich teste mal den code schnipsel
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 18:04
Hallo,

hier ein eine weitere Version. Sie basiert auf Jürgens Idee, arbeitet aber ohne Zwischenspeicher:

Delphi-Quellcode:
procedure FlipGrid (aGrid: TStringGrid);
var
  k, iCol : Integer;
begin
  with aGrid do
    for k := 0 to Pred((RowCount - FixedRows) div 2) do
      for iCol := FixedCols to Pred(ColCount) do
        Cols[iCol].Exchange (FixedCols + k, Pred(RowCount) - k);
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 18:29
prima danke!

wie funktioniert bzw. passiert bei diesem beispiel?
Ich finde "excange" nirgends von einem grid abgeleitet.
Wechselt dies Schritt für Schritt oder alles auf einmal.

danke leutz
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: StrinGrid letzte Zeile sichtbar

  Alt 11. Aug 2006, 18:35
Delphi-Referenz durchsuchenTStringGrid.Cols liefert eine Referenz auf ein TStrings-Objekt, dessen Methode Delphi-Referenz durchsuchenTStrings.Exchange vertauscht zwei Elemente der Liste. Der Vorteil dieser Lösung ist, daß auch eventuell mit den Zellen verknüpfte Objekte vertauscht werden.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:13 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