The "real" scroll frame template (not the faux one) is pretty self-explanatory.
Create a scroll frame derived from UIPanelScrollFrameTemplate and a content host:
lua Code:
local f = CreateFrame("Frame") -- Your window
...
f.scroll = CreateFrame("ScrollFrame", "myScrollFrame", f, "UIPanelScrollFrameTemplate")
--[[
Position and style the scrollframe. Here you could do things like...
_G["myScrollFrameScrollBarScrollUpButton"]:SetNormalTexture(....)
See http://wowprogramming.com/utils/xmlbrowser/diff/FrameXML/UIPanelTemplates.xml
]]
f.content = CreateFrame("Frame", nil, f.scroll)
f.content:SetSize(f.scroll:GetWidth(), 0) -- Vert scroll only (*)
f.scroll:SetScrollChild(f.content)
*: If your main window / scroll frame layout is resizable and your scroll frame unidirectional make sure to resize the content host when the scroll frame's size changed:
lua Code:
f.scroll:SetScript("OnSizeChanged", function(_, w, h) f.content:SetWidth(w) end)
After you fill your scroll child with content make sure to set the points
lua Code:
local myHugeFontString = f.content:CreateFontString()
myHugeFontString:SetPoint("TOPLEFT")
myHugeFontString:SetPoint("TOPRIGHT") -- Vert scroll only
myHugeFontString:SetFont.....
myHugeFontString:SetText(alotOfText)
-- Resize content area
f.content:SetPoint("BOTTOM", myHugeFontString)
That's like 10 lines of code. Idk why you would need a library for this. And since your content is so static, you don't need to recycle anything neither. All you really do is
lua Code:
aButtonInTheLeftScrollFrame:SetScript("OnClick", function()
myHeaderTextFontStringInTheRightScrollFrame:SetText(....)
myBodyTextFontStringInTheRightScrollFrame:SetText(....)
end)