killerpet1986 |
01-03-09 01:34 PM |
<<Problem>> Scrollable list using FauxScrollFrameTemplate
Taken from: http://www.wowwiki.com/Making_a_scro...lFrameTemplate
This example does not work anymore (since 3.0, it worked pre-3.0).
----------------------------------------------------------------------------------------------------------------------------------------
MyModScrollBar.toc
Code:
## Interface: 20400
## Title: MyMod
## Notes: Example of using FauxScrollFrameTemplate
MyModScrollBar.xml
----------------------------------------------------------------------------------------------------------------------------------------
MyModScrollBar.lua
Code:
MyModData = {}
function MyMod_OnLoad()
for i=1,50 do
MyModData = "Test "..math.random(100)
end
MyModScrollBar:Show()
end
function MyModScrollBar_Update()
local line; -- 1 through 5 of our window to scroll
local lineplusoffset; -- an index into our data calculated from the scroll offset
FauxScrollFrame_Update(MyModScrollBar,50,5,16);
for line=1,5 do
lineplusoffset = line + FauxScrollFrame_GetOffset(MyModScrollBar);
if lineplusoffset <= 50 then
getglobal("MyModEntry"..line):SetText(MyModData[lineplusoffset]);
getglobal("MyModEntry"..line):Show();
else
getglobal("MyModEntry"..line):Hide();
end
end
end
----------------------------------------------------------------------------------------------------------------------------------------
MyModScrollBar.xml
Code:
<Ui>
<Script file="MyModScrollBar.lua"/>
<Button name = "MyModEntryTemplate" virtual="true">
<Size>
<AbsDimension x="150" y="16" />
</Size>
<NormalFont inherits="GameFontHighlight" justifyH="LEFT"/>
</Button>
<Frame name="MyMod" parent="UIParent" enableMouse="true" movable="true">
<Size>
<AbsDimension x="196" y="96"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Scripts>
<OnLoad>
MyMod_OnLoad()
</OnLoad>
</Scripts>
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<BackgroundInsets>
<AbsInset left="4" right="4" top="4" bottom="4" />
</BackgroundInsets>
<TileSize>
<AbsValue val="16" />
</TileSize>
<EdgeSize>
<AbsValue val="16" />
</EdgeSize>
</Backdrop>
<Frames>
<ScrollFrame name="MyModScrollBar" inherits="FauxScrollFrameTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="0" y="-8"/>
</Offset>
</Anchor>
<Anchor point="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-30" y="8"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnVerticalScroll>
FauxScrollFrame_OnVerticalScroll(16, MyModScrollBar_Update);
</OnVerticalScroll>
<OnShow>
MyModScrollBar_Update()
</OnShow>
</Scripts>
</ScrollFrame>
<Button name="MyModEntry1" inherits="MyModEntryTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="MyModScrollBar" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="8" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="MyModEntry2" inherits="MyModEntryTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="MyModEntry1" relativePoint="BOTTOMLEFT"/>
</Anchors>
</Button>
<Button name="MyModEntry3" inherits="MyModEntryTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="MyModEntry2" relativePoint="BOTTOMLEFT"/>
</Anchors>
</Button>
<Button name="MyModEntry4" inherits="MyModEntryTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="MyModEntry3" relativePoint="BOTTOMLEFT"/>
</Anchors>
</Button>
<Button name="MyModEntry5" inherits="MyModEntryTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="MyModEntry4" relativePoint="BOTTOMLEFT"/>
</Anchors>
</Button>
</Frames>
</Frame>
</Ui>
----------------------------------------------------------------------------------------------------------------------------------------
After a lot of searching i was able to find that i had to change:
Code:
<OnVerticalScroll>
FauxScrollFrame_OnVerticalScroll(16, MyModScrollBar_Update);
</OnVerticalScroll>
To:
Code:
<OnVerticalScroll>
FauxScrollFrame_OnVerticalScroll(self, offset, 16, MyModScrollBar_Update);
</OnVerticalScroll>
But i still cannot get the window to display the numbers. I think it is a problem with:
Code:
getglobal("MyModEntry"..line):SetText(MyModData[lineplusoffset]);
but i cant find a solution anywhere. Does anyone know how to fix this?
|