Jump to content

guiGridList непонимаю что с этим можно поделать хелп


habel

Recommended Posts

ребята у меня такая проблемма, я сделал список игроков, но внутри списка, Gridлиста обьекты изначально стоят нормально, но если включить мышку и потянуть между столбцами или нажать на кнопочку типо развернуть столбец, начинается каша, и иногда даже копируются при обновлении списки dwUThwWJqAc.jpgGg6WmcE0RLE.jpg

вот код

  
GUIEditor5 = { 
    gridlist = {}, 
    window = {} 
} 
function visibleTab() 
        GUIEditor5.window[1] = guiCreateWindow(0.25, 0.21, 0.52, 0.65, "Список игроков", true) 
        guiWindowSetMovable(GUIEditor5.window[1], false) 
        guiWindowSetSizable(GUIEditor5.window[1], false) 
        guiSetAlpha(GUIEditor5.window[1], 0.70) 
        GUIEditor5.gridlist[1] = guiCreateGridList(0.01, 0.05, 0.97, 0.93, true, GUIEditor5.window[1]) 
        guiGridListAddColumn(GUIEditor5.gridlist[1], "ID", 0.2) 
        guiGridListAddColumn(GUIEditor5.gridlist[1], "Имя", 0.2) 
        guiGridListAddColumn(GUIEditor5.gridlist[1], "Уровень", 0.2) 
        guiGridListAddColumn(GUIEditor5.gridlist[1], "Пинг", 0.2)    
        guiSetAlpha(GUIEditor5.gridlist[1], 0.65) 
        guiSetVisible(GUIEditor5.window[1], false) 
        setTimer(tabTime, 1000, 0) 
end 
addEventHandler("onClientResourceStart", getRootElement(), visibleTab) 
function guiviz() 
showCursor(not isCursorShowing()) 
setPlayerHudComponentVisible("radar", not isPlayerHudComponentVisible("radar")) 
setPlayerHudComponentVisible("weapon", not isPlayerHudComponentVisible("weapon")) 
setPlayerHudComponentVisible("clock", not isPlayerHudComponentVisible("clock")) 
setPlayerHudComponentVisible("health", not isPlayerHudComponentVisible("health")) 
setPlayerHudComponentVisible("money", not isPlayerHudComponentVisible("money")) 
setPlayerHudComponentVisible("armour", not isPlayerHudComponentVisible("armour")) 
setPlayerHudComponentVisible("wanted", not isPlayerHudComponentVisible("wanted")) 
setPlayerHudComponentVisible("ammo", not isPlayerHudComponentVisible("ammo")) 
guiSetVisible(GUIEditor5.window[1], not guiGetVisible(GUIEditor5.window[1])) 
end 
bindKey("tab", "down", guiviz) 
  
function tabTime() 
        for index, srs in pairs(getElementsByType("player")) do 
        if(getElementData(srs,"id")) then 
        guiGridListAddRow(GUIEditor5.gridlist[1]) 
        guiGridListSetItemText(GUIEditor5.gridlist[1], getElementData(srs, "id"), 1, tostring(getElementData(srs, "id")), false, false) 
        guiGridListSetItemText(GUIEditor5.gridlist[1], getElementData(srs, "id"), 2, tostring(getPlayerName(srs)), false, false) 
        guiGridListSetItemText(GUIEditor5.gridlist[1], getElementData(srs, "id"), 3, tostring(getElementData(srs,"lvl")), false, false) 
        guiGridListSetItemText(GUIEditor5.gridlist[1], getElementData(srs, "id"), 4, tostring(getPlayerPing(srs)), false, false) 
        end 
        end 
end 

Link to comment

Дубли появлялись, т.к. не чистился грид, смотреть guiGridListClear. Каша появлялась из-за того, что 2 аргументом у guiGridListSetItemText шел, вероятно, id игрока, но зачем? guiGridListAddRow вернет номер только что созданной строки.

В целом... Реализация так себе, почему бы не вносить игроков в список при подключении, а при отключении удалять? Ну и при изменении имени или уровня обновлять данные.

На будущее... Лучше использовать тег [/lua], а не [/code]...

Исправленный код:

GUIEditor5 = { 
    gridlist = {}, 
    window = {} 
} 
  
