I recently posted an article on slxdeveloper.com where I outlined the code for a class for SalesLogix to set an entire form as ReadOnly at runtime (See Generically Setting a Form as Read-Only). I put that code to some cool use this week when I needed to set an entire MainView as ReadOnly based on certain conditions.
The code on the slxdeveloper.com article is wrapped up as a class that you can simply pass a form reference to and then specify that you want it read only. With a MainView, you can get a reference to all forms that make up the MainView and pass each to the class.
Dim frm Dim i With Application.MainViews.ActiveView Set frm = New FormWrapper frm.Form = .DetailsView frm.ReadOnly = True If Not .MiddleView Is Nothing Then frm.Form = .MiddleView frm.ReadOnly = True End If For i = 0 To .TabsViewsCount - 1 If Not .TabsViews(i) Is Nothing Then frm.Form = .TabsViews(i) frm.ReadOnly = True End If Next End With
Pretty slick. You can also set all forms with a common BaseTable property to ReadOnly by using the Forms collection:
Dim frm Dim i Set frm = New FormWrapper For i = 0 to Application.Forms.Count - 1 If Application.Forms(i).BaseTable = "MYBASETABLE" Then frm.Form = Application.Forms(i) frm.ReadOnly = True End If Next
You’ll of course need to include the script with the FormWrapper class I outlined in the slxdeveloper.com article.