fpGUI Interface
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
Introduction
fpGUI is a widgetset completely written in Object Pascal. It links directly with the underlying windowing system, and thus avoids the need for many external libraries. More information on its website: http://fpgui.sourceforge.net
This page covers the fpGUI widgetset - a Lazarus LCL widget wrapping the fpGUI code. It is different from pure fpGUI code.
Other Interfaces
- Lazarus known issues (things that will never be fixed) - A list of interface compatibility issues
- Win32/64 Interface - The Windows API (formerly Win32 API) interface for Windows 95/98/Me/2000/XP/Vista/10, but not CE
- Windows CE Interface - For Pocket PC and Smartphones
- Carbon Interface - The Carbon 32 bit interface for macOS (deprecated; removed from macOS 10.15)
- Cocoa Interface - The Cocoa 64 bit interface for macOS
- Qt Interface - The Qt4 interface for Unixes, macOS, Windows, and Linux-based PDAs
- Qt5 Interface - The Qt5 interface for Unixes, macOS, Windows, and Linux-based PDAs
- GTK1 Interface - The gtk1 interface for Unixes, macOS (X11), Windows
- GTK2 Interface - The gtk2 interface for Unixes, macOS (X11), Windows
- GTK3 Interface - The gtk3 interface for Unixes, macOS (X11), Windows
- fpGUI Interface - Based on the fpGUI library, which is a cross-platform toolkit completely written in Object Pascal
- Custom Drawn Interface - A cross-platform LCL backend written completely in Object Pascal inside Lazarus. The Lazarus interface to Android.
Platform specific Tips
- Android Programming - For Android smartphones and tablets
- iPhone/iPod development - About using Objective Pascal to develop iOS applications
- FreeBSD Programming Tips - FreeBSD programming tips
- Linux Programming Tips - How to execute particular programming tasks in Linux
- macOS Programming Tips - Lazarus tips, useful tools, Unix commands, and more...
- WinCE Programming Tips - Using the telephone API, sending SMSes, and more...
- Windows Programming Tips - Desktop Windows programming tips
Interface Development Articles
- Carbon interface internals - If you want to help improving the Carbon interface
- Windows CE Development Notes - For Pocket PC and Smartphones
- Adding a new interface - How to add a new widget set interface
- LCL Defines - Choosing the right options to recompile LCL
- LCL Internals - Some info about the inner workings of the LCL
- Cocoa Internals - Some info about the inner workings of the Cocoa widgetset
Creating your first LCL application with fpGUI
This is a step-by-step guide to build your first application with the fpGUI widgetset
- Download the latest Lazarus from subversion and build it (not necessary if you downloaded a pre-compiled snapshot)
- Download fpGUI source code from the SourceForge.net Git repository as follows:
git clone git://git.code.sf.net/p/fpgui/code
- Make sure you switch the the maint branch of fpGUI.
git checkout maint
- Now we need to make the Lazarus LCL find the fpGUI code.
- Using Lazarus (trunk)
- Option 1)
- Copy the 'src' directory from the fpGUI sources into your Lazarus directory as follows:
- <fpgui>/src/ ⇒ <lazarus>/lcl/interfaces/fpgui/src/
- Copy the 'src' directory from the fpGUI sources into your Lazarus directory as follows:
- Option 2)
- Use your file system's symbolic linking function to create a link the fpGUI src directory, to the correct location in Lazarus.
- For example:
- cd /opt/lazarus/lcl/interfaces/fpgui
- ln -s /path/to/fpgui/src src
- Option 1)
- Using Lazarus 1.0.8 and earlier
- Option 1)
- Supported on all platforms. Copy two directories and one file from the downloaded fpgui to lazarus
- <fpGUI dir>/src/gui ⇒ lazarus/lcl/interfaces/fpgui/gui
- <fpGUI dir>/src/corelib ⇒ lazarus/lcl/interfaces/fpgui/corelib
- <fpGUI dir>/src/VERSION_FILE.inc ⇒ lazarus/lcl/interfaces/fpgui/VERSION_FILE.inc
- Option 2)
- Linux or any other Unix type platforms. Create symbolic links from the fpGUI's corelib, gui directories and VERSION_FILE.inc to the Lazarus LCL directory as follows:
- ln -s <fpGUI dir>/src/gui lazarus/lcl/interfaces/fpgui/gui
- ln -s <fpGUI dir>/src/corelib lazarus/lcl/interfaces/fpgui/corelib
- ln -s <fpGUI dir>/src/VERSION_FILE.inc lazarus/lcl/interfaces/fpgui/VERSION_FILE.inc
- Using Lazarus (trunk)
- Open Lazarus, open the menu "Tools -> Configure Build Lazarus", select all options to None and LCL to Build+Clean, select fpGUI widgetset and rebuild it.
- Go to the menu Compiler Options, select fpGUI as the widgetset and you can recompile your project to fpGUI.
Implementation details
Component mapping
This is a table indication which FPGUI controls are used to build each LCL control.
NOTE: This table is incomplete and out of date. Many other controls have already been implemented in LCL-fpGUI, but not listed in this table.
LCL Control | FPGUI Control | Comments |
---|---|---|
TPageControl | TfpgPageControl | - |
TButton | TfpgButton | - |
TBitBtn | TfpgButton | fpGUI's standard button class supports images. |
TSpeedButton | TfpgButton | fpGUI's standard button class supports images and flat look etc. |
Road map for the fpGUI interface
Here: Roadmap#Widgetset dependent components
See also
- fpGUI Toolkit
- Easy fpGUI The easy way to try fpGUI and Free Pascal! Simply unpack the archive and you have a fully working FPC and fpGUI environment.