And to package the table into a really ugly (but hopefully visual concept wise) no xml (on your part) scroll list for display (use sorting from fusionpit to add sort buttons):
Lua Code:
local classes = { "Rogue", "Paladin", "Mage", "Warlock", "Priest", "DK", "DH", "Hunter", "Shaman", "Druid", "Monk", "Warrior" }
local width, height, numrows = 200, 20, 6
local TableData = {}
for i=1, 30 do
tinsert(TableData, { player=i, class=random(1, #classes), dkp=random(0, 10000) })
end
local function OnClick(self)
print(self:GetText())
end
local function CreateRow(parent, id) -- Create 3 buttons for each row in the list
local f = CreateFrame("Frame", "$parentLine"..id, parent)
f.Buttons = {}
f:SetSize(width, height)
for i=1, 3 do
tinsert(f.Buttons, CreateFrame("Button", "$parentButton"..i, f, "UIPanelButtonTemplate"))
f.Buttons[i]:SetSize(width/3, height)
f.Buttons[i]:SetPoint("LEFT", f.Buttons[i-1] or f, f.Buttons[i-1] and "RIGHT" or "LEFT")
f.Buttons[i]:SetScript("OnClick", OnClick)
end
return f
end
local function MyFrame_Update(self)
local numOptions = #TableData
local index, row
local offset = FauxScrollFrame_GetOffset(self)
for i=1, numrows do
row = self.Rows[i]
index = offset + i
if TableData[index] then
row:Show()
row.index = index
row.Buttons[1]:SetText("Player"..TableData[index].player)
row.Buttons[2]:SetText(classes[TableData[index].class])
row.Buttons[3]:SetText(TableData[index].dkp)
else
row:Hide()
end
end
FauxScrollFrame_Update(self, numOptions, numrows, height)
end
local f = CreateFrame("ScrollFrame", "FizzleScrollFrame", UIParent, "FauxScrollFrameTemplate")
f:SetSize(width, height*numrows)
f:SetPoint("LEFT", 20, 0)
f.Rows = {}
for i=1, numrows do
f.Rows[i] = CreateRow(f, i)
f.Rows[i]:SetPoint("TOPLEFT", f.Rows[i-1] or f, f.Rows[i-1] and "BOTTOMLEFT" or "TOPLEFT")
end
f:SetScript("OnVerticalScroll", function(self, offset)
FauxScrollFrame_OnVerticalScroll(self, offset, height, MyFrame_Update)
end)
MyFrame_Update(f)
You could make each row a single button with 3 FontStrings or ...