I'm just learning Pascal lately, I haven't made a complete app or project with Pascal yet, but making an app with a GUI is a bit more exciting than my command line attempts.
I'm wondering if the community has any project ideas or basic fpGUI project tutorials to give me a bit of a kickstart. I have a hard time getting started with projects. Thank you for any direction you can give! On Tue, Feb 10, 2026 at 3:15 AM mailinglists--- via fpc-pascal < [email protected]> wrote: > Hi everyone, > > I'm super happy to announce the v2.0.0 release of fpGUI Toolkit. > > https://github.com/graemeg/fpGUI > > It only took 10 years since the last "official release". Oops. :-D > > As you can imagine, a full changelog would be massive, so here > are some highlights of the larger work. > > == AggPas (Anty-Grain Geomery) canvas == > > A 100% implemented in Object Pascal, 2D graphics canvas with > advanced anti-aliasing and transparency now included. You can > use the native platform graphic rendering, or opt for AggCanvas, > which gives consistent and high quality rendering on all platforms > > > == Alien Windows branch was merged in == > > Before, every widget had it's own platform window handle. Now, the > top-level window is the only window that has a native OS window > handle, and all widgets on that form has "virtual handles". This > means much less resources needed by the OS, more consistent > drawing, clipping and event handling. It also allows all widgets to > fully > support transparency. > > > == Layout Manager System == > > fpGUI now has a pluggable layout manager architecture inspired by > Java Swing's LayoutManager interface. Instead of manually > calculating widget positions, you can assign a layout manager to > any container and let it handle positioning, sizing, and resize > behaviour automatically. > > The layout manager system coexists with the existing > Align/Anchors mechanism. It is entirely optional -- existing code > continues to work without changes. > > Three layout managers are included: > > * FlowLayout - arranges widgets in a horizontal row with > automatic wrapping > * BorderLayout - five-region docking (North/South/East/West > and Center) > * MigLayout - a full port of Java's MigLayout v11.4.2 (see > below) > > A quick start guide is available at: > docs/layout_managers_quick_start.adoc > > > == MigLayout v11.4.2 Port == > > The headline feature is a comprehensive port of MigLayout v11.4.2 > from Java to Object Pascal. MigLayout is one of the most powerful > and flexible layout managers available in the Java ecosystem, and > fpGUI now has a native implementation. > > Supported features: > > * Grid-based layout with automatic wrapping > * Column and row spanning (SpanX/SpanY) > * Growth priorities (GrowX/GrowY) for distributing extra space > * Cell alignment (left/center/right/top/bottom/fill) > * Docking (North/South/East/West) outside the normal grid > * Component gaps with physical unit support (px, mm, cm, inch, > pt) > * Platform-aware default gaps and sizing > * Fluent constraint API with automatic reference counting > * Constraint string parser for concise constraint definitions > * Debug visualisation overlay for layout inspection > * Multi-DPI / HiDPI support via logic units > * Platform-specific button ordering (OK/Cancel vs Cancel/OK) > > The port includes 396 unit tests, all passing cleanly. > > A comprehensive demo application is available at > examples/gui/lm-mig/ with eight feature panels demonstrating > basic grids, alignment, spanning, growth, complex layouts, > constraint parsing, button ordering, and docking. > > > == FPReport (FPC's reporting system) integrated into fpGUI == > > What to generate reports, display them in your application, export > them to PDF of PNG. Now it's possible. > > > == Widget Sizing API == > > A new sizing model separates a widget's intended size from its > actual rendered size. > > Widgets now have: > > * Width/Height - the developer's preferred (intended) size > * ActualWidth/ActualHeight - the actual rendered size after > layout > * PreferredSize - explicit preferred size that layout managers > read > * MinWidth/MinHeight - minimum size constraints > > Some widgets (TfpgLabel, TfpgButton) now calculate their > preferred size automatically based on content and font, so > explicit sizing is often unnecessary. > > SetPosition() has been deprecated in favour of setting individual > properties (Left, Top, Width, Height). The uidesigner has been > updated to generate the new property-based code. > > > == PasBuild Build System == > > The project has adopted PasBuild as its build tool. The > repository structure has been reorganised: > > * Framework source: framework/src/main/pascal/corelib/ > * Test source: framework/src/test/pascal/ > * Build output: framework/target/ > > UIDesigner is now managed by the new build tool as well, and will > by default compile after the framework is compiled. You can > compile them independently if you want. > > See PasBuild documentation for more details: > https://github.com/graemeg/PasBuild > > Build commands: > > pasbuild compile -p unix,agg (build framework) > pasbuild test -p unix,agg (run unit tests) > > All example extrafpc.cfg files have been updated for the new > directory structure. > > > == macOS Cocoa Backend == > > An initial macOS Cocoa backend has been implemented > (experimental). This adds native macOS support alongside the > existing X11 and GDI backends. > > > == HiDPI and Rendering Improvements == > > * Fixed DPI scaling for widgets designed at 96dpi but displayed > at higher densities > * Focus rectangle line width now scales for HiDPI displays > * Font height calculation improved (ascent + descent) to > prevent text clipping > * AggCanvas text baseline positioning fixed for descender > characters > * Canvas dimension guards added across X11/GDI/Cocoa backends > to prevent range errors during extreme resize operations > * AggPas 32-bit and 64-bit compatibility fixes > > > == DocView Application == > > Lots of DocView (help viewer) improvements, and several UI > windows/dialogs have been migrated to MigLayout: > > * Contents tab > * Index tab > * Search tab > * Notes & History tabs > > The File Open/Save and Directory Select dialogs have also been > converted to use MigLayout management. > > I'll be migrating more applications, tools and example to MigLayout > for better HiDPI support. > > > == Other Notable Changes == > > * Deprecated function calls replaced with method equivalents > across the codebase > * Command line parameter handling migrated to ICmdLineParams > interface > * TStringHashList replaced with FPC's TFPDataHashTable for PO > file handling > * TagPointer deprecated (FPC's TComponent.Tag now supports > 64-bit) > * Font property moved to base widget class > * Visible property moved to WidgetBase class > * StyleManager assert logic fixes > * Bug #83 (broken localise) fixed > * Tab sheet resize flicker eliminated > * TreeView scrollbar flicker fixed > * Multiple memory leak fixes in MigLayout constraint handling > * All compiler warnings from fpGUI code has been resolved > * All range-check errors have been fixed > > > == Breaking Changes == > > * SetPosition() is deprecated - use Left/Top/Width/Height > properties instead > * Directory structure changed - extrafpc.cfg paths updated > * TagPointer is deprecated - use Tag (now 64-bit capable) > instead > * Deprecated function calls removed (use method equivalents) > > > == Documentation == > > * docs/layout_managers_quick_start.adoc > - 10-minute introduction to layout managers > * docs/miglayout_v11_port_plan.adoc > - detailed MigLayout port plan > * docs/layout_manager_implementation_plan.adoc > - architecture design document > * docs/toolkit_sizing_comparison.adoc > - widget sizing API design guide > * docs/api_design_intent_pathway.adoc > - API design intent documentation > > Example demos for all three layout managers are in: > * examples/gui/lm-flow/ > * examples/gui/lm-border/ > * examples/gui/lm-mig/ > > > And there are lots more, but too much to mention here. :) > > Feedback, bug reports, and questions are welcome as always. > I mostly monitor the GitHub bugtracker and the fpGUI support > newsgroup - see website for details. > > > Lastly, thank you to the Free Pascal Compiler developers for making > such an awesome compiler. Without that, fpGUI Toolkit would not have > been possible. 🫶 > > > Regards, > - Graeme - > > -- > fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal > http://fpgui.sourceforge.net/ > > _______________________________________________ > fpc-pascal maillist - [email protected] > https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal >
_______________________________________________ fpc-pascal maillist - [email protected] https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
