How can I implement a close button for a TTabsheet of a TPageControl like Firefox?
Edit:
Delphi Version: Delphi 2010
OS: Windows XP and up
How can I implement a close button for a TTabsheet of a TPageControl like Firefox?
Edit:
Delphi Version: Delphi 2010
OS: Windows XP and up
It's often a good idea to implement this yourself, as the other answers have suggested. Just in case you are already using Raize Components, though, this feature is supported "out of the box". Just set
TRzPageControl.ShowCloseButtonOnActiveTab := true
, and handle theOnClose
event. The component takes care of placement for a variety of tab layouts/orientations/shapes/colors.[just a happy customer]
What I have done in the past is just put a TBitBtn with a graphic in the upper right hand corner of the TPageControl. The trick i the parent of the TBitBtn is the same as the TPageControl, so it isn't actually on one of the tab sheets. Then in the click even for that button:
When the current TTabControl is freed it notifies the TPageControl that owns it.
Now with Theme support (include
Windows, UxTheme, Themes
units)!Looks like:
I have changed a little this example: - created class TCloseTabSheet - this class has property OnClose: TNotifyEvent, which will be called if assigned - if TabSheet of of TPageControl isn't that class then there is no close button - if it is then Button showed. When you press close button it calls OnClose - now you dont need to control the array FCloseButtonsRect, cause this Rects stored at TCloseTabSheet