Ich glaube du machst da einen Denkfehler.
Egal welche Position deine Scrollbar einnimmt die Koordinaten aller Childfenster bleiben immer unverändert. Deine Schleife um I zu berechnen wird im Grunde also immer den gleichen Wert liefern so lange du keines der Childs verschoben hast. Die Scrollbar ist davon absolut unbeeindruckt da der Clientbereich des
MDI Forms einfach per Offsets wie ein "Sichtfenster" auf die
MDI Childs arbeitet.
Anders ausgedrückt: bewegst du die Scrollbars so werden NICHT die Koordinaten der
MDI Child Fenster verändert, diese bleiben gleich.
Angenommen du möchtest das Aktive Control der Childs immer vollständig sichtbar haben, dann musst du so vorgehen:
1.) ermittle ClientRect vom MainForm
2.) ermittle ClientRect vom ActiveControl
3.) konvertiere mit MapWindowPoints() das ActiveControl.ClientRect in die relativen Koordinaten zu MainForm.ClientHandle.
4.) berechne nun einen X,Y Offset so daß dieses Rect innerhalb des sichtbaren Bereiches vom MainForm.ClientRect zum liegen kommt
5.) der X,Y Offset ist nun der additive Offset auf MainForm.ClientHandle.WindowOrg um die Position der vertikalen und horizontalen Scrollbar einzustellen
Gruß Hagen