Posted by Philburt on Tue, 17 May 2011 10:30:56
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?
Posted by jnwhiteh on Tue, 17 May 2011 11:15:48
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
selfis your frame.