You are on page 1of 11

Lazarus Documentation

From Free Pascal wiki


Jump to navigationJump to search

│ ‫( اﻟﻌﺮﺑﯿﺔ‬ar) │ Deutsch (de) │ English (en) │ español (es) │ suomi (fi) │ français (fr) │ magyar (hu) │
Bahasa Indonesia (id) │ italiano (it) │ ⽇本語 (ja) │ 한국어 (ko) │ Nederlands (nl) │ português (pt) │
русский (ru) │ slovenčina (sk) │ Türkçe (tr) │ 中⽂(中国⼤陆) (zh_CN) │ 中⽂(台灣) (zh_TW) │

Contents
▪ 1 Lazarus and Pascal Tutorials
▪ 1.1 Lazarus/FPC (Free Pascal)
▪ 1.2 Hardware, Threads and Processes
▪ 1.3 Files
▪ 1.4 Web
▪ 1.5 Platforms
▪ 2 The Lazarus User Guides
▪ 2.1 Installation
▪ 2.2 IDE
▪ 2.3 LCL
▪ 2.4 Developing
▪ 2.5 Tools
▪ 2.6 Coming from Delphi
▪ 3 The Lazarus Developer Guides
▪ 3.1 LCL - Lazarus component library
▪ 3.2 Interfaces
▪ 3.3 Translating/Internationalization/Localization
▪ 4 Additional Components Documentation
▪ 5 Free Pascal Compiler Documentation
▪ 6 Special Topics
▪ 7 Lazarus related blogs, websites, videos, magazines and books
▪ 7.1 Blogs
▪ 7.2 Websites
▪ 7.3 Videos
▪ 7.4 Books
▪ 8 Conferences on Lazarus and Free Pascal
▪ 9 How to cite in scientific publications
▪ 10 Missing documentation?
▪ 11 See also

Lazarus and Pascal Tutorials


▪ Basic Pascal Tutorial
▪ Free Pascal video tutorials
▪ Lazarus video tutorials
▪ All tutorials on the wiki - Collection of tutorials with difficulty ranging from beginner
to expert level
▪ There are also other tutorials not hosted here in Lazarus related blogs, websites,
videos, magazines and books.
▪ SchoolFreeware's Free Pascal Tutorials (http://www.schoolfreeware.com/Free_Pa
scal_Tutorials.html) - From command line interface (CLI) to graphical user
interface (GUI) using Lazarus IDE

(See also "Websites", further down this page)

Lazarus/FPC (Free Pascal)

