Thanks Bruce. Unfortuantely it doesn't seem to work for me... I end up with some very strange behaviour. Windows zooming in and out at will, independently...
Maybe it's screen setup dependent...?? --- In [email protected], "bruce1r" <bru...@...> wrote: > > Had done it before, so until Tomasz gets to it - > > //-------------------------------------------------------------------------------------------------- > // > // This function checks the current display range, and if it has > changed, it > // synchronizes all other windows (documents) to that range. > // > // To use, #include this file in an indicator in each window > (document) to be > // synchronized. Normally it sync's other windows (documents) when > the caller's > // displayed date range changes, but it has an optional parameter to > force a re-sync. > // > // NOTE - the only downside is that the blank bars on the right side are > // removed by the ZoomToRange method > // > // Bruce R - 12/10/08 > // > //-------------------------------------------------------------------------------------------------- > > function ZoomSync( force ) > { > // All variables are made local to guarantee naming collisions or > side effects > local bv, dr, Curstdt, Curenddt, prevstdt, prevenddt, > Curststr, > Curendstr; > local OAB, OAD, dcount, i, OADoc, OAW, OADocWin, res; > > // Get a count of the number of documents > OAB = CreateObject( "Broker.Application" ); > OAD = OAB.Documents; > dcount = OAD.Count; > > // Process multiple windows (documents) > res = False; > if ( dcount > 1 ) > { > // Get current and last start and end DateTimes's > bv = Status( "barvisible" ); > dt = DateTime( ); > Curstdt = LastValue( Lowest( IIf( bv, dt, LastValue( dt > ) ) ) ); > Curenddt = LastValue( Highest( IIf( bv, dt, 0 ) > ) ); > prevstdt = Nz( StaticVarGet( "_prevstdt" ) ); > prevenddt = Nz( StaticVarGet( "_prevenddt" ) ); > > // Check for a new date/time range > if ( ( Curstdt != prevstdt OR Curenddt != prevenddt ) OR force ) > { > // Set the new last values > StaticVarSet( "_prevstdt", Curstdt ); > StaticVarSet( "_prevenddt", Curenddt ); > > Curststr = DateTimeToStr( Curstdt ); > Curendstr = DateTimeToStr( Curenddt ); > > // Loop through the document collection > for ( i = 0; i < dcount; i++ ) > { > // If it is not the active document - > OADoc = OAD.Item( i ); > > // NOTE - it doesn't hurt to sync the current > window and it makes all > // windows have no blank bars on the > right so they look > the same > //if ( OADoc != OAB.ActiveDocument ) > { > // Get the document window and zoom to > range > //_TRACE( " Zoom to range document - " > + i + " , " + Curststr + > " - " + Curendstr ); > OADW = OADoc.Windows; > // Document window count assumed to be > 1 > OADocWin = OADW.Item( 0 > ); > OADocWin.ZoomToRange( Curststr, > Curendstr ); > } > } > res = True; > } > } > return res; > } > > // Call for synchronization > ZoomSync( False ); > > > > --- In [email protected], "sidhartha70" <sidhartha70@> wrote: > > > > TJ, > > > > Would 'zoom link' functionality be difficult to implement...? > > >
