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.