lazarus/lcl/widgetset
2005-10-02 09:46:55 +00:00
..
README
wsactnlist.pp
wsarrow.pp
wsbuttons.pp implement active default control switching 2005-04-17 18:41:15 +00:00
wscalendar.pp renamed TWSCalendar to TWSCustomCalendar, fix using TTICalendar (bug #1203) 2005-09-25 19:40:03 +00:00
wschecklst.pp added gtk handler for TCheckListBox item check change 2005-08-29 10:35:25 +00:00
wsclistbox.pp
wscomctrls.pp added ldocktree.pas 2005-07-01 18:20:41 +00:00
wscontrols.pp started ChildSizing auto layouts for TWinControl 2005-10-02 09:46:55 +00:00
wsdbctrls.pp renamed TWSCalendar to TWSCustomCalendar, fix using TTICalendar (bug #1203) 2005-09-25 19:40:03 +00:00
wsdbgrids.pp
wsdialogs.pp convert LM_CREATE message to interface methods 2004-09-24 21:34:14 +00:00
wsdirsel.pp
wseditbtn.pp
wsextctrls.pp move GetNotebookTabIndexAtPos to the widgetset interface 2005-03-31 21:29:45 +00:00
wsextdlgs.pp
wsfilectrl.pp
wsforms.pp * Reimplemented ZOrder 2005-07-16 00:08:26 +00:00
wsgrids.pp
wsimglist.pp
wslclclasses.pp * Trimmed trailing spaces 2005-09-10 16:11:44 +00:00
wsmaskedit.pp
wsmenus.pp moved some menu intf methods to the TXXXWSMenuItem class from Martin Smat 2005-07-01 12:07:50 +00:00
wspairsplitter.pp
wsproc.pp
wsspin.pp renamed TSpinEdit to TFloatSpinEdit and added new TSpinEdit with integers 2005-09-22 08:59:42 +00:00
wsstdctrls.pp added TComboBox.ReadOnly - only partially working under gtk1 2005-08-22 19:02:06 +00:00
wstoolwin.pp

This directory contains all sceleton widgetset component 
classes. These classes will never get instantiated and may 
only contain class functions.
  
=========  
IMPORTANT
=========  

Derivation and inheritance of classes is different then one
might be used to. It wil be explained by the following 
examples.

Suppose the following LCL class hierarchy:

 TLCLComponent
     |
  TControl
     |
 TWinControl
 
the corresponding WS skeleton would be

 TWSLCLComponent
      |
  TWSControl
      |
 TWSWinControl


When method X of TWSControl gets implemented by 
widgetset Q the hierarchy looks like

 TWSLCLComponent
      |
  TWSControl.X --> TQWSControl.X
      |
 TWSWinControl


Calling TWSWinControl.X doesn't call TQWSControl.X since
it's parent is TWSControl. This problem is solved by 
modifying the class hierarchy at runtime.
When a ComponentClass is registered by RegisterWSComponent,
the class is copied and the vmt entries are adjusted so 
that the hierarchy looks like:


 TWSLCLComponent
      |
  TWSControl.X --> TQWSControl.X
                        |
                   TWSWinControl

In this case, calling TWSWinControl.X will call the overriden 
TQWSControl.X. The only thing which doesn't get handled is the 
inherited statement. Suppose there is also a TQWSWinControl.X 
which implements a few extra steps. In a normal situation one 
would have called "inherited". The call to inherited is
resolved at compiletime and would in this example to a call to
TWSControl.X. That is not what we want.
To get around this, call the parent yourself:
  TWSWinControlClass(ClassParent).X