{"id":19611333,"url":"https://github.com/devlephant/sizectrl","last_synced_at":"2025-07-11T10:39:30.914Z","repository":{"id":137532650,"uuid":"189075710","full_name":"devlephant/sizectrl","owner":"devlephant","description":"TSizeCtrl v8.2","archived":false,"fork":false,"pushed_at":"2019-06-08T11:55:27.000Z","size":12556,"stargazers_count":20,"open_issues_count":16,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-27T22:33:20.485Z","etag":null,"topics":["custom-components","custom-controls","delphi","freepascal","ide","lazarus","lcl","pascal","property-editor","rtti","scrollers","sizers","sizing","sizing-grips","vcl","windows"],"latest_commit_sha":null,"homepage":"","language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devlephant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-28T17:44:26.000Z","updated_at":"2024-09-06T08:19:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"af7cb9d4-4c68-40b6-8d1c-228dda98054e","html_url":"https://github.com/devlephant/sizectrl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devlephant/sizectrl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlephant%2Fsizectrl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlephant%2Fsizectrl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlephant%2Fsizectrl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlephant%2Fsizectrl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devlephant","download_url":"https://codeload.github.com/devlephant/sizectrl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlephant%2Fsizectrl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264786945,"owners_count":23663928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom-components","custom-controls","delphi","freepascal","ide","lazarus","lcl","pascal","property-editor","rtti","scrollers","sizers","sizing","sizing-grips","vcl","windows"],"created_at":"2024-11-11T10:38:02.392Z","updated_at":"2025-07-11T10:39:30.908Z","avatar_url":"https://github.com/devlephant.png","language":"Pascal","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Description\nTSizeCtrl is a non-visual V+LCL component, which allows you to resize, select and move TControl decadents\n\nUnlike original realization, current version supports both Delphi and Lazarus, so it's inspired by original version by Angus Johnson, but, now it's not the same as legacy/old version :)\n\n##### Features:\n\u003cul\u003e \u003cli\u003eFully customizable buttons: you can change count (from 4 to 8), colour, size, transparency, shape, and if you want to - you can set the button image\u003c/li\u003e\n\u003cli\u003e5 shape types: Square, Circle, Rhombus, Triangle and RoundRect\u003c/li\u003e\n\u003cli\u003e Customizable selection frame: movePanelCanvas property to access all of the selection frames canvases at once, with transparency (Brush.Style := bsClear) support\u003c/li\u003e\n\u003cli\u003e ShowFrame property to show/hide selection frame\u003c/li\u003e\n\u003cli\u003e MovePanelAlphaBlend property to specify alpha-channel of the sizing/selection frame \u003c/li\u003e\n\u003cli\u003e MovePanelImage property to set the Selection Frame image \u003c/li\u003e\n\u003cli\u003e TCustomForms support: when form is resized with TSizeCtrl, it cannot be closed or maximized/minimized \u003c/li\u003e\n\u003cli\u003eGrid support, with properties: gridSize, showGrid, gridColor, gridColorContrast \u003c/li\u003e\u003c/ul\u003e\n\u003cul\u003e\u003cli\u003e Resizing options:\u003c/li\u003e\u003cul\u003e\n\u003cli\u003e AlignToGrid property - align controls to the grid\n\u003cli\u003e ApplySizes property - activate to change object's size immediately\n\u003cli\u003e MultiTargetResize property - to deny/allow resizing of few targets at once\n\u003cli\u003e Constraints property to specify minimal and maximal sizes of the resizable object\n\u003cli\u003e MoveOnly property to deny/allow resizing of an objects\n\u003cli\u003e Objects tag support, to deny object from selecting\n\u003cli\u003e Customizable buttons: colours ({content-fill, border}) and images for Enabled, Hovered and Disabled states \n\u003cli\u003e ApplySizes property - to apply sizes to the object immediately\n\u003cli\u003e EditDisabled property to allow (Enabled := False)-\u003eDisabled components editing\n\u003cli\u003e Different resize-during button styles: none (buttons are hidden),  buttons (all buttons are visible), line, single button\n\u003cli\u003e Different resize-during button hide options: none (buttons are visible, but static), hide (buttons are hidden), move (buttons will be moved in case of moving, but hidden in case of sizing) \u003c/li\u003e\n\t\u003c/ul\u003e\u003c/ul\u003e\n\u003cul\u003e\u003cli\u003e Additional options:\u003c/li\u003e\u003cul\u003e\n\u003cli\u003e Stretch properties supplied with every Image(TPicture) properties, to specify which images you would like to store in the original size\n\u003cli\u003e Customizable modification keys (selection, moving/sizing, align-ignoring keys)\n\u003cli\u003e OnHover events for TSizeBtns (sizing grips/handles) \u003c/li\u003e\n\t\u003c/ul\u003e\u003c/ul\u003e\n\n##### Limitations\n\u003cul\u003e Lazarus: \u003cul\u003e\n\u003cli\u003e Currently not ssupporting MovePanelImage property\n\u003cli\u003e In some platforms it cannot support Alpha-Transparency\n\u003c/ul\u003e \u003c/ul\u003e\n\u003cul\u003e FireMonkey: \u003cul\u003e\n\u003cli\u003e Not tested yet\n\u003c/ul\u003e \u003c/ul\u003e\n\n##### Errors and bugs:\n\u003cul\u003e\u003cli\u003e Fixed common bugs:\u003c/li\u003e\u003cul\u003e\n\u003cli\u003e Bug with Sizing Grid (ShowGrid) on non-TForm controls\n\u003cli\u003e Selection bug with Form focus (when you trying to change the form, and TSizeCtrl still handles events)\n\u003cli\u003e Selection bug with Forms (when you size form, its Caption Bar with action buttons is still available, which is kinda irritating)\n\u003cli\u003e Moving bugs with DoubleBuffering Enabled\n\u003cli\u003e Bug with btn size, when object Left+Top = Btn Diameter(Size)\n\u003cli\u003e Bug with recursion in DefWindowProc -- FormWindowProc\n\u003cli\u003e Bug with unassigned control, which caused by size-during component selection\n\u003cli\u003e Bug with cursor: sometimes it's won't change, when the moving is started (with TShape, for example)\n\u003cli\u003e Moving object with keys, while editing it by mouse, causes sizing bugs\n\u003cli\u003e Bug with invisible objects: it denies visible, but upper object selection\u003c/li\u003e\n\u003c/ul\u003e\u003c/ul\u003e\n\u003cul\u003e\u003cli\u003e Known modern bugs:\u003c/li\u003e\u003cul\u003e\n\u003cli\u003e 1. Add disabled objects selection support [Lazarus]\n\t\t\u003cbr\u003ePossible solution: hook all WndProces recursive?\u003c/li\u003e\n\u003c/ul\u003e\u003c/ul\u003e\n\n##### Nearly plans:\n\u003cul\u003e\u003cli\u003e New Features:\u003c/li\u003e\u003cul\u003e\n\u003cli\u003e 1. Align with lines (function, ef)\n\u003cli\u003e 2. Detect control polygon to draw shape to fit the form\n\u003cli\u003e 3. Custom tag(s) support \n\u003cli\u003e 4. D/L CL real transparency fast support with DrawFocusRect method and Focus rect type, which can specify how to draw the focus rect\n\u003cli\u003e 5. Property to hide focus rect only when resizing \u003c/li\u003e\n  \u003c/ul\u003e\u003c/ul\u003e\n\u003cul\u003e\u003cli\u003e Refactorings:\u003c/li\u003e\u003cul\u003e\n\u003cli\u003e1. Flipping control, when its sizes is too small\n  (Changing position + resizing)\n\u003cli\u003e2. Regenerate Frame topmost settings(Add FrameOnTop property, e.g make the TMovePanel parent the same as TSizeBtn parent, if needed) [Delphi,LAzarus]\u003c/li\u003e\n\u003cli\u003e3. Limit resizing when control is inserted in aligned or when control contains both aligned and unaligned sub-ctrls (childs)\n  \u003c/ul\u003e\u003c/ul\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlephant%2Fsizectrl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevlephant%2Fsizectrl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlephant%2Fsizectrl/lists"}