Some extra controls commonly used in Lazarus forms TPageFlag - enumerated type containing possible values for page flags for notebook pages

TPageFlag - enumerated type containing possible values for page flags for notebook pages

pfAdded,  // handle of page added to notebook handle
    pfAdding, // currently handle of page adding to notebook handle
    pfRemoving, // currently removing page handle from notebook handle
    pfInserting // currently inserting page into notebook
Internal flag set after page handle was connected to the notebook handle TPageFlags - set of TPageFlag TCustomPage: The base type for Page TCustomPage: The base type for the tabbed pages found in notebooks Multi-PageControls GetPageIndex - returns the index of the current page SetPageIndex - specifies an index for the current page TabVisible - is the Tab for this page visible? DoHide - perform the code for the OnHide event handler DoShow - perform the code for the OnShow event handler Create - constructor for TCustomPage: calls inherited Create then initialises style, visibility, alignment and caption TControl.Create PageIndex - integer index value for this page in the notebook VisibleIndex - returns the index number of a visible page OnHide - event handler for hiding this page in a notebook OnShow - event handler for showing (making visible) this page of a notebook ImageIndex - integer index value for the image associated with this page TCustomPageClass - class of TCustomPage TNBPages - NoteBook Pages: an array of strings containing the names of the pages TObject.Create Create - constructor for TNBPages: calls inherited Create then sets up the list of pages on the notebook TTabChangingEvent - generic event handling method for a change in a notebook Tab TTabPosition - enumerated type for position of tab relative to page: top, bottom, left or right TTabStyle - enumerated type for tab style: normal, buttons or flat buttons TTabGetImageEvent - generic event handling method for getting an image for a Tab TNoteBookOption - Show the close button on a tab, allow multi-line tabs TNoteBookOptions - set of TNoteBookOption TCustomNotebook: The base type for TNotebook and TPageControl

TCustom Notebook: The base type for TNotebook and TPageControl

A notebook consists of several Pages, usually of similar type and kept indexed. They may contain Images listed in a table. One page is displayed at a time, but the other pages are indicated by tabs which may have their names on them, and a different page can be selected for display by clicking its tab

Multi-PageControls
PageClass - the class of page that is included in this NoteBook DoCreateWnd - perform th ecode for method CreateWnd Change - perform the code for OnChanging UpdateTabProperties - apply all pending changes to the Tab ActivePageComponent - the actual contents of the currently selected Page ActivePage - the name (string) of the Page that is currently selected and is available for interaction Create - constructor for TCustomNotebook: calls inherited Create creates a pagelist, then sets initial bounds and default values for local variables and properties TWinControl.Create Destroy - destructor for TCustomNotebook: clears and frees pages and list, then calls inherited Destroy TWinControl.Destroy TabIndexAtClientPos - the index value of the Tab at the specified position ClientPos GetImageIndex - find the index number of the image associated with the specified Page index IndexOf - returns the index value of a specified page CustomPage - returns the page specified by Index CanChangePageIndex - determine whether it is permissible to change the index of the page GetMinimumTabWidth - find the smallest permissible tab width GetMinimumTabHeight - find the least permissible height for a tab DoCloseTabClicked - perform the action associated with clicking the Close tab for this page (OnCloseTabClicked) Images - the list of images associated with the pages of this notebook OnChanging - event handler for changing a tab OnCloseTabClicked - event handler for clicking on the Close button to close a tab OnGetImageIndex - event handler for getting an image index OnPageChanged - event handler for a change in the page The set of Options for the Notebook: Show close buttons on the tabs, multi-line tabs

The set of Options for the Notebook:

nboShowCloseButtons (display a little CloseButton on the Tab next to the label, to allow the user to close that tab),

nboMultiLine (allows multi-line captions on the Tabs)

The current Page of the Notebook PageCount - the number of Pages in the Notebook PageIndex - Index number of the current page PageList - the Indexed list of the Pages in the Notebook The contents of the Pages in the Notebook (as Strings) ShowTabs - if True (default condition), show the tabs for each page TabPosition - top, bottom, left or right TPage: One of the pages in a tabbed Notebook

TPage: One of the pages in a tabbed Notebook

Inherits most of its properties from TCustomPage

HowToUseStdCtrls Multi-PageControls
TNotebook: A series of tabbed pages placed together to make a notebook

TNotebook: A series of tabbed pages placed together to make a notebook

