Difference between revisions of "fpGUI Interface"
Ggeldenhuys (talk | contribs) |
Ggeldenhuys (talk | contribs) (→Creating your first LCL application with fpGUI: reformatted the bulk of the wiki text in a wiki mark-up.) |
||
Line 15: | Line 15: | ||
This is a step-by-step guide to build your first application with the fpGUI widgetset | 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: | |
− | + | #:<pre>git clone git://git.code.sf.net/p/fpgui/code</pre> | |
− | + | # Make sure you switch the the '''maint''' branch of fpGUI. | |
− | + | #:<pre>git checkout maint</pre> | |
− | + | # 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:<br/><br/> | |
− | + | ##*:<fpgui>/src/ ⇒ <lazarus>/lcl/interfaces/fpgui/src/ | |
− | + | ##*:<br/> | |
− | + | ##*Option 2) | |
− | + | ##*:Use your file system's symbolic linking function to create a link the fpGUI '''src''' directory, to the correct location in Lazarus. | |
− | Option 1) | + | ##*:For example:<br/><br/> |
− | Copy the 'src' directory from the fpGUI sources into your Lazarus directory as follows: | + | ##*:cd /opt/lazarus/lcl/interfaces/fpgui |
− | + | ##*:ln -s /path/to/fpgui/src src | |
− | + | ##*:<br/> | |
− | + | ##'''Using Lazarus 1.0.8 and earlier''' | |
− | Option 2) | + | ##*Option 1) |
− | Use your file system's symbolic linking function to create a link the fpGUI '''src''' directory, to the correct location in Lazarus. | + | ##:Supported on all platforms. Copy two directories and one file from the downloaded '''fpgui''' to '''lazarus'''<br/><br/> |
− | + | ##:<fpGUI dir>/src/gui ⇒ lazarus/lcl/interfaces/fpgui/gui | |
− | For example: | + | ##:<fpGUI dir>/src/corelib ⇒ lazarus/lcl/interfaces/fpgui/corelib |
− | + | ##:<fpGUI dir>/src/VERSION_FILE.inc ⇒ lazarus/lcl/interfaces/fpgui/VERSION_FILE.inc | |
− | + | ##:<br/> | |
− | + | ##*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:<br/><br/> | |
− | Option 1) | + | ##:ln -s <fpGUI dir>/src/gui lazarus/lcl/interfaces/fpgui/gui |
− | Supported on all platforms. Copy two directories and one file from the downloaded '''fpgui''' to '''lazarus''' | + | ##: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 | |
− | + | ##:<br/> | |
− | + | #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. | |
− | |||
− | 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: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Implementation details== | ==Implementation details== |
Revision as of 23:35, 28 October 2016
│
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.