Difference between revisions of "TPageControl"

From Free Pascal wiki
Jump to navigationJump to search
Line 49: Line 49:
 
</source>
 
</source>
  
 +
== Widgetset Specific==
 +
* macOS doesn't support images on the TPageControl tabs. This is macOS native behavior.
 
== Similar controls ==
 
== Similar controls ==
 
* [[TTabControl]]: looks similar to <tt>TPageControl</tt>, however, possesses only a single page.  
 
* [[TTabControl]]: looks similar to <tt>TPageControl</tt>, however, possesses only a single page.  

Revision as of 07:58, 7 September 2021

English (en) suomi (fi) français (fr) русский (ru) 中文(中国大陆)‎ (zh_CN)

tpagecontrol.png TPageControl is a multi-page component that provides a container to hold a variety of controls per page. Much like a real-world notebook, it displays a "tab" per page so that the user can quickly switch between pages. Each page can contain its own selection of controls.

TPageControl is a descendant of TWinControl and can be found on the Common Controls tab of the Component Palette.

Unlike a TTabControl, each tab is connected to its own page. TPageControl's pages are accessible through its (non published) array-like Pages property.

The currently active page is accessible through the ActivePage or ActivePageIndex properties.

The event OnChange is fired when the user selects another page. The event OnChanging occurs before the active page is changed; it has a parameter AllowChange which can be set to false to prevent the change to the new page, for example because data input in the old page is incorrect.

Adding a page

In order to add a page to a TPageControl right-click on it in design mode to show its context menu, then select Add Page.

At runtime you first create a TabSheet as usual, then assign the PageControl to its Parent.

procedure TForm1.Button4Click(Sender: TObject);
var
  tab: TTabsheet;
begin
  tab := TTabsheet.Create(Self);
  tab.Caption := 'New page';
  tab.Parent := PageControl1;
end;

component-TPageControl.png

Deleting a Page

There are different ways of "deleting" a page from a tabsheet. All the approaches listed below would cause the target page tab to disappear from the control. Giving the end-user an effect of deleting a page. Though the page might remain available in the code.

Hide the tab

The following code simply hides the tab from the pagecontrol, meaning that the user will not longer be able to select it manually. However, the page will still be accessible by code at runtime.

Tabsheet2.TabVisible := false;

Changing the Parent

You can change Tab's parent to a different control or even to nil The method is useful when you need to move the sheet from one TabControl to another OR you want to show the page again later OR you just need to keep controls intact.

Tabsheet2.Parent := nil;

Freeing the page

The method can be used when you don't need the control itself anymore (as well as it's children)

TabSheet2.Free;
TabSheet2:=nil; // this is optional

Widgetset Specific

  • macOS doesn't support images on the TPageControl tabs. This is macOS native behavior.

Similar controls

  • TTabControl: looks similar to TPageControl, however, possesses only a single page.
  • TNotebook: contains multiple tabs like the TPageControl, but there are no tabs. The user must write code to switch between tabs.

See also


LCL Components
Component Tab Components
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TTaskDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TCSVDataSet • TSdfDataSet • TBufDataset • TFixedFormatDataSet • TDbf • TMemDataset
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TJSONPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TMySQL57Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHtmlDataProvider • TIpHttpDataProvider • TIpHtmlPanel
Virtual Controls TVirtualDrawTree • TVirtualStringTree • TVTHeaderPopupMenu