A notebook consists of several Pages, usually of similar type and kept indexed. They may contain Images listed in a table. One page is displayed at a time, but the other pages are indicated by tabs which may have their names on them, and a different page can be selected by clicking its tab

Inherits most of its properties from TCustomNoteBook

To use a Notebook, select its icon from the 'Additional' tab of the Component Palette and place it on the Form. Adjust its size, position, alignment and anchoring as required, by moving the object on the Form or by using the Object Inspector.

Tabbed Pages are added to the NoteBook by selecting the control and right-clicking with the mouse to get a pop-up menu whose first item is 'Add Page'. Pages already in the NoteBook can be edited by selecting the appropriate ActivePage in the Object Inspector and modifying its properties or adding additional components to that Page.

Set of Options for this Notebook. Include nboShowCloseButtons, nboMultiLine

Set of Options for this Notebook. Include nboShowCloseButtons, nboMultiLine

To use the Options, select the tag in the Object Inspector, then select for inclusion any of the listed options, setting them True or False as appropriate.

For example, setting nboShowCloseButtons to True will cause a CloseButton (a small CheckBox with an 'x' in it) to appear on each Tab of the NoteBook, allowing the tabbed Page to be closed when the user clicks on the CloseButton.

TTimer: An elapsed timer useful in many applications

TTimer: An elapsed timer useful in many applications

Inherits most of its properties from TCustomTimer

TIdleTimerAutoEvent - enumerated class containing events relevant to a timer

TIdleTimerAutoEvent - enumerated class containing events relevant to a timer

itaOnIdle,
    itaOnIdleEnd,
    itaOnUserInput
TIdleTimerAutoEvents - set of TIdleTimerAutoEvent TIdleTimer : A timer to measure idle time between processes

TIdleTimer: A timer to measure idle time between processes

Inherits most of its properties from TCustomTimer

SetAutoEnabled - specifies whether AutoEnable is allowed DoOnIdle - performs the code for timer idling DoOnIdleEnd - performs the code for the end of idling DoOnUserInput - performs the code for responding to user input Create: constructor for TIdleTimer: calls inherited Create then sets up operating mode (autostart and autoend) TCustomTimer.Create Destroy - destructor for TIdleTimer: turns off AutoEnabled then calls inherited Destroy TCustomTimer.Destroy TShapeType - enumerated type containing several standard geometric shapes

TShapeType - enumerated type containing several standard geometric shapes:

stRectangle
  stSquare
  stRoundRect
  stRoundSquare
  stEllipse
  stCircle
  stSquaredDiamond
  stDiamond
TShape - An arbitrary graphic geometrical shape placed on the Form. It may be one of a series of standard shapes defined by TShapeType

TShape: An arbitrary graphic geometrical shape placed on the Form. It may be one of a series of standard shapes defined by TShapeType (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle, stSquaredDiamond, stDiamond).

It can be displayed using the Paint method and the Brush and Pen tools.

Create - constructor for TShape: calls inherited Create, sets default styles and bounds, creates pen and brush TGraphicControl.Create Destroy - destructor for TShape: frees pen and brush, then calls inherited Destroy TGraphicControl.Destroy StyleChanged - method for handling change of style by Sender The Brush to be used for colouring this shape The Pen to be used for drawing this shape Which Shape? (Rectangle, Square, RoundRect, RoundSquare, Ellipse, Circle, SquaredDiamond, Diamond)

Which Shape?

stRectangle,

stSquare,

stRoundRect,

stRoundSquare,

stEllipse,

stCircle,

stSquaredDiamond,

stDiamond

TResizeStyle - enumerated type for style of resizing using splitters TCanResizeEvent - generic event handling method for resizing using splitter TCustomSplitter : the base type for TSplitter

TCustomSplitter: the base type for TSplitter

A Splitter is a vertical or horizontal bar that can be placed on a panel or form, to separate sub-panels functionally and allow re-sizing of the constituent sub-panels

This class defines many of the basic properties for the children classes, such as positioning, sizing and alignment

{ TCustomSplitter is a control for interactively resizing another control.
    It is a vertical or horizontal bar anchored to a side of a control.
    You can either set the Align property to alLeft (alRight,alTop,alBottom),
    then it will become a vertical bar, aligned to the left and when the user
    moves it with the mouse, the control to the left with the same Align=alLeft
    will be resized.
    The second more flexible possibility is to set the properties Align=alNone,
    AnchorSides and ResizeAnchor.
    }   
