fpGUI is a GUI (graphical user interface) library for Free Pascal . It is fully object-oriented; its main goal is to provide its services independent of any operating system or graphics environment. All painting is done using fpGFX, while fpGUI provides a comfortable widget set and other high-level classes. Base unit from the fpGFX package. Abstract unit interfacing to the correct widget set. Part of fpGFX package. The states a widget can be in. Is the widget currently enabled or disabled? Widget and parents are visible If the current size has been forced - no auto resizes Widget has the input focus Mouse cursor is inside this widget User currently clicked on this widget The TStyle class is an abstract base class that encapsulates the look and feel of a GUI. fpGUI contains a set of TStyle subclasses that emulate the styles of the different platforms supported by fpGUI (TWindowsStyle, TMotifStyle, etc.). By default, these styles are built into the fpGUI library. Styles are preferably applied application wide, but can also be applied per widget. fpGUI's built-in widgets use TStyle to perform all of their drawing, ensuring that they look exactly like the equivalent native widgets. The TWidget class is the base class of all user interface objects.

Widgets are components that are normally visual and the user can see them and possibly interact with them at runtime. All widgets have properties, methods and events that describe aspects of their appearance, such as the position of the widget, the cursor or hint associated with the widget, methods to paint or move the widget and events that respond to user actions.

TWidget has many protected properties and methods that are used or published by its descendants.

If you want to use a TWidget to hold child widgets you will probably want to add a layout to the parent TWidget.

Processes all incoming event objects

. Inside this event you normally verify the type of event object and pass it to a private event handler method, to do further processing.

This method gets called before the DistributeEvent method.

Distributes event objects to it's children . This event occurs after the ProcessEvent. Specifies the image used to represent the mouse pointer when it passes into the region covered by the widget. Change the value of Cursor to provide feedback to the user when the mouse pointer enters the widget. The value of Cursor is the enumerated type of the cursor in the set of cursors maintained by fpGFX (fpGFXBase unit). Sets or Gets the widget's GUI style

Sets or Gets the widget's GUI style. The ownership of the style object is not transferred.

If no style is set, the widget uses the application's style, TApplication.DefaultStyle instead.

Warning: This function is particularly useful for demonstration purposes, where you want to show fpGUI's styling capabilities. Real applications should avoid it and use one consistent GUI style instead.

Controls whether the widget responds to mouse, keyboard and timer events. Use Enabled to change the availability of the widget to the user. To disable a control, set Enabled to false. Disabled controls appear dimmed. If Enabled is false, the control ignores mouse, keyboard and timer events. TContainerWidget is an abstract class that defines the interface for containing other widgets . It also implements the distribution of events to child widgets. You can't create an instance of this class, as it contains abstract methods, and doesn't actually define internally how to store references to child widgets. It purely defines the interface in doing so. This class is a decendant of TWidget and must be used as a base for container widgets. TLayout is an example of a container class that can hold multiple children. TBinWidget is an example of a container class that can hold only a single child widget - normally a TLayout descendant. Distributes Event objects to all children widgets . This is a concrete class that implements all the TContainerWidget's abstract methods . This class adds the ability to contain a single child widget - normally a TLayout descendant. Examples of such classes are the TForm and TGroupBox . For examples of container classes that can hold multiple children, look at TLayout and it's descendants. A data class used internall for TBoxLayout . It also serves as the base class for other layout items. The fpGUI layout system provides a simple and powerful way of specifying the layout of child widgets

.

By specifying the logical layout once, you get the following benefits:

  • Positioning of child widgets.
  • Sensible default sizes for windows.
  • Sensible minimum sizes for windows.
  • Resize handling.
  • Automatic update when contents change:

    • Font size, text or other contents of child widgets.
    • Hiding or showing a child widget.
    • Removal of child widgets.
A data class used internally for TFixedLayout . The TFixedLayout allows you to arrange widgets at set x and y co-ordinates . This is like the current Form Designers of Lazarus and Borland Delphi works. Lays out widgets in a horizontal or vertical position. A TBoxLayout lays out widgets in a horizontal row, from left to right, or in a vertical column, from top to bottom. By default, the TBoxLayout uses the horizontal layout. You can toggle between horizontal and vertical layouts, by using the Orientation property. Toggle the layout of the TBoxLayout class. Two possible orientations exist - Horizontal (the default) or Vertical. A data class used internally for TGridLayout . The TGridLayout class lays out widgets in a grid.

TGridLayout takes the space made available to it (by its parent layout or by the Parent), divides it up into rows and columns, and puts each widget it manages into the correct cell.