▪ Creating bindings for C libraries - How to convert C header files (.h) to pascal units
▪ Console Mode Pascal - Using the Lazarus IDE for writing Pascal programs for
text-mode operation.
▪ Daemons and Services - How to write windows services and/or linux daemons.
▪ Databases - An introduction to using databases in Lazarus and links to other
database articles.
▪ Developing with Graphics - Examples on 2D & 3D graphic programming.
▪ Form Tutorial - A tutorial for beginners on how to deal with forms.
▪ Free Pascal for Visual Basic users
▪ Lazarus Database Tutorial - A tutorial which has some more background
information on how to connect to popular databases, for example MySQL, Firebird,
Postgres, etc.
▪ Lazarus integrated .chm help file system for manual copying into .../chm
subdirectory, download here (http://www.stack.nl/~marcov/doc-chm.zip). Both for
Lazarus and fp text mode IDE.
▪ Lazarus IDE Tools - An intermediate level tutorial about code completion and other
IDE tools.
▪ Lazarus Inline Assembler - A getting started guide.
▪ Lazarus/FPC Libraries - How to create dynamic libraries (.so, .dll, .dylib) and how
to use them
▪ Lazarus Tutorial - A tutorial for beginners and a detailed description of the Lazarus
IDE.
▪ Multimedia Programming - How to play videos and sounds.
▪ Office Automation - How to interact with office software and create spreadsheets,
text documents, presentations, etc.
▪ OpenGL Tutorial - How to use OpenGL in Lazarus applications.
▪ Overview of Free Pascal and Lazarus - A brief discussion of kinds of things you
can develop with these general-purpose tools.
▪ spelling - How to use the Hunspell library in a Lazarus App.
▪ SQLdb Tutorial0 - Set up instructions for sample data for the following database
tutorials
▪ SQLdb Tutorial1 - A tutorial that teaches you to get up and running with Lazarus
visual components and databases
▪ SQLdb Tutorial2 - Second part of the DB tutorial series, showing editing, inserting
etc.
▪ SQLdb Tutorial3 - Third part of the DB tutorial series, showing how to program for
multiple databases and use a login form
▪ SQLdb Tutorial4 - Fourth part of the DB tutorial series, showing how to use data
modules
▪ SqlDBHowto - Explanations and code for various aspects of using SQLdb for
reading and manipulating data in relational databases
▪ Translations / i18n / localizations for programs - How to provide localized versions
of your programs and packages
▪ VirtualTreeview Example for Lazarus - Using VirtualTreeview on Lazarus.
▪ Working With TSQLQuery - An in depth description of using TSQLQuery, having
details about using parameters in queries and non-SELECT-queries

Hardware, Threads and Processes

▪ Using the printer - Printer support in Lazarus


▪ Hardware Access - How to access hardware devices, such as ISA cards, PCI
cards, parallel and serial ports and USB devices.
▪ Multithreaded Application Tutorial - How to write multithreaded applications using
Free Pascal and Lazarus.
▪ Executing External Programs - A short tutorial showing how to run external
programs from inside your program.
▪ LazDeviceAPIs - A LCL unit which offers an interface to various hardware devices
such as the Accelerometer, SMS sending, GPS positioning, etc.

Files

▪ File Handling In Pascal - Basic explanations on the use of files, for beginners in
pascal.
▪ TXMLPropStorage - Using TXMLPropStorage to save user preferences.
▪ XML Tutorial - Writing and reading XML files.
▪ Using INI Files - How to work with INI files in pascal.

Web

▪ Web Development Portal - How to develop web applications with Lazarus and
Free Pascal.
▪ Webbrowser - Webbrowser controls
▪ Web Programming and Networking - Tutorials about TCP/IP protocol,
WebServices and links to web development articles.

Platforms

▪ Android Portal - Programming tips and reference information on Android.


▪ Android Programming - For Android smartphones and tablets.
▪ Embedded - An overview of development for Embedded platforms with/without an
operating system
▪ volunteers needed :-)
▪ FreeBSD Portal - An overview of development for FreeBSD with Lazarus and Free
Pascal.
▪ FreeBSD Programming Tips - Lazarus installation, useful tools, Unix
commands, and more...
▪ iOS Portal - Programming tips and reference information for iOS.
▪ iPhone/iPod development - About using Objective Pascal to develop iOS
applications.
▪ Linux Portal - Programming tips and reference information for desktop Linux.
▪ Lazarus on Raspberry Pi - How to install and use Lazarus on the Raspberry
Pi.
▪ Mac Portal - Programming tips and reference information for macOS.
▪ macOS Programming Tips - Lazarus installation, useful tools, Unix
commands, and more...
▪ WinCE Portal - Programming tips and reference information for WinCE
▪ WinCE Programming Tips - Using the telephone API, sending SMSes, and
more...
▪ Windows Portal - Programming tips and reference information for desktop
Windows and Windows mobile.
▪ Windows Programming Tips - Programming information for desktop Windows
- including server

The Lazarus User Guides


▪ Lazarus Faq - General information about Lazarus and specifics for Linux and
Windows users.
▪ Lazarus DB Faq - FAQ on database issues in Lazarus.
▪ Wishlist/Wanted Features - Features that you would like to see in Lazarus
▪ How do I create a bug report - You think you found a bug in Lazarus, how can you
report it?

Installation

▪ Installation - all things "install" categorized


▪ Getting Lazarus - Brief instructions on how to download and install a released or
SVN version of Lazarus
▪ Installing Lazarus - A detailed installation guide
▪ Multiple Lazarus - How to install several lazarus versions on one machine

IDE

Integrated Development Environment

▪ IDE tricks - Tips, tricks and hidden features


▪ Lazarus IDE - The IDE windows
▪ Lazarus IDE Shortcuts - The key mapping and shortcuts.
▪ Lazarus Packages - A guide for creating a package under Lazarus
▪ Install Packages - A small guide to install packages
▪ Extending the IDE - How to add functionality to the Lazarus IDE
▪ Installing Help in the IDE - How to install help for the RTL, FCL and LCL in the
IDE, as well as installing the Kylix help files in it and also adding help for user
packages.
▪ Using Lazarus for other computer languages - How to use the IDE for C, Java, etc.
▪ IDE Development - Various pages about current development of the IDE.
▪ Lazarus for education - How to setup the IDE for courses and beginners.
▪ Lazarus Hacks - Customizations and hacks that can adapt the IDE and LCL to
specific needs.
▪ startlazarus - How the IDE is started.
▪ Unit not found - How to find units - Explains how the compiler and the IDE
searches for units and how this can fail.

LCL

The Lazarus component library (LCL) is very similar to Delphi's VCL (Visual Component
Library). Most Lazarus units, classes and properties have the same name and
functionality as their equivalents in Delphi. This makes porting Delphi applications to
Lazarus relatively easy.

▪ LCL documentation - On line help for LCL (work in progress).


▪ LazActiveX - ActiveX/LazActiveX documentation
▪ TAChart documentation - Standard component for drawing graphs and charts.
▪ LCL Components - Tutorials about the standard LCL components such as
TMainMenu, TButton, TComboBox, TTimer, etc. Complements and links to the
reference docs.
▪ The LCL in various platforms - A brief discussion about LCL features which
behave differently in different platforms.
▪ Autosize / Layout - How to design forms that work on all platforms.
▪ Main Loop Hooks - How to handle multiple event sources
▪ Asynchronous Calls - How to queue methods for later execution
▪ File size and smartlinking - How to smartlink applications and create smaller
executables.
▪ Accessing the Interfaces directly - Example how to access the LCL widgetsets
▪ Add Help to Your Application - How to create a Online Help for your application
▪ Colors - Description of system colors like clDefault, clWindow and the fpImage
FPColor
▪ LCL Tips - Tips and tricks
▪ LCL Defines - Choosing the right options to recompile LCL
▪ LCL Code Examples - Example working code for Lazarus.
▪ Lazarus Custom Drawn Controls - A set of custom drawn controls in Lazarus
▪ LCL Accessibility - Documentation about using making LCL applications
accessible

Developing

▪ The Power of Proper Planning and Practices - common-sense programming best


practices for the Free Pascal and Lazarus developer
▪ Multiplatform Programming Guide - How to develop cross-platform applications
and how to port from one platform to another
▪ Introduction to platform-sensitive development - The next step in cross-platform
development.
▪ Deploying Your Application - How to create an installer for your application
▪ Cross compiling - Creating executables for one platform, on another
▪ GDB Debugger Tips - Known Issues / Tips for debugging Pascal using GDB
▪ Remote Debugging - How to debug your Lazarus application from another
machine
▪ Application Icon - Setting the application icon
▪ Using Pascal Libraries with .NET and Mono - yes, you can use your Pascal code
with .NET and Mono
▪ Pascal and PHP - the Pascal connection to PHP
▪ Developing Python Modules with Pascal - extending Python with Pascal
▪ Developing Web Apps with Pascal - yes, you can write Rich Internet Applications
(RIA) with Pascal
▪ Pascal and GIS - using Pascal for GIS and mapping
▪ Smartphone Development - About using FPC and Lazarus to target various
smartphones
▪ Lazarus Components Directory - A description of extra packages which are
shipped with Lazarus, such as support for printers, fpWeb, daemons, etc

Tools

▪ Lazarus Documentation Editor - Using "lazde" to create documentation


▪ FPDoc Editor - An integrated editor for documentation files
▪ FPDoc Updater - A GUI tool for updating FPDoc files
▪ lazbuild - Compiling projects and packages without the IDE
▪ LazSVNPkg - Lazarus Subversion IDE Plugin
▪ InstantFPC - run pascal programs as normal unix scripts

Coming from Delphi

▪ Lazarus Components - Comparison between Lazarus and Turbo Delphi


components
▪ Lazarus For Delphi Users - For Delphi users who are getting started with Lazarus
▪ Code Conversion Guide - How to convert existing code and components from
Delphi and Kylix
▪ Delphi Converter in Lazarus - Convert a Delphi unit, project or package almost
automatically

The Lazarus Developer Guides