FindAlignOtherControl - returns another alignment control (the splitter may have to align two controls) StartSplitterMove - method for starting movement of the splitter, given the mouse position MouseXY FindAlignControl - returns the main alignment control CheckAlignment - ensure control is correctly aligned CheckNewSize - ensure new size is appropriate: returns True if sucessful Create - constructor for TCustomSplitter: calls inherited Create then sets initial alignment, size and style TCustomControl.Create Style for resizing - as a line, a pattern, full update, or none AutoSnap - automatically snaps to a grid point or grid line in the Form designer Boolean property, true if snapping to grid positions Whether the edges of the splitter bar are bevelled Minimum size for splitter - default 30 pixels Event handler for receiving permission to resize Event handler for occasion when splitter has moved AnchorSplitter - anchor the splitter to Acontrol using the specified Kind of anchor ResizeControl - the control that is to be re-sized with the splitter GetOtherResizeControl - find out which other control is to be re-sized MoveSplitter - by an amount specified by Offset SetSplitterPosition - to specified NewPosition GetSplitterPosition - returns the current position of the splitter ResizeAnchor - the kind of anchor to be used for resizing TSplitter : A vertical or horizontal bar placed on a panel or form, to separate sub-panels functionally

TSplitter: A vertical or horizontal bar that can be placed on a panel or form, to separate sub-panels functionally and allow re-sizing of the constituent sub-panels

The splitter extends for the full height (if vertical) or full width (if horizontal) of the parent control (form or panel) and is anchored to the edges; its position along the length or height of the parent is determined by the programmer or user by moving the whole control with the mouse, and its size can be adjusted using the sizing bars and with the ResizeAnchor property

HowToUseStdCtrls
TPaintBox: a painted rectangular box with defined size and color

TPaintBox: a painted rectangular box with defined size and colour

HowToUseStdCtrls
Create - constructor for TPaintBox: calls inherited Create then sets initial bounds and style TGraphicControl.Create TCustomImage - the base type for TImage TCustomImage : The base type for TImage . This is a control of the class TGraphicControl , designed to be lightweight and fast TGraphicControl PictureChanged - software emulaton of the OnPictureChanged event DestRect - returns the location of the destination rectangle Create - constructor for TCustomImage: calls inherited Create then sets default style, bounds and local variables: creates space for the picture TGraphicControl.Create Destroy - destructor for TCustomImage: frees picture then calls inherited Destroy TGraphicControl.Destroy Should image be centered? Boolean property - True if image is to be centered Picture - the actual image for display True if picture is to be stretched True if you can see through the image True if image is proportional TImage - a graphic image placed on the form; usually loaded from a picture file.

TImage : a graphic image placed on the form; usually loaded from a picture file.

The actual image is found in Picture or Canvas

Inherits most of its properties from its ancestors, TCustomImage, TGraphicControl and TControl

HowToUseStdCtrls
TControl.AutoSize TBevelStyle - enumerated type for bevel style: lowered or raised TBevelShape - enumerated type for shape of bevel

TBevelShape - enumerated type for shape of bevel

bsBox
  bsFrame
  bsTopLine
  bsBottomLine
  bsLeftLine
  bsRightLine
A bevel placed around the edge of buttons and other components

TBevel - a bevel placed around the edge of buttons and other components.

Its appearance is governed by TBevelShape, TBevelStyle and TBevelwidth

Virtual Paint method called in response to paint requests received by the parent control. TGraphicControl.Create Create - constructor for TBevel: calls inherited Create then sets initial style, shape and bounds

// standard properties, which should be supported by all descendants

Either reads a flag containing alignment instructions (FAlign) or writes alignment instructions (SetAlign)

May have no alignment, may have custom or client alignment, or can be aligned to top, bottom, left or right

// standard properties, which should be supported by all descendants

Determines how the control is to be anchored to its client or parent conrol

Either reads a flag containing the set of anchors to be used, or writes a set of anchors. If they have been written, this is indicated in IsAnchorsStored

// standard properties, which should be supported by all descendants

Determines the border spacing for this control

Reads flag to find stored spacing values required for the border of the control, or writes the flag to set the spacing.

The properties are defined in the parent class TControlBorderSpacing

// standard properties, which should be supported by all descendants

Determine Constraints (max and min height and width) for this control; reads the size constraints or stores new ones.

