Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Cheat Engine Forum Index
PostGo back to topic
AylinCE
Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017
Posts: 1478

PostPosted: Tue Mar 18, 2025 2:49 pm    Post subject: CE Address List: Horizontal Scroll Bar





This article explains how to add a horizontal scroll bar under the CE address list and increase its functionality.

Thanks to the code written, the values ​​written in the "Value" field in the address list,
which are not visible by exceeding the boundaries of the form,
can be easily accessed with the scroll bar.

This method significantly improves the user experience by making it easier to monitor and analyze the values.

Note: @DarkByte's opinion on this issue is that it would be more efficient for CE to expose this bar and that it is not currently exposed.

So the situation: It is a bit of a Supply-Demand issue.
It is a signal that it can be evaluated according to the demand status and added to a suitable version.

(If you want it, state it in the comments and contribute to CE's functionality. Wink )

I only package long or large codes (.lua).

Copy and paste the code below into a .lua file, save it.
(Create a new Text document, paste the code into it, select the save as menu, give it a name and add .lua at the end, change the value below from .txt to "All files" and click OK and save.)

Copy the file and put it in the "autorun" folder in the CE folder.

Open CE and start using it.

Code:
mfm = MainForm
alst1 = getAddressList()
mfp1 = mfm.Panel1

DP1 = getScreenDPI() / 96
-- print(alst1.Align) -- alClient

alst1.AutoSize = false
alst1.Align = "alNone"
alst1.Height = mfp1.Height - 20 * DP1
alst1.Width = mfp1.Width
alst1.Left = 0 * DP1
alst1.Top = 5 * DP1

----------------------- scbt6 -----------------------
if scbt6 then
    scbt6.Destroy()
    scbt6 = nil
end

scbt6 = createPanel(mfm.Panel1)
scbt6.AutoSize = false
scbt6.Height = 15 * DP1
scbt6.Width = 40 * DP1
scbt6.Left = 5 * DP1
scbt6.Top = mfp1.Height - 15
scbt6.Caption = "<< - >>"
scbt6.Alignment = "2"
scbt6.Font.Style = "fsBold"
scbt6.Font.Size = 11 * DP1
scbt6.Color = mfp1.Color
scbt6.Font.Color = mfp1.Font.Color


function hdrSectLen()
local hdrsect1 = alst1.Header.Sections[0].width +
                 alst1.Header.Sections[1].width +
                 alst1.Header.Sections[2].width +
                 alst1.Header.Sections[3].width

local hdrsect2 = alst1.Header.Sections[4]
local panelWidth = alst1.width

      if (hdrsect1 + hdrsect2.width) ~= panelWidth then
         hdrsect2.width = panelWidth - hdrsect1
      end
--print("New Value width:", hdrsect2.width)
end
-----------------------------------------------------
local movX = alst1.Width - 5
local scbtlftx = 0

mfp1.OnResize = function()
    alst1.Height = mfp1.Height - 20 * DP1
    alst1.Width = mfp1.Width
    alst1.Left = 0 * DP1
    alst1.Top = 5 * DP1
    scbt6.Top = mfp1.Height - 15
    movX = alst1.Width - 5
    if scbt6.Left > movX - scbt6.Width then
        scbt6.Left = movX - scbt6.Width
    elseif scbt6.Left < 0 then
        scbt6.Left = 0
    end

    if scbt6.Left < mfp1.Width and scbt6.Left >= 0 then
        -- Keep horizontal scroll bar position fixed
    end
    hdrSectLen()
end

-----------------------------------------------------
-- Address List Scroll
local moving = false
local start = {
    relx = 0,
    rely = 0,
    end2 = 0
}

scbt6.OnMouseDown = function(sender, button, x, y)
    moving = true
    start.x, start.y = sender.clientToScreen(x, y)
    start.relx = x
    start.rely = y
end

scbt6.OnMouseMove = function(sender, x, y)
    if moving then
        scbt6.Top = mfp1.Height - 15
        start.end2 = mfp1.Width - 50
        local cx, cy = sender.clientToScreen(x, y)
        local px, py = sender.parent.ScreenToClient(cx, cy)
        hdrSectLen()

        local newx, newy

        newy = py - start.rely
        newx = px - start.relx
        x10 = sender.Left * 2
        alst1.Left = 10 - x10 --+ 5
        alst1.Width = movX + x10 - 5
        scbtlftx = mfp1.Width

        if newx < 4 then
            newx = 5
        end
        if newx > start.end2 then
            newx = start.end2
        end
        -- print(newx)
        sender.Left = newx
    end
end

scbt6.OnMouseUp = function(sender)
    moving = false
end


We've reached the end of another topic.
(I hope I don't get a warning from @DarkByte for posting too many articles..
Sad )
Until we meet again in another topic, enjoy it.

Note: If my ideas or solutions were useful to you, please click the "Thumbs Up" icon under my profile picture (It's a free action) and don't forget to give me credit. Thanks.
_________________
Hi Hitler Different Trainer forms for you!
https://forum.cheatengine.org/viewtopic.php?t=619279
Enthusiastic people: Always one step ahead
Do not underestimate me Master: You were a beginner in the past
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Post reviews:   Approve 1
Author Review
YoucefHam
Review: Approve
Post reference:
ReviewPosted: Fri Mar 28, 2025 6:10 pm


Back to top
View user's profile Send private message Send e-mail
Display:  
Cheat Engine Forum Index


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites