Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: Zwei Listviews parallel scrollen

  Alt 7. Okt 2014, 11:37
Wieso nicht? Wenn dieses 'ScrollBy' oder einer der Scroll-Methoden es erlaubt, um ein paar Pixel in vertikaler Richtung im Report-Modus zu scrollen, sollte das doch gehen...

Delphi-Quellcode:
Procedure Synchronize (lvMaster, lvSlave : TListView);
var
  topIndex,
  curIndex, delta : Integer;
begin
  topIndex := lvMaster.Items.IndexOf(lvMaster.TopItem);
  curIndex := lvSlave.Items.IndexOf(lvSlave.TopItem);
  
  delta := Math.Sign(topIndex-curIndex); //

  while lvSlave.Items.IndexOf(lvSlave.TopItem)<>topIndex do
    lvSlave.Scroll(0,delta);
End;
Wenn die Items alle gleich hoch sind, kann man auch gleich direkt dorthin scrollen, so etwa.
Delphi-Quellcode:
// Ich weiß nicht genau, ob 'Scroll' absolut oder relativ scrollt. Relativ wäre so
lvSlave.Scroll (0, lvSlave.ItemHeight*(topIndex - curIndex));
// Absolut so
lvSlave.Scroll (0, lvSlave.ItemHeight*topIndex);
Habs abern nicht probiert, nur gelesen.

Die Methode kann man per Timer aufrufen oder im OnIdle.
  Mit Zitat antworten Zitat