Name is the name of the component. This name should be a valid identifier, i.e. must start with a letter, and can contain only letters, numbers and the underscore character. When attempting to set the name of a component, the name will be checked for validity. Furthermore, when a component is owned by another component, the name must be either empty or must be unique among the child component names. Attempting to set the name to an invalid value will result in an exception being raised. Shape - whether a box, a frame or a line along one of the edges Style - whether raised or lowered
The Visible property represents the ability to see a visual control. 
          If Visible is True the control is shown, otherwise it is hidden.
          Calling Show sets, among others, Visible to True.
          Setting Visible to False is equivalent to calling Hide method.
The Visible property does not depend on control's parent visibility. Use IsVisible method to consider this and get real visibility.

// standard properties, which should be supported by all descendants

Reads or Writes flag if bounds are changed

// standard properties, which should be supported by all descendants
Reads or Writes flag if control is re-sized.
TColumnLayout - enumerated type for layout where data are arranged in columns TCustomRadioGroup: the base type for TRadioGroup

TCustomRadioGroup: the base type for TRadioGroup

A group of related but mutually exclusive radio buttons, requiring the user to select one af a set of alternatives

This class defines Items, where the captions for individual radio boxes are stored, Rows and Columns for arranging the radio boxes, and ColumnLayout to determine whether the data are arranged down the columns first, or across the rows first.

UpdateRadioButtonStates including implementing any pending changes SetColumns - specifies the number of columns for displaying the items SetItemIndex - specifies an index for an item GetItemIndex - returns an index for an item The Index value in the list of Items (a stringlist with the names of the selections for radio buttons) Items - a string list containing the captions for the radio boxes Columns - the number of columns in which the Items (radio buttons) are to be arranges ColumnLayout - HorizontalThenVertical or vice versa Create - constructor for TCustomRadioGroup: calls inherited Create, then sets list of buttons, and initialises layout and sizing properties TCustomGroupBox.Create Destroy - destructor for TCustomRadioGroup: frees items and buttons, then calls inherited Destroy TWinControl.Destroy CanModify - if True, modification of the RadioGroup is permitted Rows - the number of rows in which Items (radio boxes) are held Number of rows TRadioGroup : A group of related but mutually exclusive radio buttons, requiring the user to select one af a set of alternatives

TRadioGroup: A group of related but mutually exclusive radio buttons, requiring the user to select one af a set of alternatives. As one button becomes selected, the remaining buttons in the group become automatically deselected.

To Use this control, place it in the required position on the form, then in the Object Inspector select Items and click on the ellipsis (...) to open the string editor. Type in the captions to accompany each check box, then close the string editor and you will see a series of Radio Boxes with their captions displayed beside them. (Note - unlike TCheckGroup, there is no special RadioGroup editor)

Inherits properties from TCustomRadioGroup and TCustomGroupBox

TRadioGroup behaves differently from a group of TRadioButton controls placed arbitrarily around a form.

In the case of TRadioButton, the mutual exclusivity is a feature that applies to any RadioButton anywhere in the Form, and the RadioButtons can be rearranged in any order or placed anywhere within the containing Form, while in TRadioGroup the exclusivity applies only to buttons within the Group, which are ordered strictly according to their ItemIndex within the Items stringlist.

TRadioButton is an entity in itself, with a number of additional properties, whereas the buttons within TRadioGroup are not separate entities, but rather are simply entries in a list of strings, each of which is associated with the on-screen image of a RadioButton.

The example shows the difference between the use of TRadioButton and TRadioGroup

HowToUseStdCtrls TRadioButton
Caption - the text string appearing above the whole RadioGroup box Items - a string list containing the captions of the radio boxes

Items - a string list containing the captions of the radio boxes

Use the String List editor, opened by selecting Items and the ellipsis (...) in the Object Inspector, to insert the captions for the radio boxes, and determine their order and layout using the Rows, Columns and ColumnLayout properties

TCheckGroupClicked - generic event handler method for a click in a check group TCustomCheckGroup: The base type for TCheckGroup

TCustomCheckGroup: The base type for TCheckGroup

This class defines Items, where the captions for individual check boxes are stored, Rows and Columns for arranging the check boxes, and ColumnLayout to determine whether the data are arranged down the columns first, or across the rows first.

