• Derma DListView help.
    5 replies, posted
Hello FP I'm trying to make a list, and when i click a player on the list, it'll show their stats. The issue I'm getting is if I click on another player, or myself again, it'll just keep re-drawing the text over each other. Is there any solution to prevent this? [LUA] function scBounties.wantedList() local Frame = vgui.Create( "DFrame" ) Frame:SetPos( ScrW()/3, 50 ) Frame:SetSize( 400, 350 ) Frame:SetTitle( "Altis Bounties" ) Frame:SetVisible( true ) Frame:SetDraggable( false ) Frame:ShowCloseButton( true ) Frame:MakePopup() //the bar background Frame.list = vgui.Create("DListView",Frame) Frame.list:Dock(FILL) Frame.list:SetWide(50) Frame.list:AddColumn("Name") Frame.list:SetMultiSelect(false) Frame.list:DockMargin(10,10,Frame:GetWide()/2,10) for k, v in pairs ( player.GetAll() ) do local newline = Frame.list:AddLine(v:Nick(),team.GetName( v:Team() )) newline.v = v Frame.list.OnRowSelected = function( rowindex, row ) local lineElement = Frame.list:GetLine(Frame.list:GetSelectedLine()) local selectedPlayer = lineElement.v print("Player Selected : " .. tostring(selectedPlayer) .. tostring(row)) scBounties.showCrimes(Frame, selectedPlayer, row) end end end function scBounties.showCrimes(Frame, pl, row) local oldD = nil local newD = row if newD == oldD then oldD = row return end Frame.Info = vgui.Create("DLabel", Frame) Frame.Info:SetPos(0,50) Frame.Info:AlignLeft(200) Frame.Info:SetText("Avalible Bounties: " .. tostring(pl)) Frame.Info:SetTextColor(color_black) end [/LUA] Help will be appreciated a lot, thanks.
Skimming through the code I don't see any Remove() functions so Id kinda fidget with that. But I feel like this might get some dumb rates. XD
[CODE]if !Frame.Info:IsHovered() then Frame.Info:Remove() end[/CODE] Add something like that, you can use what you want, but that is just an example. You need a :Remove() function to get rid of the existing DLabel.
Hm, doesn't seem to work with DListView.
A better idea would be to just create the DLabel once, setting its text as blank/hiding it so it isn't visible till you use it [lua]Frame.Info:SetText( '' ) -- or Frame.Info:Hide()[/lua] Then in Frame.list.OnRowSelected [lua]Frame.Info:SetText( '...' ) Frame.Info:Show() -- if hidden[/lua]
[QUOTE=Internet1001;52526118]A better idea would be to just create the DLabel once, setting its text as blank/hiding it so it isn't visible till you use it [lua]Frame.Info:SetText( '' ) -- or Frame.Info:Hide()[/lua] Then in Frame.list.OnRowSelected [lua]Frame.Info:SetText( '...' ) Frame.Info:Show() -- if hidden[/lua][/QUOTE] I see, I'll give it a try, I've been experimenting with a few things. Just seeing wich fits best.
Sorry, you need to Log In to post a reply to this thread.