Hi everyone,
I wanted to share a component I’ve been working on called ExtTabCtrl.
Please, note that I am not a professional programmer. This component started as a hobby project written for my own personal use, but I've decided to share it here in the hope that someone else in the community might find it useful. It has been developed to the best of my (somewhat limited) ability, and it comes with absolutely no warranty.
Indeed, this is my very first post on the forum, although I have been using it quietly for many years as an invaluable source of knowledge. So, I thank this community for all the help and insights I've found here over the years!
What is ExtTabCtrl?It is a custom tab control component for Lazarus / Free Pascal designed to be a replacement for the standard TPageControl and TTabControl. It uses purely LCL units with no platform-specific {$IFDEF} blocks.
Some of its key features include:
- Five Visual Styles: Supports Flat, Button, Delphi, Chrome, and macOS looks.
- Tab Positions: The component can be positioned Top, Bottom, Left, or Right (with automatic text and image rotation for vertical tabs).
- Close & Add Buttons: Includes per-tab close buttons (visible on active/hovered tabs) and a built-in "Add" button for adding new tabs.
- Drag-to-Reorder: Tabs can be rearranged by dragging, with a visual drop indicator.
- Per-Tab Customization: Each tab can have its own unique background color, accent stripe color, standalone bitmap, visibility state, and font style overrides.
- Navigation: Fully supports mouse-wheel scrolling through overflowing tabs, keyboard arrow navigation, and optional middle-click closing.
Compatibility & TestingBecause it relies entirely on standard LCL code, it is supposed to be multiplatform across Windows, Linux, and macOS. However, because of my current setup, I have only been able to personally test it under Windows and macOS.
Feedback Welcome!Since I haven't been able to test it on Linux (GTK2/GTK3/Qt5) myself, I would be incredibly grateful if any Linux users could drop it into a test project and let me know how it renders and behaves!
Of course, general feedback, constructive criticisms, suggestions, or bug reports from Windows and macOS users are also highly welcome. Please keep in mind that since this is a hobby project, I might not always be able to provide immediate fixes, but I will do my best.
Source Code / Download:https://github.com/ovidiopr/ExtTabCtrlThank you for your time, and I hope someone finds it helpful!
Ovidio