Columns and rows behave identically. A TGridLayout lays out widgets in a two-dimensional grid. Widgets can also occupy multiple cells.

0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2
Base Edit component with no published properties. Position of cursor in the edit widget . If CursorPos = 0 then the cursor in infront of the first character of text. If CursorPos = 1 then the cursor is after the first character of text, etc. The TEdit widget is a one-line text editor

. A TEdit allows the user to enter and edit a single line of plain text.

By changing the PasswordChar property of a TEdit, it can also be used as a "write-only" field, for inputs such as passwords.

Character to use when masking the text input . The default is ascii char 0, which will then display the TEdit text as normal. Changing it to any other character, will show the TEdit text masked with this character. The most used PasswordChar is the '*' character for password fields. Defines a button that could be embedded in another component. This class defines a button that could be embedded in another component. No default minimum size gets applied either. This is the most basic button you can use. Example of usage: The TScrollbar and TComboBox components use TGenericButtons. Draw the blank button face on the canvas. This method draws a blank button face on the canvas. Nothing else gets drawn. This method also takes into account if the button is Embedded on not, which will affect the buttons look in some ways. eg: Must it have a Focus Rectangle or not. Used to create new custom type of button components Used to create new custom type of buttons normally used in dialogs and windows. There are also no properties published in this component and in has a default minimum width set to 75 pixels. This draws the Text on the already draw button face. This draws the Text on the already draw button face. Calculates the size of the button. This method calculates the size of the button and also applies the default minimum size of 75 pixels wide. Resets the Position to its maximum or minimum size . This is a helper function used internally. The way it works is as follows. Say the Max Size of the scrollbar is 10 and the current Position is 10. Now if the user tries to scroll even further, 11 gets passed to the method. The ClipPosition sees that 11 is past the Max value, so clips in back to 10. The oposite is true for the Min value. Determines how much Position changes when the user clicks the arrow buttons on the scroll bar or presses the arrow keys on the keyboard.

Set SmallChange to specify how much to change the value of Position when the user clicks on the arrow buttons. The Max and Min properties define the total range over which Position can vary.

For example, if Max is 100 and Min is 0, the scroll box can assume 100 positions. If the SmallChange property setting is 5 and the Position property is 0, the user can click the down or right arrow button 20 times before the thumb tab is moved all the way to the end of the scroll bar.

Determines how much Position changes when the user clicks the scroll bar on either side of the thumb tab or presses PgUp or PgDn.

Set LargeChange to specify how much to change the value of Position when the user clicks on the side of the thumb tab (that is, on the thumb tab track, but not on the thumb tab itself). The Max and Min properties define the total range over which Position can vary.

For example, if Max is 100 and Min is 0, the scroll box can assume 100 positions. If the LargeChange property setting is 20 and the Position property is 0, the user can click the scroll bar track five times after the thumb tab before it moves all the way to the end of the scroll bar (100 / 20 = 5).

The TGroupBox widget provides a group box frame with a title . TGroupBox doesn't automatically lay out the child widgets (which are often TCheckBoxes or TRadioButtons but can be any widgets). The TComboBox widget is a combined button and popup list.

A TComboBox provides a means of presenting a list of options to the user in a way that takes up the minimum amount of screen space.

A combobox is a selection widget that displays the current item, and can pop up a list of selectable items. A combobox may be editable, allowing the user to modify each item in the list.

TCustomForm is a base class from which to derive a window such as a form or dialog. Derive from TCustomForm to create a custom window. The TCustomForm descendant can contain other objects, such as TButton, TCheckBox and TComboBox objects, but they have to be placed into a Layout Manager class. A descendant of TCustomForm with published properties . The TApplication class manages the GUI application's control flow and main settings . For any GUI application that uses fpGUI, there is precisely one TApplication object, no matter whether the application has 0, 1, 2 or more windows at any time. Global TApplication instance is a object that holds all the different parts together. It stores the instance variables for the TStyle, TScreen, etc. Returns the smallest value of the two Returns the greater of two values. Clip the value until it is between min and max . It is currently used internally in the TScrollBarSlider.EvMouseMove to limit the amount the user can scroll the scrollbar thumb button. the clipped result value value to be tested minimum allowed value maximum allowed value The TMotifStyle class provides Motif look and feel. This class implements the Motif look and feel. It closely resembles the original Motif look as defined by the Open Group, but with some minor improvements. The Motif style is fpGUI's default GUI style on Unix platforms. A container for TMenuItem objects