TCustomGroupBox
SetItems - specify the strings that form the Items of the group SetColumns - specifies the nuber of coulmns in which the Items are arranged DefineProperties - overrides the method inherited from TComponent, defines the top, left properties TComponent.DefineProperties Reads data from a stream Writes Data to a stream Create - constructor for TCustomCheckGroup: calls inherited Create, then sets styles, creates lists, initialises sizing and layout properties TCustomGroupBox.Create Destroy - destructor for TCustomCheckGroup: frees items and buttons, then calls inherited Destroy TWinControl.Destroy Rows - the number of rows in which the Items (check boxes) are arranged The number of rows holding items Items - a string list for the captions of the check boxes Whether an individual entry in the list is Checked CheckEnabled - whether a given (indexed) entry in the list is allowed to be checked Columns - the number of columns in which the Items (check boxes) are to be arranges ColumnLayout - HorizontalThenVertical or vice versa OnItemClick - event handler for mouse click on one of the Items in the Check Group AutoFill - whether Check Boxes should be automatically filled in (checked) TCheckGroup : A group of Check Boxes physically and logically grouped together on a form

TCheckGroup: A group of Check Boxes physically and logically grouped together on a form

To Use this control, place it in the required position on the form, then either right-click on the control to see the pop-up CheckGroup editor, or in the Object Inspector select Items and click on the ellipsis (...) to open the string editor. In either case, type in the captions to accompany each check box, then close the string or CheckGroup editor and you will see a series of boxes with their captions displayed beside them.

Inherits properties from TCustomCheckGroup and TCustomGroupBox

HowToUseStdCtrls TRadioGroup
Caption: the string which appears at the top of the Check Group Box

Caption: the string which appears as a caption at the top of the Check Group Box to describe the function of the Check Group as a whole

Items - a string list containing the captions of the check boxes

Items - a string list containing the captions of the check boxes

Use the String List editor or the CheckGroup editor (opened by right-clicking on the control in the Form) to insert the captions for the check boxes, and determine their order and layout

TBoundLabel: A label bound to another object, for example in TLabeledEdit TBoundLabel: A label bound to another object, for example in TLabeledEdit TLabeledEdit Create - constructor for TBoundLabel: calls inherited Create, makes itself a SubComponent to the Owner, and sets its caption to the owner name TCustomLabel.Create FocusControl - whether this control has focus Caption : the caption which will appear on the Bound Label, to identify its function TLabelPosition - enumerated type for position of a label relative to an edit box: above, below, left, right Custom Labelled Edit

TCustomLabeledEdit : The base type for LabeledEdit.

Note particularly the EditLabel property (see TBoundLabel), which contains the label attached to the Edit control.

TCustomEdit TCustomLabel
DoPositionLabel - perform the code for positioning the label CreateInternalLabel - method for internally creating label Create - constructor for TCustomLabeledEdit: calls inherited Create then sets initial position and label spacing TCustomEdit.Create TBoundLabel.Create EditLabel - the label attached to the edit box LabelPosition - whether above, below, to the left or to the right of the Edit box LabelSpacing - the distance between the Label and the Edit box Labelled Edit: An Edit Box with a permanently attached Label

TLabeledEdit : An Edit Box with a permanently attached Label

Saves time and effort over placing separate Label and Edit Box on Form. The properties are described in the parent component, TCustomLabeledEdit from which most of the properties are inherited

TCustomEdit TBoundLabel
Text : the text-string being entered or edited in the Labelled Edit box TCustomPanel: The base type for TPanel

TCustomPanel: The base type for TPanel

A Panel is a defined rectangular area of the form into which other components can be placed to group them functionally and geographically.

TCustomPanel defines the positioning and bevelling properties of any descendent classes, and provides methods for painting and writing text to the panel.

