Felipe Monteiro de Carvalho schrieb:

I'd second that idea, currently I'm working on such an improvement for
tabbed controls. The TCustomNotebook suffers from the added pages, which
should be added only in a derived control, as special kind of owner data.

Ummm, not really. Please note that TCustomNotebook is just a wrongly
named component, it must have the tabs because huge amounts of code in
the LCL depend on that. This component is scheduled for being renamed
to TCustomPageControl.

Yes, I realized that misinterpretation already. If somebody is willing to update the widgetsets accordingly, I can do all the required LCL and IDE updates right now. (see below)

It seams that you are mixing TCustomNotebook with TNotebook, but they
are completely unrelated.

No, I don't confuse these, but I admit that something should be renamed.

TCustomNotebook is almost the same as
TPageControl and it is a native control.

That's not true, at least not for Win32. The native Win32 TabbedCtrl has no idea of pages, that's a Delphi/Lazarus addition that could have been implemented in a *derived* control.


Now for the good news:

I just finished the revised implementation of TCustomNotebook, so that it can work with and without pages. In that approach I didn't rename TCustomNotebook, because this is the type used in the widgetsets (see above). But I made some methods abstract, and derived two new (intermediate) classes:

- TPagedNotebook is the old implementation, for use in e.g. TPageControl. I've redirected all derived controls in the LCL to this new class. The IDE continues to work, no new bugs seem to be introduced.

- TCustomTabs/TTabs is the new tabbed control, without pages/tabsheets.
This is a direct replacement for the T[Custom]TabControl, far more compatible with the Delphi implementation than the current implementation. Some properties still wait for their implementation in the various widgetsets.

I've left the old TTabControl in ComCtrls, for reference purposes during my development, and to allow for easier access to (currently) private elements in TCustomNotebook. The new TTabs can be renamed and moved there, after approval. The new TTabs does not require an additional page control, no separate page list, and no additional page controls, what reduces the resource usage (HWND...!) a lot.

I'm just thinking about makeing the Tabs.Objects[] optional pages, as outlined in the TabTest application. It doesn't make a difference to the tabbed control, whether it has associated (page/tabsheet) controls at all, and whether these controls are shown in its own client area or somewhere else. In fact TCustomPage only holds some per-page properties, in detail for communication with the widgetsets. TTabs uses a single dummy page internally, to keep some internal methods and the widgetsets happy.


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to