lazarus/lcl/widgetset
blikblum bbfbce8fdd lcl: fix compilation after rev 27070 #69b2b72516
git-svn-id: trunk@27073 -
2010-08-12 12:49:38 +00:00
..
README.txt
wsarrow.pp lcl: remove TWidgetset.DrawArrow which got a TArrow control and TCanvas as arguments, move some implementations to TWSArrow classes 2010-02-04 04:06:00 +00:00
wsbuttons.pp lcl: fix compilation after rev 27070 #69b2b72516 2010-08-12 12:49:38 +00:00
wscalendar.pp lcl: fix compilation after rev 27070 #69b2b72516 2010-08-12 12:49:38 +00:00
wschecklst.pp merge lcl-smartlink branch: 2009-04-12 08:46:31 +00:00
wscomctrls.pp lcl: fix compilation after rev 27070 #69b2b72516 2010-08-12 12:49:38 +00:00
wscontrols.pp LCL: added TWSControl.ConstraintWidth/Height 2010-07-07 20:28:13 +00:00
wsdesigner.pp merge lcl-smartlink branch: 2009-04-12 08:46:31 +00:00
wsdialogs.pp lcl: fix compilation after rev 27070 #69b2b72516 2010-08-12 12:49:38 +00:00
wsextctrls.pp LCL, Interfaces: added TNotebook.TabRect for Win/Gtk/2 2009-11-10 05:13:46 +00:00
wsextdlgs.pp lcl: don't use initialization section with resources in extdlgs, include resources only if calculator panel is used. 2010-02-05 09:19:06 +00:00
wsfactory.pas merge lcl-smartlink branch: 2009-04-12 08:46:31 +00:00
wsforms.pp Implements a new form style: fsSystemStayOnTop, reverts win32 fsStayOnTop to mean staying on top of the App only and implements sending WM_HOTKEY messages to the user TMyForm.WndProc. Also adds the OldFormStyle to the parameters of TWSCustomForm.SetFormStyle so that it isn't always necessary to recreate the Wnd. 2010-05-20 09:28:21 +00:00
wsgrids.pp lcl: don't use initialization section with resources in grids, include resources only if grid class is used (removes unneeded grid resources from application). 2010-02-05 08:59:11 +00:00
wsimglist.pp merge lcl-smartlink branch: 2009-04-12 08:46:31 +00:00
wslclclasses.pp merge lcl-smartlink branch: 2009-04-12 08:46:31 +00:00
wsmenus.pp merge lcl-smartlink branch: 2009-04-12 08:46:31 +00:00
wspairsplitter.pp merge lcl-smartlink branch: 2009-04-12 08:46:31 +00:00
wsproc.pp
wsreferences.pp
wsspin.pp merge lcl-smartlink branch: 2009-04-12 08:46:31 +00:00
wsstdctrls.pp lcl: fix compilation after rev 27070 #69b2b72516 2010-08-12 12:49:38 +00:00
wstoolwin.pp lcl: remove dummy initialization sections 2009-04-09 05:52:37 +00:00

This directory contains all skeleton widget set 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 will 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 component class 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 overridden 
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 compile time 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