Hello @Mateocedillo first let me tell you that you're amazing. I try to think how you solve programming task and problem, It makes my brain collapse.
It's very hard to help due to we probably don't share same perspective of the things. But I'll try to help you with a small explanation of the option Opt("GUICoordMode", 2) usage.
#include <GUIConstantsEx.au3>
Example()
Func Example()
Opt("GUICoordMode", 2) ;relative to cell mode
GUICreate("My GUI Set Coord")
;~ GUISetCoord(0, 0) ;this is default position start at 0,0 left top corner for that reason It's commented maybe not needed at this point
;Imagine this as table of cell (we add 3 checkboxes one on the right side of the other) in the first imaginary row
GUICtrlCreateCheckbox("Checkbox #1", 20, 10) ;at position 0,0 we Add checkbox1 - parameter 20 means x position and 10 means y position, both relative to GUISetCoord setted
GUICtrlCreateCheckbox("Checkbox #2", 10, -1) ;at position 0,1 we add CheckBox2 - parameter 10 means space in pixel between last control and new one, parameter -1 means add in same y position like my last control
GUICtrlCreateCheckbox("Checkbox #3", 10, -1) ;at position 0,2 we add CheckBox3 - parameter 10 means space in pixel between last control and new one, parameter -1 means add in same y position like my last control
GUISetCoord(20, 60) ;this defines where my other rwo will start 20 means the x relative position and 60 my y relative postion.
;very important y position to avoid new controls over last added control try to set to a value greater than the sum of the height or the last controls. like we added just one row before, it will be ok height of a checkbox plus a number of pixel for separate let's say checkbox height was 20 and we sum 40 as space between last rwo and new one
;lets add two button one on the right side of the other
GUICtrlCreateButton("OK #1", -1, -1) ;at position 0,0 first parameter -1 means default x position previous defined by GUISetCoord it was 20, second parameter means default y position defined by GUISetCoord it was 60
GUICtrlCreateButton("Cancel #2", 10, -1);at position 0,1 first parameter 10 means 10 space between last button and new one and parameter -1 mean keep y position
GUISetState(@SW_SHOW) ; will display an empty dialog box
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
GUIDelete()
EndFunc ;==>Example
I hope it helps you.
I speak Spanish too so Maybe I could help you by private message or maybe I could add you in WhatsApp. Send me private message.
Saludos