UpdateBordersAndBevels - make sure any changes to borders and bevels are accurately shown UpdateParentColorChange - update any pending changes in parent colour Create - constructor for TCustomPanel: calls inherited Create then sets initial style, bevel, colour, alignment and bounds TCustomControl.Create Alignment - whether text is left or right justified, or centered BevelInner - determines the nature of the Inner Bevel of the panel (whether raised, lowered etc) BevelOuter - determines the nature of the Outer Bevel of the panel (whether raised, lowered etc) BevelWidth - the Width of the panel's bevel in pixels FullRepaint - if True, the panel needs to be fully repainted after each change TCustomTrayIcon - the base class for TTrayIcon, a multiplatform System Tray component. TTrayIcon is a multiplatform System Tray component. It adds an icon to the tray and signifies an application that is inactive but ready to be activated. Under Windows the System tray is usually located on the bottom-right corner of the screen, but it may be elsewhere. On other operating systems this position varies. Create creates a new instance of a TCustomTrayIcon class. If AOwner is not Nil, the new component attempts to insert itself in the list of owned components of the owner. Create - constructor for TCustomTrayIcon: performs inherited Create then creates icon, timer and initialises balloon timeout TComponent.Create Destroy sends a opRemove notification to all components in the free-notification list. After that, all owned components are destroyed by calling DestroyComponents (and hence removed from the list of owned components). When this is done, the component removes itself from its owner's child component list. After that, the parent's destroy method is called. Destroy - destructor for TCustomTrayIcon: frees icon and timer then calls inherited Destroy TComponent.Destroy Hide - Removes the icon from the System Tray Show - Shows the icon on the System Tray ShowBalloonHint displays a smal balloon-like window near the tray icon. It can be used to send notifications about the status of an action, or notify of a received message or any other event which doesn't require an imediate response. The Ballon window disappears after BallonHintTimeout milliseconds or when the user clicks it or it's close button. Find the position of the Tray Icon and thus a position suitable to display the hinting BalloonHint. Under Windows an approximate location is detected. the set of kinds of balloon flag that can be displayed (may be None, Info, Warning or Error) The text to be shown in the hinting balloon The period after which the hinting balloon disappears The title to be shown on the hinting balloon The canvas of the Tray Icon PopUpMenu - a popup menu which is displayed when right mouse button is clicked over icon - separate from hint balloon The Icon or picture that is to be displayed A simple hint that is shown when the mouse hovers over the icon. Determines if Icon should be painted to the System Tray. This can be set to false if one wishes to instead paint to the Canvas of the Tray Icon. It is set to true when the icon is shown and remains true until Hide is called. Setting Visible has the same effect as calling Hide or Show. Event Handler for Mouse Click on Tray Icon Event handler for mouse double-click Event handler if mouse button is pressed down Event handler if mouse button is up Event handler for mouse movement Use this to implement custom drawing to the icon. Draw using the canvas property of the icon. Note: Does not work on win32.

Assign copies the contents of Source to Self, if the classes of the destination and source classes are compatible.

The TPersistent implementation of Assign does nothing but calling the AssignTo method of source. This means that if the destination class does not know how to assign the contents of the source class, the source class instance is asked to assign itself to the destination class. This means that it is necessary to implement only one of the two methods so that two classes can be assiged to one another.

In general, a statement of the form

Destination:=Source;

(where Destination and Source are classes) does not achieve the same as a statement of the form

Destination.Assign(Source);

After the former statement, both Source and Destination will point to the same object. The latter statemtent will copy the contents of the Source class to the Destination class.

Multi-PageControls - controls that offer a selection of alternative pages for display

Multi-PageControls - controls that offer a selection of alternative pages for display

A number of controls, found in Units ExtCtrls and ComCtrls, offer the ability to create multi-page forms with a series of Tabs along one edge that allow the user to select one of the Pages for display and interaction.

These include: TPageControl, TNoteBook, TTabControl and THeaderControl (the Header Control components have a very different structure and function). Icons for all of these exist on the Additional or Common Controls tabs of the Component Palette in the Lazarus IDE.

While the various components may look superficially similar, they differ in properties, inheritance, method of adding additional pages, behaviour at run-time, methods for referencing pages and so on.

We have to be very clear when using the various properties, to distinguish between the word 'Tab' as referring to a Tab indicating an identifier for a page, and 'Tab' as referring to the TAB key on the standard keyboard. In common with most Lazarus components, it is possible to enable each control to be included in the TabOrder of TabStops for a Form, so that the component can be reached by repeated pressing of the TAB key, and we must not confuse this use of 'Tab' with the use to denote a Page.

The properties CanTab, TabStop and TabOrder refer to the use of the TAB key to navigate to the relevant control.

Properties such as Tabs, TabIndex, IndexOfTabAt(), TabIndexAtClientPos(), TabPosition, TabHeight, TabWidth, TabVisible, OnCloseTabClicked refer to the use for Page selection.

TNoteBook and TPageControl are both descended from TCustomNoteBook (which is in turn descended from TWinControl) and have many inherited properties in common. TPageControl has, in general, more advanced features and is probably intended to replace TNoteBook.

The following table summarises the main differences between the two components.

