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/)
-   -   TStringGrid, MakeVisible-Ersatz (https://www.delphipraxis.net/160504-tstringgrid-makevisible-ersatz.html)

hoika 16. Mai 2011 16:31

TStringGrid, MakeVisible-Ersatz
 
Hallo #,

ich suche sowas wie MakeVisible für TStringGrid.
TopRow möchte ich nicht nehmen.
Ist die gewünschte Zeile aktuell sichtbar im Grid, reicht ein Grid.Row.
Ist sie nicht sichtbar, sollte halt gescrollt werden,
so dass sie als letzte Zeile sichtbar wird.

Hat das jemand schon mal gemacht ?


Danke


Heiko

Lannes 16. Mai 2011 18:14

AW: TStringGrid, MakeVisible-Ersatz
 
Hallo,

so ganz ohne TopRow wird es nicht gehen, aber Du siehst es ja nicht, ist in der Prozedur versteckt :wink:

Delphi-Quellcode:
procedure MakeVisible(SG: TStringGrid; Row: Integer);
var i, x, TargetRow: Integer;
begin
  if Row > Pred(SG.RowCount) then
    TargetRow := Pred(SG.RowCount)
    else
    if Row < 0 then
      TargetRow := 0
      else
        TargetRow := Row;
  x := SG.ClientHeight;
  i := TargetRow;
  while (i > 0) and (x < SG.RowHeights[i]) do
    begin
    dec(x, SG.RowHeights[i]);
    dec(i);
    end;
  if x > SG.RowHeights[0] then
    SG.TopRow := 0
    else
      SG.TopRow := i;
  SG.Row := TargetRow;
end;

hoika 17. Mai 2011 08:49

AW: TStringGrid, MakeVisible-Ersatz
 
Hallo,

wau, der Code sieht schick aus !!!
(und klappt sogar perfekt ;)


Danke


Heiko


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