>with _screen >If Type(".oToolbar")="O" And !Isnull(.oToolbar) >Else > .AddProperty("otoolbar",.F.) >Endif >.oToolbar=Create("ylistener_form") >.oToolbar.Show >endwith >* >Define Class ylistener_form As Toolbar > Caption = "Toolbar1" > Height = 29 > Left = 0 > Top = 0 > Width = 127 > lx = .F. > ycount = .F. > > Add Object image1 As Image With ; > Picture = Home(1)+"GRAPHICS\ICONS\WRITING\BOOK02.ICO", ; > Stretch = 0, ; > Height = 15, ; > Left = 5, ; > MousePointer = 15, ; > Top = 3, ; > Width = 16, ; > Name = "Image1" > > Add Object separator6 As Separator With ; > Top = 3, ; > Left = 28, ; > Height = 0, ; > Width = 0, ; > Name = "Separator6" > > Add Object command2 As CommandButton With ; > Top = 3, ; > Left = 28, ; > Height = 23, ; > Width = 23, ; > FontBold = .T., ; > FontName = "Webdings", ; > FontSize = 11, ; > Caption = "3", ; > MousePointer = 15, ; > ToolTipText = "Back", ; > ForeColor = Rgb(255,0,0), ; > BackColor = Rgb(128,255,0), ; > Name = "Command2" > > Add Object separator7 As Separator With ; > Top = 3, ; > Left = 58, ; > Height = 0, ; > Width = 0, ; > Name = "Separator7" > > Add Object command3 As CommandButton With ; > Top = 3, ; > Left = 58, ; > Height = 22, ; > Width = 23, ; > FontBold = .T., ; > FontName = "Webdings", ; > FontSize = 11, ; > Caption = "4", ; > MousePointer = 15, ; > ToolTipText = "Forward", ; > ForeColor = Rgb(255,0,0), ; > BackColor = Rgb(128,255,0), ; > Name = "Command3" > > Add Object separator5 As Separator With ; > Top = 3, ; > Left = 88, ; > Height = 0, ; > Width = 0, ; > Name = "Separator5" > > Add Object label1 As Label With ; > AutoSize = .T., ; > FontBold = .T., ; > FontSize = 11, ; > Caption = "X", ; > Height = 20, ; > Left = 88, ; > MousePointer = 15, ; > Top = 3, ; > Width = 12, ; > ForeColor = Rgb(255,0,0), ; > Name = "Label1" > > Add Object timer1 As Timer With ; > Top = 3, ; > Left = 99, ; > Height = 23, ; > Width = 23, ; > Interval = 1000, ; > Name = "Timer1" > > Procedure Init > This.Dock(0) > Declare Integer Sleep In kernel32 Integer > This.lx="" > Endproc > > Procedure image1.Click > Local m.myvar > TEXT to m.myvar noshow >this class works on form designer with design mode. >it detects the form opened and can navigate into its >method (back or forward). >it does anything if there is no form opened. >a timer controls if there is a form opend in designer with >an interval :1 second.it alerts for its name if form changed. >it docked as toolbar on the main vfp window. >simply execute the code to launch it and issue >modi form ? >in command window > ENDTEXT > Messagebox(m.myvar,0+32+4096,"Help") > Endproc > > Procedure command2.Click > Try > If ! Empty(This.Parent.lx) > Keyboard("{PGUP}") > Sleep(20) > Keyboard("{PGUP}") > Endi > Catch > Endtry > Endproc > > > Procedure command3.Click > Try > If ! Empty(This.Parent.lx) > Keyboard("{PGDN}") > Sleep(20) > Keyboard("{PGDN}") > Endi > Catch > Endtry > Endproc > > > Procedure label1.Click > This.Parent.timer1.Enabled=.F. > _Screen.oToolbar=Null > Endproc > > > Procedure timer1.Timer > *ASELOBJ( ArrayName, [ 1 | 2 | 3 ] ) &&*2 Full path and name of .scx or .vcx file > Local gnObjects > gnObjects=Aselobj(myArray,3) > *3 Creates three-element array containing information in context with the currently active code editing window: > * object reference to a container object, the full path and name of the .scx or .vcx file, and > *the full path and name of the #INCLUDE file, if available. > > If gnObjects>=1 > > Y=myArray(2,2) > > If !Lower(This.Parent.lx)==Lower(m.y) > This.Parent.ycount=0 > This.Parent.lx=m.y > Endi > > If This.Parent.ycount=0 > Messagebox(This.Parent.lx,0+32+4096,'Alert- form changed in designer !',2000) > This.Parent.ycount=1 > Endi > Endi > Endproc > > >Enddefine >* >*-- EndDefine: ylistener_form >