▪ Developer pages - A list of lazarus developers
▪ Lazarus Development Process - Roadmaps, ToDos, current development and
what needs to be done for Lazarus 1.0
▪ How To Help Developing Lazarus - A guide to help newbies start improving
Lazarus
▪ Version Numbering - Explanation of the different version numbers of Lazarus
▪ Creating a Patch - A guide to making a patch with changes made to Lazarus
▪ Creating a Backtrace with GDB - A guide to making a backtrace to help you debug
a program
▪ Nomenclature - Guide to choose a name for a new method or property
▪ Design Guide Lines - A guide about how to proceed when changing Lazarus
Source Code.
▪ GUI design - Notes on guidelines when designing the lazarus GUI
▪ Roadmap - An idea of the current status of the various parts of Lazarus
▪ Moderating the bug tracker - Guidelines for lazarus developers and moderators for
using the bug tracker (http://www.freepascal.org/mantis/).
▪ Codetools - How the codetools are integrated into the IDE
▪ Creating IDE Help - How to extend the IDE documentation
▪ How_To_Make_Lazarus_Docs - How to make help for the IDE
▪ Distributing Lazarus - Installers - Hints and notes for packagers who want to write
an installer for Lazarus
▪ Bounties - Need a particular new feature soon? Set a price here.

LCL - Lazarus component library

The following articles go deeper into developing for/with the LCL. See also the user
LCL section above.

▪ How To Write Lazarus Component - A helpful guide to creating your first LCL
component.
▪ LCL Messages - Guide related to LCL Messages
▪ LCL Internals - Implementation details and how to create a new widgetset
▪ LCL Key Handling - Help! A key press, what now?
▪ LCL Internals - Resizing, Moving - How the LCL communicates with the LCL
interface to resize, move controls
▪ LCL Drag Drop - Managing dragging, dropping and docking
▪ LCL Unicode Support - Road to Unicode enabled Lazarus
▪ LCL Documentation Roadmap - Which units have to be documented
▪ LCL Bindings - Bindings to use LCL on other languages

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.

Translating/Internationalization/Localization

These articles cover how to set up the IDE, LCL and your own programs with
translated/localized strings, and how to internationalize them (e.g. deal with date
formats, decimal separators etc) :

▪ Translations / i18n / localizations for programs How to translate your application


and how to load translated resource strings of projects and packages in your
application.
▪ Step-by-step_instructions_for_creating_multi-language_applications: Tutorial
demonstrating how to convert one of the Lazarus example projects to a multi-
language application.
▪ Getting translation strings right A few notes for programmers on how to create and
use translatable strings in your application. Quickly discusses general things about
creating strings, offers a few hints on implementation issues and points out some
things to consider when using English as base language in particular.
▪ Localization Notes:

▪ German - Notes and guidelines for translating the Lazarus IDE to German,
including a small dictionary to look up often used translations.
▪ Portuguese-Brazilian - Small dictionary containing common translations of
terms used in the Lazarus IDE for the Portuguese-Brazilian translation.
▪ Russian - Notes and guidelines for translating the Lazarus IDE into Russian.

▪ Add language bar explains how you can add a list of translations to the top of a
wiki page.
▪ Translating the IDE

Additional Components Documentation


▪ Project Templates - the package projtemplates
▪ Pascal Script and Pascal Script Examples - How to use the pascal script
components in Lazarus
▪ OpenGL - How to use OpenGL in Lazarus
▪ KOL-CE - Free Pascal/Lazarus port of KOL&MCK library. How to create very
compact applications for Win32/WinCE in Lazarus.
▪ How To Write Lazarus Component for more component info
▪ Project Groups - about package projectgroupslaz.lpk
▪ Package Tabs - about package packagetabs.lpk
▪ Favorites - about package favorites.lpk

Free Pascal Compiler Documentation


In addition to this site (http://lazarus-ccr.sourceforge.net/fpcdoc/), the latest version of
the documentation can also be found on-line and in a variety of downloadable formats
on the main Free Pascal Compiler site (http://www.freepascal.org/docs.var).

▪ User's guide (http://lazarus-ccr.sourceforge.net/fpcdoc/user/user.html)


▪ Programmer's guide (http://lazarus-ccr.sourceforge.net/fpcdoc/prog/prog.html)
▪ Reference guide for the system unit, and supported Pascal constructs (http://lazar
us-ccr.sourceforge.net/fpcdoc/ref/ref.html)
▪ Run-Time Library reference manual (http://lazarus-ccr.sourceforge.net/fpcdoc/rtl/in
dex.html)
▪ Free Component Library reference manual (http://lazarus-ccr.sourceforge.net/fpcd
oc/fcl/index.html)
▪ Free Pascal documentation tool manual (http://lazarus-ccr.sourceforge.net/fpcdoc/f
pdoc/fpdoc.html)
▪ Build messages

Special Topics
▪ Databases
▪ SciTech Portal - Lazarus and Free Pascal for Science, medicine and technology.

Lazarus related blogs, websites, videos, magazines


and books
Blogs

▪ Lazarus Development (http://lazarus-dev.blogspot.com/) - (2015) A blog of


Lazarus developers regards development process.
▪ Adventures of a Newbie - (2006) A blog of a newbie getting started with some
tutorial information in a running log.
▪ On the road with Lazarus/Free Pascal (http://lazarusroad.blogspot.com/) -
(October 2016) A blog dedicated to register my experiences while programming
with Lazarus and Free Pascal (by Luiz Américo)
▪ Porting to Lazarus (http://port2laz.blogspot.com/) - (2014) This blog describes the
porting of a medium-sized application (~100 kloc) from D7 with CLX to Lazarus (by
Alexsander da Rosa)
▪ Living Lazarus (http://living-lazarus.blogspot.com/) - (2013) One man's exploration
into the possibilities of an open source RAD (by Wibblytim).
▪ Bee.ography (http://beeography.wordpress.com/tag/object-pascal/) (2011) just
(another) Bee’s buzz!
▪ Parallel Pascal Worlds (http://donaldshimoda.blogspot.com/) (September 2016)
Donald Shimoda.
▪ devblog.brahmancreations.com (http://devblog.brahmancreations.com/content/obs
ervations-on-freepascal-and-lazarus-development) (2010) Observations on Free
Pascal and Lazarus Development
▪ CNOC TechBlog / Lazarussupport (http://www.cnoc.nl/en/blog/) - (2016?) A blog
about Lazarus and Free Pascal in general - Joost van der Sluis
Websites

These websites cover Free Pascal, Lazarus or both - or they cover Delphi concepts that
are applicable to Lazarus/FPC:

▪ PP4S (http://pp4s.co.uk) Lazarus (and Delphi) getting started information, tutorials.


Useful for beginners.
▪ Pascal - SwinBrain (https://web.archive.org/web/20161229032639/http://swinbrain.
ict.swin.edu.au/wiki/Pascal) (Internet Archive; original link dead) - Unique free
pascal tutorial and documentation at Swinburne University
▪ Lazarus Programming (http://sheepdogguides.com/lut/) A series of tutorials to get
beginners started. Limited "how to install" material. From SheepdogSoftware.co.uk
▪ Basic Pascal Tutorial Updated version of Tao Yue's (http://www.taoyue.com/)
Pascal Tutorial (http://www.taoyue.com/tutorials/pascal/) (reposted with
permission).
▪ Delphi Tutorials Arranged in Groups, by Difficulty (http://sheepdogguides.com/tut.h
tm) An accumulation of material from many years. Topics range from "Hello World"
to using Dallas 1-Wire to TCP/IP. The ones I've tried port to Lazarus without
hassle.

Chinese:

▪ Community for Free Pascal and Lazarus in Chinese. (http://www.fpccn.com/) -


Community, forums, source code and demos in Chinese.

French:

▪ Pascal - Club d'entraide des développeurs francophones (http://pascal.developpe


z.com/) - Francophone community about Pascal.

Spanish:

▪ Programando en Pascal (http://aprendepascal.wikidot.com) - Spanish tutorial


focused on FPC/Lazarus, hosted in Wikidot.

Videos

▪ See Lazarus videos

Books

▪ See Pascal and Lazarus Books and Magazines

Conferences on Lazarus and Free Pascal


▪ See Conferences and Events

How to cite in scientific publications


▪ See Academic citation

Missing documentation?
If you miss documentation for Lazarus or Free Pascal, you can always write it yourself
and submit it to the Lazarus/FPC bugtracker for inclusion. Have a look at:

▪ FPDoc Editor Built-in documentation editor in Lazarus. Page explains how to get
fpdoc help sources and write your own help.

See also
▪ FPC Wiki Documentation

Retrieved from "http://wiki.freepascal.org/index.php?title=Lazarus_Documentation&


oldid=152213"

▪ This page was last edited on 31 May 2022, at 20:27.


▪ Content is available under unless otherwise noted.

You might also like