Property or method TNoteBook TPageControl
Pages, ActivePage String, TPage TTabSheet, a more advanced version of TPage
Drag/Drop/Dock Drag properties, but minimal Dock or Drop Full Drag, Drop, Dock properties and methods
Indexing PageIndex ActivePageIndex, TabIndex
Showing/Hiding Tabs ShowTabs TabVisible in TTabSheet
Hints No Hinting methods ShowHint, ParentShowHint
Font No Font properties Font, ParentFont
Sensing position of Tab None TabPosition, OnGetSiteInfo
Options Published property Options, include nboShowCloseButtons, nboMultiLine No published Options property, but inherits Options (public property) from TCustomNoteBook, so they could be set explicitly in code

The individual Pages in both of the above controls (descended from TCustomNoteBook) are separate and can have their own specific collections of widgets which appear only when the relevant Page is selected by its Tab.

In contrast, the TTabControl component (descended from TCustomTabControl) has only one display area (Protected property DisplayRect), but the image displayed in it is determined by which tab has been selected. Each Tab has an index value which is used to select the appropriate image from an indexed ImageList and display it in the Display Rectangle.

The properties of the Tabs in TTabControl are very configurable compared with those in the controls derived from TCustomNoteBook, allowing for instance the creation of multi-line captions, the placement of images on Tabs, the possibility of the Owner routine determining the drawing of the tab, the configuration of Tab size, the selection of multiple tabs. The trade-off is that the display area is restricted in what it can display, and is essentially confined to display of images.

To use any of the above controls, select them from the relevant tab on the IDE Component Palette and drop them on the form in the required position. Fill in as many relevant properties as you can in the Object Inspector.

To add Tabs or Pages to the controls, select the control with a left mouse click or by selecting from the Component menu in the Object Inspector, then right-click on the component to get a pop-up menu, whose first item will be 'Add Page' or 'Add Tab'.

The Tabs in TTabControl can be edited by selecting 'Tabs' in the Object Inspector, clicking on the ellipsis (...) and using the string editor that pops up.

The pages inTNoteBook or TPageControl can be edited by selecting the ActivePage in the Object Inspector and then editing the properties of the individual page.

THeaderControl offers a widget that could be placed along the edge of a Panel or Form, allowing a highly customised mechanism for selection. However, there are no intrinsically associated display areas, and it is the developer's responsibility to supply an index associated with the selection from the THeaderControl and determining what action is to occur or what is to be displayed in any attached Panel or Form.

When the control is first selected from the Component Palette and placed on a Form, it consists of an unadorned rectangle. However, selecting the control and right-clicking (or selecting the 'Sections' property in the Object Inspector) gives access to a Sections editor (a StringList editor) and Sections can be added to the control. The sections are separated by vertical lines, and each section can have a string inserted as a label, associated with an Index value. The Sections can be rearranged, re-ordered, or be individually painted.

In a typical application a THeaderControl and a TPanel or TForm would be docked together, and code would be written to find which Section of the Header had been selected, then use its index to control the display in the other docked control.

SetItems - specifies the strings that form the Items of the group CheckItemIndexChanged - find out if the index for an item has changes AutoFill - whether responses to Items should automatically be filled in Operating system Handle for the Tray Icon InternalUpdate - updates any pending changes GetCapabilities - returns the set of capabilities TNoteBookCapability - enumerated type containing possible capabilities of a notebook nbcShowCloseButtons, nbcMultiLine, nbcPageListPopup TNoteBookCapabilities - set of TNoteBookCapability OnPictureChanged - event handler for a change in the picture TBalloonFlags enumerated type for flags on Tray Icon balloons TCustomIdleTimer - base class for TIdleTimer SetAutoEnabled puts the supplied boolean value into the AutoEnabled property and updates handlers DoOnIdle - action to be taken if the timer is idle DoOnIdleEnd -action to be taken at the end of an idle period DoOnUserInput - action to be taken when user input is detected TComponent.Loaded Loaded - calls inherited method and updates Handlers Create - constructor for TCustomIdleTimer: calls inherited Create and initialises some local event variables Destroy - destructor for TCustomIdleTimer: calls inherited Destroy after setting the AutoEnabled property False AutoEnabled - if True, Timer is automatically enabled AutoStartEvent - the event that triggers autostart (either idle time-out or user input) AutoEndEvent - the event that causes the automatic end of the timer FireOnIdle - boolean property determining whether the timer should fire when idle