function visibleTab() 
    GUIEditor5.window[1] = guiCreateWindow(0.25, 0.21, 0.52, 0.65, "Список игроков", true) 
    guiWindowSetMovable(GUIEditor5.window[1], false) 
    guiWindowSetSizable(GUIEditor5.window[1], false) 
    guiSetAlpha(GUIEditor5.window[1], 0.70) 
    GUIEditor5.gridlist[1] = guiCreateGridList(0.01, 0.05, 0.97, 0.93, true, GUIEditor5.window[1]) 
    guiGridListAddColumn(GUIEditor5.gridlist[1], "ID", 0.2) 
    guiGridListAddColumn(GUIEditor5.gridlist[1], "Имя", 0.2) 
    guiGridListAddColumn(GUIEditor5.gridlist[1], "Уровень", 0.2) 
    guiGridListAddColumn(GUIEditor5.gridlist[1], "Пинг", 0.2)    
    guiSetAlpha(GUIEditor5.gridlist[1], 0.65) 
    guiSetVisible(GUIEditor5.window[1], false) 
    setTimer(tabTime, 1000, 0) 
end 
addEventHandler("onClientResourceStart", getRootElement(), visibleTab) 
  
function guiviz() 
    showCursor(not isCursorShowing()) 
    setPlayerHudComponentVisible("radar", not isPlayerHudComponentVisible("radar")) 
    setPlayerHudComponentVisible("weapon", not isPlayerHudComponentVisible("weapon")) 
    setPlayerHudComponentVisible("clock", not isPlayerHudComponentVisible("clock")) 
    setPlayerHudComponentVisible("health", not isPlayerHudComponentVisible("health")) 
    setPlayerHudComponentVisible("money", not isPlayerHudComponentVisible("money")) 
    setPlayerHudComponentVisible("armour", not isPlayerHudComponentVisible("armour")) 
    setPlayerHudComponentVisible("wanted", not isPlayerHudComponentVisible("wanted")) 
    setPlayerHudComponentVisible("ammo", not isPlayerHudComponentVisible("ammo")) 
    guiSetVisible(GUIEditor5.window[1], not guiGetVisible(GUIEditor5.window[1])) 
end 
bindKey("tab", "down", guiviz) 
  
function tabTime() 
    guiGridListClear(GUIEditor5.gridlist[1]) 
    for index, srs in pairs(getElementsByType("player")) do 
        if(getElementData(srs,"id")) then 
            local row = guiGridListAddRow(GUIEditor5.gridlist[1]) 
            guiGridListSetItemText(GUIEditor5.gridlist[1], row, 1, tostring(getElementData(srs, "id")), false, false) 
            guiGridListSetItemText(GUIEditor5.gridlist[1], row, 2, tostring(getPlayerName(srs)), false, false) 
            guiGridListSetItemText(GUIEditor5.gridlist[1], row, 3, tostring(getElementData(srs,"lvl")), false, false) 
            guiGridListSetItemText(GUIEditor5.gridlist[1], row, 4, tostring(getPlayerPing(srs)), false, false) 
        end 
    end 
end 
  

Оффтоп

Что-то народ на РП потянуло в последнее время, неужели самп-рп всех подтолкнули к переходу? :D

Link to comment
Дубли появлялись, т.к. не чистился грид, смотреть guiGridListClear. Каша появлялась из-за того, что 2 аргументом у guiGridListSetItemText шел, вероятно, id игрока, но зачем? guiGridListAddRow вернет номер только что созданной строки.

В целом... Реализация так себе, почему бы не вносить игроков в список при подключении, а при отключении удалять? Ну и при изменении имени или уровня обновлять данные.

На будущее... Лучше использовать тег [/lua], а не [/code]...

Исправленный код:

GUIEditor5 = { 
    gridlist = {}, 
    window = {} 
} 
  
function visibleTab() 
    GUIEditor5.window[1] = guiCreateWindow(0.25, 0.21, 0.52, 0.65, "Список игроков", true) 
    guiWindowSetMovable(GUIEditor5.window[1], false) 
    guiWindowSetSizable(GUIEditor5.window[1], false) 
    guiSetAlpha(GUIEditor5.window[1], 0.70) 
    GUIEditor5.gridlist[1] = guiCreateGridList(0.01, 0.05, 0.97, 0.93, true, GUIEditor5.window[1]) 
    guiGridListAddColumn(GUIEditor5.gridlist[1], "ID", 0.2) 
    guiGridListAddColumn(GUIEditor5.gridlist[1], "Имя", 0.2) 
    guiGridListAddColumn(GUIEditor5.gridlist[1], "Уровень", 0.2) 
    guiGridListAddColumn(GUIEditor5.gridlist[1], "Пинг", 0.2)    
    guiSetAlpha(GUIEditor5.gridlist[1], 0.65) 
    guiSetVisible(GUIEditor5.window[1], false) 
    setTimer(tabTime, 1000, 0) 
