NONAME_1224

Tab beszúrása guiLabel-be

Recommended Posts

Van egy ilyen kód:

guiCreateLabel(1, 1, 100, 100, "elso\tmasodik\nharmadik\tnegyedik", false) --én úgy tudom hogy a \t a tab.

Ez nem működik, nem ad ki semmit. hogyan lehetne megcsinálni?

Ha így csinálom:

elso = "elso"
masodik = "masodik"
harmadik = "harmadik"
negyedik = "negyedik"
text = elso..string.rep(" ", 10-utfLen(elso))..masodik
text = text.."\n"..harmadik..string.rep(" ", 10-utfLen(harmadik))..negyedik

Akkor azért nem jó, mert a szóköz nem egyenlő hosszú karakter az "e"-vel vagy "k"-val vagy igazából bármelyik betűvel!

 

Előre is köszi a segítséget!

Share this post


Link to post
local window = guiCreateWindow(30, 30, 500, 500, "Teszt", false)
local tab = guiCreateTabPanel(0, 20, 500, 500, false, window)
guiCreateTab( "Teszt1", tab) 
guiCreateTab( "Teszt2", tab) 
guiCreateTab( "Teszt3", tab) 
guiCreateTab( "Teszt4", tab) 
guiCreateTab( "Teszt5", tab) 
guiCreateTab( "Teszt6", tab) 

Szerintem ez kell neked, de ha tévedek nyugodtan írj

Share this post


Link to post

Ömmm... nem ez kell, hanem az, mintha csak simán mintha tabot nyomsz a billentyűzeten egy szövegszerkesztőben olyan kéne nekem.

Share this post


Link to post

https://forum.mtasa.com/topic/75680-tut-Lua-strings/

Elviekben a \v meg a \t-nek kéne lennie erre a megoldásnak gyakorlatban meg nem igazán működnek sem guiban sem pedig dxDrawra :D 

local spaces = 10
tab = function(text)
    local str = ""
    local start = 0
    
    if text:find("\t") then
        while true do
            if text:find("\t", start) then
                local a = text:find("\t", start)
                str = str .. text:sub(start, a) .. (" "):rep(spaces)
                start = a + 1
            else
                str = str .. text:sub(start, #text)
                break
            end
        end
    else
        return text
    end
        
    return str
end

local sx, sy = guiGetScreenSize()
addEventHandler("onClientRender", root,
    function()
        local text = tab("asd\tasd\ta")
        dxDrawText(text, 0, 0, sx, sy, tocolor(255,255,255,255), 1, "pricedown", "center", "center")
    end
)

--Ennek elviekben helyetesítenie kéne a \t-t megtudod adni mennyi space-t rakjon 1-1 string közé jah és nem ajánlott renderben használni :D 

 

Ha ez sem az amit keresel akkor írj újra xd

Share this post


Link to post

Igen ez kell, viszont az alap posztban létrehoztam egy ugyan ilyet, de mindegy. Akkor gondolom nem lehet.

Share this post


Link to post

Próbáld meg a funcot amit küldtem annak elviekben nem kéne ilyen gondja lennie 😀

Edited by JokerPublic
Elírtam

Share this post


Link to post

De azzal az a baj, hogy egy szóköz nem egyenlő hosszúságú egy mondjuk "O" betűvel, így ha több soros kiírást akarok így akkor elcsúszik az első sor a másodikhoz. Amit te leírtál ugyan az, amit én csináltam, csak hosszabb...

Share this post


Link to post

Ne legyél már makacs próbáld meg azt a funcot amit küldtem és hiába hiszed azt, hogy ugyanaz csak hosszabb csak a céljában hasonlít a tiédhez.

Share this post


Link to post

Ömm... Igen. Ugyan az a probléma, ha több sor van pl.:2 akkor elcsúszik az első a másodikhoz képest, mivel ha a két sorban nem ugyan az van írva akkor más hosszúságú lesz. Mert egy szóköz hossza inkább egy "i" betűre hasonlít, mint egy "O"-ra.

Share this post


Link to post

Most nem tudok képet küldeni, de ha \n-t használsz eltöröd a sort és minkét sorban használsz legalább két tabot akkor magad is meglátod.

Tehát a kód:

local text = tab("asd\tqwe\nppop\tkasléd")

Ami a te kódodban a 27. sor.

Share this post


Link to post

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.