1. Hello again. I Have a perfectly working scroll frame, which is defined in XML as:

     <Scripts>
        <OnVerticalScroll>FauxScrollFrame_OnVerticalScroll(self,offset,23,ScrollFrame1Update)</OnVerticalScroll>
     </Scripts>
    

    and is controlled in LUA with:

     function ScrollFrame1Update()
         if #ScrollList~=0 then
        FauxScrollFrame_Update(ScrollFrame1,#ScrollList,8,23);
        -- ScrollList is a table of entries to show in the scroll frame.
        -- 8 is number of items to show at a time
        -- 23 is pixel height of each line
        TableOffset=FauxScrollFrame_GetOffset(ScrollFrame1)
        DisplayTheItems(#ScrollList,TableOffset)
        ScrollFrame1:Show()
         end
     end
    

    However, there are occasions when I want to keep dispaying the scroll frame, but stop the user from moving the slider with the mouse (either by clicking or using the mouse wheel.)

    I cannot find any way to disable the scroll frame (while still displaying it), and then re-enabling it again at a future point. Any ideas - or have I missed something blindingly obvious?

    I don't use the FauxScrollFrame templates, I take the approach I use in the book and implement my sliders manually. That being said, you can disable the slider that the FauxScrollFrame template uses using the Slider:Disable() method. This method won't change the visual state of the slider (you would need to do that manually if you wanted to) but it would disallow interaction with it.

    You can get the slider by looking up _G[self:GetName() .. "ScrollBar"], if self is your frame.