end 
addEventHandler("onClientResourceStart", getRootElement(), visibleTab) 
  
function guiviz() 
    showCursor(not isCursorShowing()) 
    setPlayerHudComponentVisible("radar", not isPlayerHudComponentVisible("radar")) 
    setPlayerHudComponentVisible("weapon", not isPlayerHudComponentVisible("weapon")) 
    setPlayerHudComponentVisible("clock", not isPlayerHudComponentVisible("clock")) 
    setPlayerHudComponentVisible("health", not isPlayerHudComponentVisible("health")) 
    setPlayerHudComponentVisible("money", not isPlayerHudComponentVisible("money")) 
    setPlayerHudComponentVisible("armour", not isPlayerHudComponentVisible("armour")) 
    setPlayerHudComponentVisible("wanted", not isPlayerHudComponentVisible("wanted")) 
    setPlayerHudComponentVisible("ammo", not isPlayerHudComponentVisible("ammo")) 
    guiSetVisible(GUIEditor5.window[1], not guiGetVisible(GUIEditor5.window[1])) 
end 
bindKey("tab", "down", guiviz) 
  
function tabTime() 
    guiGridListClear(GUIEditor5.gridlist[1]) 
    for index, srs in pairs(getElementsByType("player")) do 
        if(getElementData(srs,"id")) then 
            local row = guiGridListAddRow(GUIEditor5.gridlist[1]) 
            guiGridListSetItemText(GUIEditor5.gridlist[1], row, 1, tostring(getElementData(srs, "id")), false, false) 
            guiGridListSetItemText(GUIEditor5.gridlist[1], row, 2, tostring(getPlayerName(srs)), false, false) 
            guiGridListSetItemText(GUIEditor5.gridlist[1], row, 3, tostring(getElementData(srs,"lvl")), false, false) 
            guiGridListSetItemText(GUIEditor5.gridlist[1], row, 4, tostring(getPlayerPing(srs)), false, false) 
        end 
    end 
end 
  

Оффтоп

Что-то народ на РП потянуло в последнее время, неужели самп-рп всех подтолкнули к переходу? :D

да проблема всеравно осталась актуальная( каша то еще изза возможности перемещения столбцов появляется, это как нибудь физически приостановить возможно? чтобы нельзя было изменить размеры столбца и перемещать их между собой

C985U5zObf0.jpg

Link to comment

Попробуй добавить:

guiSetProperty(GUIEditor5.gridlist[1], "ColumnsMovable", "False") 
guiSetProperty(GUIEditor5.gridlist[1], "ColumnsSizeable", "False") 

Попробуй отключить сортировку столбцов с помощью guiGridListSetSortingEnabled.

У него проблема возникает из-за перемещения колонок, если я правильно понял.

Addition: как вариант еще, чистить и потом заново создавать колонки...

Link to comment
Попробуй добавить:
guiSetProperty(GUIEditor5.gridlist[1], "ColumnsMovable", "False") 
guiSetProperty(GUIEditor5.gridlist[1], "ColumnsSizeable", "False") 

Попробуй отключить сортировку столбцов с помощью guiGridListSetSortingEnabled.

У него проблема возникает из-за перемещения колонок, если я правильно понял.

Addition: как вариант еще, чистить и потом заново создавать колонки...

К сожалению Movable не работает так как хотелось бы(( колонки всеравно переставляются(( но Sizeble норм работает, я хз что с этим делать, вот это хз как работает ColumnHeader

dgi_RbFYvRE.jpg

Link to comment
  • 1 year later...

Извиняюсь за некропостинг, однако столкнулся с той же проблемой. 

guiSetProperty(gridlist,"ColumnsMovable","False")

Эта функция абсолютно ничего не изменяет. Колонки так же можно свободно передвигать, ломая этим весь список. Есть ли способы разрешить эту проблему?

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...