local cnt1 = "" local cnt2 = "" local chkVsbl1 = 0 local chkVsbl2 = 0 if toolTmr1 then toolTmr1.Destroy() end toolTmr1 = createTimer(MainForm) toolTmr1.Interval = 100 toolTmr1.Enabled = false local micnclrclk = "" local cntrlName11 = "" local cntrlCount11 = 0 local name11 --############################################################################-- --############################################################################-- local clrsettings = getSettings() local controlTable = { TCELabel = {color = clDefault, fontColor = clBlack}, TCEPanel = {color = clDefault, fontColor = clBlack}, TCEMemo = {color = clDefault, fontColor = clBlack}, TCEEdit = {color = clDefault, fontColor = clBlack}, TCEGroupBox = {color = clDefault, fontColor = clBlack}, TCERadioGroup = {color = clDefault, fontColor = clBlack}, TCEListBox = {color = clDefault, fontColor = clBlack}, TCheckListBox = {color = clDefault, fontColor = clBlack}, TCEComboBox = {color = clDefault, fontColor = clBlack}, TCETreeview = {color = clDefault, fontColor = clBlack}, TCEListView = {color = clDefault, fontColor = clBlack}, TCEPageControl = {color = clDefault, fontColor = clBlack}, TScrollBox = {color = clDefault, fontColor = clBlack} } function loadControlTableFromSettings() for clsname, _ in pairs(controlTable) do if clrsettings.Value[clsname .. "_color"]~=nil then controlTable[clsname].color = clrsettings.Value[clsname .. "_color"] controlTable[clsname].fontColor = clrsettings.Value[clsname .. "_fontColor"] end end end function saveControlTableToSettings(clsname, newColor, newFontColor) clrsettings.Value[clsname .. "_color"] = newColor clrsettings.Value[clsname .. "_fontColor"] = newFontColor loadControlTableFromSettings() end --=======================================================-- --=======================================================-- function ColorCntPanel2() --print(11111) local abs, floor = math.abs, math.floor local function hsv2rgb(h, s, v) local c = s * v local x = c * (1 - abs((h / 60) % 2 - 1)) local m = v - c local cases = { {c, x, 0}, {x, c, 0}, {0, c, x}, {0, x, c}, {x, 0, c}, {c, 0, x} } local rgb = {} for _, colour in ipairs(cases[floor(h / 60) + 1]) do rgb[#rgb + 1] = (colour + m) * 255 end return rgb end local function rgb_to_hex(rgb) local r, g, b = floor(rgb[1]), floor(rgb[2]), floor(rgb[3]) return string.format("0x%02X%02X%02X", r, g, b) end local function palette(v_start, v_end, v_step, h_start, h_step) local h_steps = floor(360 / abs(h_step)) local plt = {} for v = v_start, v_end, v_step do local gray = (v - v_start) / (v_end - v_start) local s = 1 if v > 1 then s = s - (v - 1) v = 1 end local row = {} for h = h_start, h_start + h_step * (h_steps - 1), h_step do row[#row + 1] = hsv2rgb(h % 360, s, v) end -- Grays: row[#row + 1] = hsv2rgb(0, 0, gray) plt[#plt + 1] = row end return plt end local as_in_clrtbl = palette(0.2, 1.8, 0.2, 240, -30) local cltbl2 = {} for i, row in ipairs(as_in_clrtbl) do for j, color in ipairs(row) do local hex_color = rgb_to_hex(color) fmtrgb = string.format("%s", hex_color) cltbl2[#cltbl2 + 1] = fmtrgb --print(fmtrgb) end end --=======================================================-- --=======================================================-- if pltFrm then pltFrm.Destroy() pltFrm = nil end DP1 = getScreenDPI() / 96 pltFrm = createForm() pltFrm.height = 310 * DP1 pltFrm.width = 560 * DP1 pltFrm.PopupMode = 0 pltFrm.caption = "By AylinCE Trainers (2025)" pltFrm.Position = "poDesktopCenter" pltFrm.ShowInTaskBar = "stAlways" pltFrm.BorderStyle = "bsNone" pltFrm.setLayeredAttributes(0x000100, 255, LWA_COLORKEY | LWA_ALPHA) pltFrm.Color = 0x000100 ------------------------- local pltOwnr = {} ----------------------- pltOwnr.pltPnl1 ----- pltOwnr.pltPnl1 = createPanel(pltFrm) pltOwnr.pltPnl1.AutoSize = false pltOwnr.pltPnl1.height = 263 * DP1 pltOwnr.pltPnl1.width = 370 * DP1 pltOwnr.pltPnl1.left = 5 * DP1 pltOwnr.pltPnl1.top = 42 * DP1 pltOwnr.pltPnl1.color = 0x878787 pltOwnr.pltPnl1.alignment = "2" pltOwnr.pltPnl1.BevelWidth = 4 pltOwnr.pltPnl1.Font.Style = "fsBold" pltOwnr.pltPnl1.Font.Size = 0 * DP1 ----------------------- ----------------------- pltOwnr.pltPnl2 ----- pltOwnr.pltPnl2 = createPanel(pltFrm) pltOwnr.pltPnl2.AutoSize = false pltOwnr.pltPnl2.height = 38 * DP1 pltOwnr.pltPnl2.width = 550 * DP1 pltOwnr.pltPnl2.left = 8 * DP1 pltOwnr.pltPnl2.top = 3 * DP1 pltOwnr.pltPnl2.caption = "Form Designer Color Craft V1" pltOwnr.pltPnl2.color = 0x878787 pltOwnr.pltPnl2.cursor = -22 pltOwnr.pltPnl2.Font.Style = "fsBold" pltOwnr.pltPnl2.Font.Size = 14 * DP1 pltOwnr.pltPnl2.OnMouseDown = function() pltFrm.DragNow() end pltOwnr.pltPnl2.BevelWidth = 4 pltOwnr.pltPnl2.Font.Color = 0xFFFFFF ----------------------- ----------------------- pltOwnr.pltBtn1 ----- pltOwnr.pltBtn1 = createPanel(pltOwnr.pltPnl2) pltOwnr.pltBtn1.AutoSize = false pltOwnr.pltBtn1.height = 26 * DP1 pltOwnr.pltBtn1.width = 30 * DP1 pltOwnr.pltBtn1.left = 10 * DP1 pltOwnr.pltBtn1.top = 5 * DP1 pltOwnr.pltBtn1.caption = "--" pltOwnr.pltBtn1.alignment = "2" pltOwnr.pltBtn1.Font.Style = "fsBold" pltOwnr.pltBtn1.Font.Size = 14 * DP1 ----------------------- ----------------------- pltOwnr.pltBtn2 ----- pltOwnr.pltBtn2 = createPanel(pltOwnr.pltPnl2) pltOwnr.pltBtn2.AutoSize = false pltOwnr.pltBtn2.height = 26 * DP1 pltOwnr.pltBtn2.width = 30 * DP1 pltOwnr.pltBtn2.left = 510 * DP1 pltOwnr.pltBtn2.top = 5 * DP1 pltOwnr.pltBtn2.caption = "X" pltOwnr.pltBtn2.alignment = "2" pltOwnr.pltBtn2.Font.Style = "fsBold" pltOwnr.pltBtn2.Font.Size = 14 * DP1 ----------------------- ----------------------- pltOwnr.pltPnl3 ----- pltOwnr.pltPnl3 = createPanel(pltFrm) pltOwnr.pltPnl3.AutoSize = false pltOwnr.pltPnl3.height = 263 * DP1 pltOwnr.pltPnl3.width = 182 * DP1 pltOwnr.pltPnl3.left = 377 * DP1 pltOwnr.pltPnl3.top = 42 * DP1 pltOwnr.pltPnl3.color = 0x878787 pltOwnr.pltPnl3.BevelWidth = 4 ----------------------- ----------------------- pltOwnr.pltCmx1 ----- pltOwnr.pltCmx1 = createComboBox(pltOwnr.pltPnl3) pltOwnr.pltCmx1.AutoSize = true pltOwnr.pltCmx1.height = 23 * DP1 pltOwnr.pltCmx1.width = 160 * DP1 pltOwnr.pltCmx1.left = 9 * DP1 pltOwnr.pltCmx1.top = 8 * DP1 pltOwnr.pltCmx1.text = "" pltOwnr.pltCmx1.Font.Style = "fsBold" pltOwnr.pltCmx1.Font.Size = 10 * DP1 pltOwnr.pltCmx1.ReadOnly = false pltOwnr.pltCmx1.Style = "csDropDownList" ----------------------- ----------------------- pltOwnr.pltPnl4 ----- pltOwnr.pltPnl4 = createPanel(pltOwnr.pltPnl3) pltOwnr.pltPnl4.AutoSize = false pltOwnr.pltPnl4.height = 90 * DP1 pltOwnr.pltPnl4.width = 160 * DP1 pltOwnr.pltPnl4.left = 11 * DP1 pltOwnr.pltPnl4.top = 40 * DP1 pltOwnr.pltPnl4.color = 0x878787 pltOwnr.pltPnl4.BevelWidth = 2 pltOwnr.pltPnl4.Font.Style = "fsBold" pltOwnr.pltPnl4.Font.Size = 0 * DP1 ----------------------- ----------------------- pltOwnr.pltEdt1 ----- pltOwnr.pltEdt1 = createEdit(pltOwnr.pltPnl3) pltOwnr.pltEdt1.AutoSize = false pltOwnr.pltEdt1.height = 23 * DP1 pltOwnr.pltEdt1.width = 160 * DP1 pltOwnr.pltEdt1.left = 11 * DP1 pltOwnr.pltEdt1.top = 168 * DP1 pltOwnr.pltEdt1.alignment = "2" pltOwnr.pltEdt1.color = 0xE0E0E0 pltOwnr.pltEdt1.Font.Style = "fsBold" pltOwnr.pltEdt1.Font.Size = 11 * DP1 ----------------------- ----------------------- pltOwnr.pltEdt2 ----- pltOwnr.pltEdt2 = createEdit(pltOwnr.pltPnl3) pltOwnr.pltEdt2.AutoSize = false pltOwnr.pltEdt2.height = 23 * DP1 pltOwnr.pltEdt2.width = 160 * DP1 pltOwnr.pltEdt2.left = 11 * DP1 pltOwnr.pltEdt2.top = 195 * DP1 pltOwnr.pltEdt2.alignment = "2" pltOwnr.pltEdt2.color = 0xE0E0E0 pltOwnr.pltEdt2.Font.Style = "fsBold" pltOwnr.pltEdt2.Font.Size = 11 * DP1 ----------------------- ----------------------- pltOwnr.pltPnl5 ----- pltOwnr.pltPnl5 = createPanel(pltOwnr.pltPnl4) pltOwnr.pltPnl5.AutoSize = false pltOwnr.pltPnl5.height = 30 * DP1 pltOwnr.pltPnl5.width = 150 * DP1 pltOwnr.pltPnl5.left = 5 * DP1 pltOwnr.pltPnl5.top = 30 * DP1 pltOwnr.pltPnl5.caption = "Font Color" pltOwnr.pltPnl5.color = 0x878787 pltOwnr.pltPnl5.BevelWidth = 2 pltOwnr.pltPnl5.Font.Style = "fsBold" pltOwnr.pltPnl5.Font.Size = 12 * DP1 ----------------------- ----------------------- pltOwnr.pltBtn2 ----- pltOwnr.pltBtn3 = createPanel(pltOwnr.pltPnl3) pltOwnr.pltBtn3.AutoSize = false pltOwnr.pltBtn3.height = 28 * DP1 pltOwnr.pltBtn3.width = 160 * DP1 pltOwnr.pltBtn3.left = 11 * DP1 pltOwnr.pltBtn3.top = 227 * DP1 pltOwnr.pltBtn3.caption = "SAVE" pltOwnr.pltBtn3.alignment = "2" pltOwnr.pltBtn3.Font.Style = "fsBold" pltOwnr.pltBtn3.Font.Size = 12 * DP1 ----------------------- ----------------------- pltOwnr.pltBtn2 ----- pltOwnr.pltBtn4 = createPanel(pltOwnr.pltPnl3) pltOwnr.pltBtn4.AutoSize = false pltOwnr.pltBtn4.height = 26 * DP1 pltOwnr.pltBtn4.width = 160 * DP1 pltOwnr.pltBtn4.left = 11 * DP1 pltOwnr.pltBtn4.top = 136 * DP1 pltOwnr.pltBtn4.caption = "SAVE DEFAULT" pltOwnr.pltBtn4.alignment = "2" pltOwnr.pltBtn4.Font.Style = "fsBold" pltOwnr.pltBtn4.Font.Size = 12 * DP1 ----------------------- --############################################################################-- local pn = {} local lf1 = 10 local tp1 = 10 local ix = 1 local pln = 1 local cntItem1 = "" local cntItem2 = "" local cntNameTable = { "CELabel", "CEPanel", "CEMemo", "CEEdit", "CEGroupBox", "CERadioGroup", "CEListBox", "CheckListBox", "CEComboBox", "CETreeview", "CEListView", "CEPageControl", "ScrollBox" } pltOwnr.pltCmx1.Items.Clear() pltOwnr.pltCmx1.Items.Add("Select Controls") for l, k in pairs(cntNameTable) do pltOwnr.pltCmx1.Items.Add(k) end pltOwnr.pltCmx1.ItemIndex = 0 function pnls1(clr, idx) pn["pne" .. idx] = createPanel(pltOwnr.pltPnl1) pn["pne" .. idx].Height = 25 pn["pne" .. idx].Width = 25 pn["pne" .. idx].Left = lf1 pn["pne" .. idx].Top = tp1 pn["pne" .. idx].BevelWidth = 2 pn["pne" .. idx].Color = clr pn["pne" .. idx].OnClick = function(sender) if cntItem2 == pltOwnr.pltPnl4 then pltOwnr.pltPnl4.Color = sender.Color pltOwnr.pltPnl5.Color = sender.Color elseif cntItem2 == pltOwnr.pltPnl5 then pltOwnr.pltPnl5.Font.Color = sender.Color end pltOwnr.pltEdt1.text = sender.Color pltOwnr.pltEdt2.text = clr end end function clrpnl() for l, k in pairs(cltbl2) do if l == #cltbl2 then pnls1("0xFFFFFF", ix) else pnls1(k, ix) end ix = tonumber(ix) + 1 lf1 = tonumber(lf1) + 27 if ix == 14 then pln = tonumber(pln) + 1 tp1 = tonumber(tp1) + 27 lf1 = 10 ix = 1 end end end clrpnl() --=======================================================-- --=======================================================-- local indexTable = { "TCELabel", "TCEPanel", "TCEMemo", "TCEEdit", "TCEGroupBox", "TCERadioGroup", "TCEListBox", "TCheckListBox", "TCEComboBox", "TCETreeview", "TCEListView", "TCEPageControl", "TScrollBox" } local cntItem3 = "" pltOwnr.pltCmx1.OnChange = function() idx2 = pltOwnr.pltCmx1.ItemIndex if idx2 ~= 0 then lnext = 0 --for l,k in pairs(controlTable) do -- lnext=tonumber(lnext) + 1 -- if lnext==idx2 then clsname = indexTable[idx2] if clsname and controlTable[clsname] then cntItem1 = idx2 cntItem2 = pltOwnr.pltPnl4 cntItem3 = clsname pltOwnr.pltPnl4.BevelColor = clRed pltOwnr.pltPnl5.BevelColor = clDefault pltOwnr.pltPnl4.Color = controlTable[clsname].color pltOwnr.pltPnl5.Font.Color = controlTable[clsname].fontColor end --end --end end end pltOwnr.pltPnl4.OnClick = function() pltOwnr.pltPnl4.BevelColor = clRed pltOwnr.pltPnl5.BevelColor = clDefault cntItem2 = pltOwnr.pltPnl4 end pltOwnr.pltPnl5.OnClick = function() pltOwnr.pltPnl5.BevelColor = clRed pltOwnr.pltPnl4.BevelColor = clDefault cntItem2 = pltOwnr.pltPnl5 end pltOwnr.pltBtn3.OnClick = function() clrsv = pltOwnr.pltPnl4.Color clsfnt = pltOwnr.pltPnl5.Font.Color clsname = cntItem3 --print(11, cntItem3) saveControlTableToSettings(clsname, clrsv, clsfnt) end pltOwnr.pltBtn4.OnClick = function() if cntItem1 == 0 then showMessage("Error! Control not found! Please seleƧt control!") else pltOwnr.pltPnl4.Color = clDefault pltOwnr.pltPnl5.Font.Color = clBlack saveControlTableToSettings(cntItem3, clDefault, clBlack) end end pltOwnr.pltBtn1.OnClick = function() pltFrm.WindowState = "wsMinimized" end pltOwnr.pltBtn2.OnClick = function() pltFrm.Close() end function PnlBtnEffect(name24) name24.BevelColor = clDefault name24.BevelWidth = 2 name24.Cursor = -21 name24.Font.Color = 0xFFFFFF name24.Font.Style = "fsBold" name24.Color = 0x3F3F3F name24.Font.Name = "Georgia" name24.OnMouseMove = function() name24.BevelColor = 0xff0000 end --name24.Font.Color=0x000000 end name24.OnMouseLeave = function() name24.BevelColor = clDefault end --name24.Font.Color=0x000000 end end PnlBtnEffect(pltOwnr.pltBtn1) PnlBtnEffect(pltOwnr.pltBtn2) PnlBtnEffect(pltOwnr.pltBtn3) PnlBtnEffect(pltOwnr.pltBtn4) end --############################################################################-- --############################################################################-- --############################################################################-- --############################################################################-- function crtEdit11() if MainForm.FormDesigner == nil then chkVsbl1 = 0 chkVsbl2 = 0 else chkVsbl1 = 1 cnt1 = MainForm.FormDesigner cnt2 = MainForm.FormDesigner.ToolBar1 if miCntClrs then miCntClrs.Destroy() end midsgmn = MainForm.FormDesigner.Menu.Items miCntClrs = createMenuItem(midsgmn) menuItem_setCaption(miCntClrs, "ControlColors") menuItem_add(midsgmn, miCntClrs) micnclrclk = createMenuItem(miCntClrs) menuItem_setCaption(micnclrclk, "SelectSaveClr") menuItem_add(miCntClrs, micnclrclk) menuItem_onClick(micnclrclk, ColorCntPanel2) loadControlTableFromSettings() end if chkVsbl1 == 1 then if toolEdt1 then toolEdt1.Destroy() end cnt1 = MainForm.FormDesigner cnt2 = MainForm.FormDesigner.ToolBar1 toolEdt1 = createEdit(cnt2) toolEdt1.Width = 100 toolEdt1.Left = cnt2.Width - toolEdt1.Width + 10 frmName11 = string.match(cnt1.Caption, ":(.*)") loadstring([[cntForm11 = (]] .. frmName11 .. [[ or nil)]])() chkVsbl2 = 1 end end --===========================================================-- function selectControl(clsname, name) if controlTable[clsname] then name.Color = controlTable[clsname].color name.Font.Color = controlTable[clsname].fontColor end end function updateClk11() cntrlCount11 = name11.ComponentCount cntrlName11 = name11.Component[name11.ComponentCount - 1] local clsname = cntrlName11.ClassName local name = cntrlName11 local name12 = name toolEdt1.Text = name12.Name selectControl(clsname, name12) end function checkClk11() if chkVsbl2 == 0 then crtEdit11() else cnt1 = MainForm.FormDesigner if cnt1 ~= nil then frmName11 = string.match(cnt1.Caption, ":(.*)") loadstring([[cntForm11 = (]] .. frmName11 .. [[ or nil)]])() CompCount = cntForm11.ComponentCount name11 = cntForm11 if tonumber(CompCount) < tonumber(cntrlCount11) then cntrlCount11 = tonumber(cntrlCount11) - 1 end --print(CompCount) if tonumber(CompCount) > tonumber(cntrlCount11) then -- add list new object updateClk11() end else chkVsbl2 = 0 end end collectgarbage("step") end toolTmr1.OnTimer = checkClk11 toolTmr1.Enabled = true