lazarus/lcl/widgetset
jesus e9c1e4d9ab grids, removed forgotten writeln
git-svn-id: trunk@15643 -
2008-07-01 22:03:48 +00:00
..
README.txt
wsactnlist.pp
wsarrow.pp
wsbuttons.pp
wscalendar.pp
wschecklst.pp lcl: 2008-06-03 02:02:42 +00:00
wscomctrls.pp statusbar: 2008-03-20 07:27:55 +00:00
wscontrols.pp lcl: bidi mode patch from Ido with modifications 2008-04-27 14:24:22 +00:00
wsdbctrls.pp
wsdbgrids.pp
wsdesigner.pp gtk2: dont use hack to set itemindex for listbox with single selection (part of 0010682) 2008-01-26 11:06:06 +00:00
wsdialogs.pp
wsdirsel.pp
wseditbtn.pp
wsextctrls.pp Started moving TPopupNotifier to the LCL. Added linux script to create images lrs file. Implemented TTrayIcon.GetPosition on gtk2. 2008-02-09 10:24:40 +00:00
wsextdlgs.pp
wsfilectrl.pp
wsforms.pp
wsgrids.pp grids, removed forgotten writeln 2008-07-01 22:03:48 +00:00
wsimglist.pp * Splitup of TBitmap into TRasterImage, TCustomBitmap, TFPImageBitmap and TBitmap 2008-06-20 00:21:07 +00:00
wslclclasses.pp * forgot to checkin most importent part for r13663 #a174b6e889 2008-01-09 19:30:35 +00:00
wsmaskedit.pp
wsmenus.pp lcl: bidi mode patch from Ido with modifications 2008-04-27 14:24:22 +00:00
wspairsplitter.pp
wsproc.pp * Made TWSMenu.SetBidiMode the same as TWSWinControl 2008-04-15 22:06:01 +00:00
wsreferences.pp lcl: safer gdi handles typecasting 2008-05-23 12:19:04 +00:00
wsspin.pp
wsstdctrls.pp lcl: TCustomEdit.Undo, TCustomEdit.CanUndo 2008-05-11 05:22:39 +00:00
wstoolwin.pp

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