IF _SCREEN.visible = .F. _SCREEN.BorderStyle = 0 SET SYSMENU TO _SCREEN.Width = THIS.Width _SCREEN.Height = THIS.Height _SCREEN.Icon = THIS.Icon _SCREEN.Caption = THIS.Caption _SCREEN.AutoCenter = .T. THIS.MinButton = .F. THIS.maxButton = .F. THIS.Closable = .F. THIS.ControlBox = .F. THIS.Caption = "" THIS.Movable = .F. _SCREEN.Visible = .T. THIS.Top = 1 THIS.Left = 1 THIS.ShowedScreen = .T. ENDIFTHIS puts the settings form inside the _SCREEN object, and sets everything up to make it look like it's a top level form. So then in my startup program, I have code like:
oUser = NEWOBJECT("UserInfo", "Userinfo") llValidSettings = oUser.ValidSettings() IF !llValidSettings DO FORM UserSettings TO llValidSettings ENDIF IF llValidSettings DO FORM Calendar WITH oUser READ EVENTS ENDIFThis way, the settings form can be called from the main menu as well, and although it shows up in the taskbar as a Top-level form, it is actually modal.