lazarus-ccr/components/orpheus/OrphStatus.html
wp_xxyyzz 3f184b96f0 orpheus: Update OrphStatus.html
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6124 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2018-01-09 20:01:02 +00:00

777 lines
26 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<!--Copyright 2008 Phil Hess-->
<HTML>
<HEAD>
<TITLE>Status of Orpheus Port</TITLE>
<META NAME="AUTHOR" CONTENT="Phil Hess">
</HEAD>
<BODY>
<CENTER>
<H1>Status of Orpheus Port</H1>
</CENTER>
<HR>
<H3>Contents</H3>
<A HREF="#Whats_New">What's New</A><BR>
<A HREF="#Introduction">Introduction</A><BR>
<A HREF="#Installation">Installation</A><BR>
<A HREF="#Platforms_Tested">Platforms Tested</A><BR>
<A HREF="#Examples">Examples</A><BR>
<A HREF="#Porting_Philosophy">Porting Philosophy</A><BR>
<A HREF="#Usage_Notes">Usage Notes</A><BR>
<A HREF="#Limitations">Limitations</A><BR>
<A HREF="#Status_Controls">Status of Individual Controls</A><BR>
<A HREF="#To_Do">To Do</A><BR>
<A HREF="#Other_Resources">Other Resources</A><P>
<HR>
<A name="Whats_New"></A><H3>What's New</H3>
<UL>
<LI>20180109 release (0.3):
<UL>
<LI>Checked compilation with Laz 1.8/1.9.<P>
</UL>
<LI>20090921 release (0.2.2):
<UL>
<LI>Lazarus 0.9.27 eliminated the Ctl3D property, breaking Orpheus, which uses
Ctl3D in several controls. This release restores the Ctl3D property so
Orpheus can again be compiled with Lazarus.
<LI>The status table below has been updated for all widgetsets. In some cases
Orpheus controls have improved with general improvements and bug fixes
in the LCL and underlying widgetset code; in a few cases, however, Orpheus
controls perform worse than they did previously, probably due to
side-effects from LCL changes.<P>
</UL>
<LI>20081229 release (0.2.1):
<UL>
<LI>Adds TOvcCalendar.
<LI>Updated results of testing for Lazarus 0.9.26. GTK2 widgetset now working better.<P>
</UL>
<LI>20080720 release (0.2.0):
<UL>
<LI>Recent change in the Lazarus LCL broke Orpheus TOvcTable on Windows. This release
works around that change.
<LI>Numerous bugs fixed and workarounds found. See To Do list.
<LI>Batch/script files are now included for compiling all test apps at once.<P>
</UL>
<LI>20080316 release (0.1.9):
<UL>
<LI>Recent changes in the Lazarus LCL broke Orpheus compilation. This release
can now be compiled.<P>
</UL>
<LI>20080301 release (0.1.8):
<UL>
<LI>Recent changes in the Lazarus LCL broke all Orpheus property editors and example
programs. This release fixes those problems.<P>
</UL>
<LI>20070903 release (0.1.7):
<UL>
<LI>Recent changes in the Lazarus LCL broke Orpheus compilation. This release
can now be compiled.
<LI>Recent improvements in the Lazarus Qt widgetset add basic functionality
for several Orpheus controls (see table below). However, GTK2 widgetset
does not work as well as it used to.<P>
</UL>
<LI>20070704 release (0.1.6):
<UL>
<LI>3 new example programs have been added for demonstrating TOvcSpinner,
TOvcSimpleField, TOvcTCSimpleField and TO32TCSimpleField. Note that the
TestSimpField and TestTblEdits examples are intended primarily for
Windows at this time since TOvcSimpleField and TOvcTCSimpleField are not
yet working on other widgetsets (see table below).
<LI>Fix improves functionality of TO32TCFlexEdit validation.<P>
</UL>
<LI>20070630 release (0.1.5):
<UL>
<LI>Most of the Orpheus controls now work with the Lazarus Carbon widgetset.<P>
</UL>
<LI>20070425 release (0.1.4):
<UL>
<LI>Recent changes to Lazarus LCL broke compilation of Orpheus. This
release can now be compiled with the latest LCL.<P>
</UL>
<LI>20070401 release (0.1.3):
<UL>
<LI>Improvements to TO32FlexEdit on Windows.<P>
</UL>
<LI>20070317 note:
<UL>
<LI>Recent improvements in the Lazarus Carbon widgetset add basic functionality
for several Orpheus controls on OS X (see table below).<P>
</UL>
<LI>20070211 note:
<UL>
<LI>Recent improvements in Lazarus fix display of custom cursor when
sizing and moving columns and rows at runtime in TOvcTable.<P>
</UL>
<LI>20070204 release (0.1.2):
<UL>
<LI>Workarounds found for recent Lazarus changes that broke TOvcTable Columns
and Rows editors.
<LI>Workaround found for recent FPC 2.1.1 change that broke compilation of ovcvlb.pas.<P>
</UL>
<LI>20070128 release (0.1.1):
<UL>
<LI>An example program that demos the TO32FlexEdit control has been added
even though validation doesn't work with LCL (see "To Do" list below).
If you have Delphi you can compile the example to see how validation
is supposed to work.
<LI>Recent changes in Lazarus on Windows appear to have broken both the
Columns and Rows design-time property editors for the TOvcTable control.
The property editors still work with OS X. Stay tuned...
<LI>Custom cursors are now visible when resizing table columns at runtime on
Windows. However, cursor also disappears sometimes. Stay tuned on
this one too...<P>
</UL>
<LI>20070127 note:
<UL>
<LI>Recent improvements in the Lazarus Qt widgetset make a couple of Orpheus controls
work better with Qt.<P>
</UL>
<LI>20070115 note:
<UL>
<LI>In addition to downloading the .zip file (see link below), you can now
also obtain the Orpheus ported source using Subversion:<P>
svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/orpheus [local_dir]
</UL>
<LI>20070114 note:
<UL>
<LI>Controls have now been tested with GTK2 widgetset (see table below).<P>
</UL>
<LI>20070107 release (0.1.0):
<UL>
<LI>TOvcVirtualListBox control added.
<LI>Installation no longer registers TOvcSimpleField and TOvcTCSimpleField
controls (see myovcreg.pas) on non-Windows platforms since these two controls
don't work on other platforms and crash Lazarus IDE if added to a form on
those platforms.
</UL>
</UL>
<HR>
<A name="Introduction"></A><H3>Introduction</H3>
These notes describe the status of the OrphPort Project, an attempt to
port a subset of TurboPower's Orpheus controls to <A HREF="http://www.lazarus.freepascal.org">Lazarus</A>
and <A HREF="http://www.freepascal.org">Free Pascal</A>. At this time,
several <B>enhanced label controls</B> and most of the <B>table (grid) controls</B>
have been ported. Some of the controls
work quite well on multiple platforms; others need more work or
await better support by the Lazarus LCL or by specific widgetsets before
they are fully functional. The table below gives the status of individual
controls. You are encouraged to work on improving these controls
(see <A HREF="#To_Do">To Do list</A>). Please send your bug reports, suggestions
and patches to:<P>
&nbsp;&nbsp;MacPgmr (at) fastermac (dot) net<P>
<I>Note:</I> You can also post to the "Ported from Delphi/Kylix" section of the Lazarus
forum if you want your bug reports and suggestions to be seen by the entire
Lazarus community.<P>
The ported source code is here: <A HREF="http://web.fastermac.net/~MacPgmr/OrphPort/downloads">http://web.fastermac.net/~MacPgmr/OrphPort/downloads</A><P>
You can now also obtain the Orpheus ported source using Subversion:<P>
svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/orpheus [local_dir]<P>
The original Orpheus 4.06 source code that this port was based on is here:
<A HREF="http://sourceforge.net/projects/tporpheus">http://sourceforge.net/projects/tporpheus</A>
(although you don't need this for Lazarus)<p>
TurboPower's 1,392-page Orpheus User's Manual is also available from the Source Forge site.<P>
Note that the ported source remains under the original MPL 1.1 license.
<HR>
<A name="Installation"></A><H3>Installation</H3>
<OL>
<LI>Unzip the ported source files into their own folder.
<LI>Start Lazarus.
<LI>Optionally, choose File | New | Application to make sure Lazarus doesn't
mess up the currently open project.
<LI>Choose Package | Open package file and select orpheus.lpk.
<LI>Click Compile to make sure your version of Lazarus can compile the
Orpheus units.
<LI>Click Install and click Yes when prompted to rebuild the Lazarus IDE.
<LI>After rebuilding is finished, restart Lazarus if it didn't restart
automatically. The installed Orpheus controls will be on the Orpheus tab
of the component palette.
</OL>
<I>Important!</I> If you don't have write access to the folder where Lazarus
is installed, you may have problems rebuilding the Lazarus IDE with older
versions of Lazarus. However, if you have a relatively new version of Lazarus,
it will compile itself to the ~/.lazarus/bin folder if you don't have write
access to the Lazarus install folder. After rebuilding, be sure to start
~/.lazarus/bin/lazarus, not the installed Lazarus.<P>
<HR>
<A name="Platforms_Tested"></A><H3>Platforms Tested</H3>
<TABLE BORDER=1 CELLPADDING=3>
<TR VALIGN=TOP>
<TH>Platform</TH>
<TH>OS Version</TH>
<TH>Library Versions</TH>
<TH>Widgetsets Tested</TH>
<TH>Lazarus Version Tested</TH>
</TR>
<TR VALIGN=TOP>
<TD>Windows</TD>
<TD>XP SP2</TD>
<TD>&nbsp;</TD>
<TD>win32</TD>
<TD>0.9.28 RC with FPC 2.2.4</TD>
</TR>
<TR VALIGN=TOP>
<TD>OS X</TD>
<TD>10.4.11 (Tiger) on PowerPC</TD>
<TD>gtk: 1.2.0.9.1<BR>gtk2: 2.14.7<BR>qt: 4.5.2</TD>
<TD>gtk, gtk2, carbon, qt</TD>
<TD>0.9.28 RC with FPC 2.2.4</TD>
</TR>
<TR VALIGN=TOP>
<TD>OS X</TD>
<TD>10.5.8 (Leopard) on Intel</TD>
<TD>&nbsp;</TD>
<TD>carbon</TD>
<TD>0.9.28 RC with FPC 2.2.4</TD>
</TR>
<TR VALIGN=TOP>
<TD>Linux</TD>
<TD>--not tested--</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
</TABLE><BR>
<HR>
<A name="Examples"></A><H3>Examples</H3>
The source for several small test applications is included which demonstrates
most of the ported controls. Open each test app's .lpi file and compile it once
Orpheus has been installed in Lazarus. Folders for the test apps are located
in the <I>tests</I> folder in your Orpheus folder, as follows:
<UL>
<LI>TestTable - demos TOvcTable and various table cell controls (column
headers, row labels, string, memo, check box, combo box, bitmap).
<LI>TestURL - demos TOvcURL
<LI>TestRLbl - demos TOvcRotatedLabel
<LI>TestLabel - demos TOvcLabel
<LI>TestVLB - demos TOvcVirtualListBox
<LI>TestSpinner - demos TOvcSpinner
<LI>TestFlexEdit - demos TO32FlexEdit validation
<LI>TestSimpField - demos TOvcSimpleField validation (Windows only for now)
<LI>TestTblEdits - demos TOvcTCString, TOvcTCSimpleField validation and TO32TCFlexEdit
validation (Windows only for now)
<LI>TestCalendar - demos TOvcCalendar
</UL>
To see the TOvcSpinner control in action, try out the table's Rows and Columns
property editors with the TestTable app.<P>
<I>Note:</I> The TestTable app uses the included .bmp files to demo the
TOvcTCBitMap control. These bitmap files are not needed to rebuild the Lazarus
IDE since they're in the ovcreg.lrs resource file, but they are
included for completeness.<p>
<I>Tip:</I> The necessary files for compiling the test apps with Delphi are
also included (.dof, .dfm, .bdsproj). If you have Delphi you can compile
the apps to see exactly how the Orpheus controls are supposed to look and
behave. Note that with the free Turbo Delphi Explorer you can't install
Orpheus (a limitation of the free version). However, you can still compile
the test apps, as follows:
<UL>
<LI>Start Turbo Delphi Explorer and open the test app's .bdsproj file.
<LI>Click Ignore All to proceed when Delphi encounters the unrecognized
Orpheus controls.
<LI>Choose File | Close and click Cancel to close the main form.
<LI>Choose Project | Options and make sure the Search path in
Directories/Conditionals points to your Orpheus folder.
<LI>Choose Project | Compile to compile the test app.
</UL>
<HR>
<A name="Porting_Philosophy"></A><H3>Porting Philosophy</H3>
<UL>
<LI>All changes to the original source code were made via conditional
compiling (IFDEF's). Thus the ported source retains full Delphi compatibility.
An added benefit is that you can see what the original code was, something
that is often lost with ported code.
<LI>A compatibility unit, <I>MyMisc</I>, was added to fill in gaps in the
Lazarus LCL and provide other compatibility routines.
<LI>Orpheus functions written in assembly were "Pascal-ized" so the ported code could
be compiled on non-Intel platforms.
<LI>For now, the Lazarus package (orpheus.lpk) compiles the source with range,
overflow and stack checking turned on. This revealed several apparently harmless
bugs in the TurboPower code, which have been fixed. To find these and other
minor bugs, grep the source for "TurboPower bug".
<LI>In general, no other significant changes or "improvements" were made to
the source. An exception is the o32tcflx unit, where a few additions were
made to correct apparent omissions or inconsistencies.
<LI>A note on comments: Comments added to the ported source are generally
marked with "//". However, the "o32" units (developed later than other units
by TurboPower) already included some "//" comments. With these units, you can
tell the added comments by their context (near IFDEF's, for example).
</UL>
<HR>
<A name="Usage_Notes"></A><H3>Usage Notes</H3>
<OL>
<LI>When you first add an Orpheus control to a form, Lazarus will add
the Orpheus unit to the uses section of your main source file (.lpr).
This pulls in a great deal of code that you don't need. Delete the Orpheus unit
from the uses section to reduce the size of your executable file.
&lt;==<I>Fixed in 0.2.2 release.</I><P>
<LI>The TOvcSimpleField and TOvcTCSimpleField controls originally did not work
at all on non-Windows widgetsets, although they now have some functionality.
For now, don't use these controls in cross-platform applications. Just opening
a form that has a TOvcSimpleField or TOvcTCSimpleField control on it may crash
non-Windows versions of Lazarus. Use the TO32FlexEdit and TO32TCFlexEdit
controls in place of TOvcSimpleField and TOvcTCSimpleField controls in
cross-platform applications.<P>
<LI>To display the TOvcLabel's Style Manager property editor in the Lazarus
IDE, right-click on the TOvcLabel control (Apple key+click on Mac). You can
also change Style Manager properties via the CustomSettings in the
Object Inspector. Also, with GTK, the default clNone Color displays a black
background, so be sure to set ParentColor to True or select a different
Color.<P>
<LI>An added benefit of the Orpheus TOvcSpinner control is that it is
available for Delphi too, unlike the LCL TSpinEdit, which has no equivalent
in the Delphi VCL.
</OL>
<HR>
<A name="Limitations"></A><H3>Limitations</H3>
<OL>
<LI>The TO32FlexEdit and TO32TCFlexEdit controls include code for displaying
an optional button within the text editing area. However, this TBitBtn-within-
a-TEdit has not been supported by the LCL, so the code has been IFDEF'd out for
now. Beginning with Lazarus 0.9.27, this code appears to work okay with the win32
and carbon widgetsets. To enable the button code, see the comments above the
ButtonOkay define in o32flxed.pas.<P>
<LI>Widgetsets generally implement LCL controls by creating native controls
that correspond to the LCL controls (text edit, check box, etc.). However,
Orpheus builds its TOvcSimpleField control from TCustomControl, rather than
descending from an existing edit control such as TCustomEdit. In general,
TOvcSimpleField and TOvcTCSimpleField have not worked very well on non-Windows
widgetsets.<P>
<LI>The GTK widgetset does not support TOvcRotatedLabel, apparently
because the GetTextMetrics function is not fully implemented on that
widgetset.<P>
<LI>The Carbon widgetset has a few minor limitations as of Lazarus 0.9.26 that
affect some of the Orpheus controls. Setting the BorderStyle property does
nothing with Carbon in custom controls such as TOvcVirtualListBox, TOvcCalendar
and TOvcTable. Also, since the Carbon widgetset does not implement the bvLowered
bevel style, changing the focus of a TOvcCalendar control does not change
the look of the currently selected date as it should (the date remains bvRaised,
which actually looks lowered with the Carbon widgetset).<P>
<LI>Differences between Delphi VCL and Lazarus LCL affect some Orpheus controls.
For example, VCL messages like CM_ENTER and CM_EXIT are not supported in the
LCL. In a couple places, the ported code uses LM_SETFOCUS and LM_KILLFOCUS
messages to obtain some functionality. Similarly, the lack of LCL support for the
CM_CTL3DCHANGED message means that changing the Ctl3D property in Lazarus for
controls such as TOvcCalendar may not update the control's design (reloading the
form will show the correct design). Finally, some properties are True
by default in Delphi but False in Lazarus, meaning forms converted from Delphi
may not look quite the same for properties with default values until you
explicitly set the properties in Lazarus or in your code.
</OL>
<HR>
<A name="Status_Controls"></A><H3>Status of Individual Controls</H3>
<TABLE BORDER=1 CELLPADDING=3>
<TR VALIGN=TOP>
<TH>Control</TH>
<TH>VCL / LCL ancestor</TH>
<TH>Description</TH>
<TH>Issues / To-do</TH>
<TH>win32</TH>
<TH>gtk</TH>
<TH>gtk2</TH>
<TH>carbon</TH>
<TH>qt</TH>
</TR>
<TR VALIGN=TOP>
<TD>TOvcRotatedLabel<BR><IMG SRC="TOVCROTATEDLABEL.bmp"></TD>
<TD>TGraphicControl</TD>
<TD>Rotated text</TD>
<TD>gtk widgetset doesn't support</TD>
<TD>Working</TD>
<TD>Not working</TD>
<TD>Partial</TD>
<TD>Working</TD>
<TD>Working</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcLabel<BR><IMG SRC="TOVCLABEL.bmp"></TD>
<TD>TGraphicControl</TD>
<TD>Fancy shading, color and highlighting</TD>
<TD>Property editor still needs work</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcURL<BR><IMG SRC="TOVCURL.bmp"></TD>
<TD>TCustomLabel</TD>
<TD>Looks and acts like HTML hyperlink</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcSpinner<BR><IMG SRC="TOVCSPINNER.bmp"></TD>
<TD>TCustomControl</TD>
<TD>Can associate with a TEdit; 8 different styles</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Crashes</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcVirtualListBox<BR><IMG SRC="TOVCVIRTUALLISTBOX.bmp"></TD>
<TD>TCustomControl</TD>
<TD>Header row, variable width tabs, huge number of rows</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcCalendar<BR><IMG SRC="TOVCCALENDAR.bmp"></TD>
<TD>TCustomControl</TD>
<TD>Calendar control</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcSimpleField<BR><IMG SRC="TOVCSIMPLEFIELD.bmp"></TD>
<TD>TCustomControl</TD>
<TD>Edit control with validation</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Partial</TD>
<TD>Partial</TD>
<TD>Partial</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TO32FlexEdit<BR><IMG SRC="TO32FLEXEDIT.bmp"></TD>
<TD>TCustomEdit</TD>
<TD>Edit control with validation</TD>
<TD>gtk and qt used to work better</TD>
<TD>Working</TD>
<TD>Partial</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTable<BR><IMG SRC="TOVCTABLE.bmp"></TD>
<TD>TCustomControl</TD>
<TD>Full-featured grid control</TD>
<TD>See "To Do" list;<BR>0.9.26 didn't crash</TD>
<TD>Working</TD>
<TD>Crashes</TD>
<TD>Crashes</TD>
<TD>Partial</TD>
<TD>Freezes</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCColHead<BR><IMG SRC="TOVCTCCOLHEAD.bmp"></TD>
<TD>TComponent</TD>
<TD>Table column headings</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCRowHead<BR><IMG SRC="TOVCTCROWHEAD.bmp"></TD>
<TD>TComponent</TD>
<TD>Table row headings</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCString<BR><IMG SRC="TOVCTCSTRING.bmp"></TD>
<TD>TComponent<BR>(edits with TEdit)</TD>
<TD>Table cell for editing strings</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCSimpleField<BR><IMG SRC="TOVCTCSIMPLEFIELD.bmp"></TD>
<TD>TComponent<BR>(edits with TOvcSimpleField)</TD>
<TD>Table cell for editing strings, with validation</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Partial</TD>
<TD>Partial</TD>
<TD>Partial</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCMemo<BR><IMG SRC="TOVCTCMEMO.bmp"></TD>
<TD>TComponent<BR>(edits with TMemo)</TD>
<TD>Table cell for editing memo text</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCCheckBox<BR><IMG SRC="TOVCTCCHECKBOX.bmp"></TD>
<TD>TComponent<BR>(edits with TCustomControl)</TD>
<TD>Table cell for check box</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCComboBox<BR><IMG SRC="TOVCTCCOMBOBOX.bmp"></TD>
<TD>TComponent<BR>(edits with TComboBox)</TD>
<TD>Table cell for combo box</TD>
<TD>Dropdown problem w/o XP manifest</TD>
<TD>Working</TD>
<TD>Not working</TD>
<TD>Not working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCBitmap<BR><IMG SRC="TOVCTCBITMAP.bmp"></TD>
<TD>TComponent</TD>
<TD>Table cell for displaying bitmap</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Not working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCGlyph<BR><IMG SRC="TOVCTCGLYPH.bmp"></TD>
<TD>TComponent</TD>
<TD>Table cell for cycling thru glyphs</TD>
<TD>&nbsp;</TD>
<TD>Working?</TD>
<TD>Working?</TD>
<TD>Working?</TD>
<TD>?</TD>
<TD>?</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcTCIcon<BR><IMG SRC="TOVCTCICON.bmp"></TD>
<TD>TComponent</TD>
<TD>Table cell for displaying icon</TD>
<TD>&nbsp;</TD>
<TD>Working?</TD>
<TD>Working?</TD>
<TD>Working?</TD>
<TD>?</TD>
<TD>?</TD>
</TR>
<TR VALIGN=TOP>
<TD>TO32TCFlexEdit<BR><IMG SRC="TO32TCFLEXEDIT.bmp"></TD>
<TD>TComponent<BR>(edits with TO32FlexEdit)</TD>
<TD>Table cell for editing strings, with validation</TD>
<TD>&nbsp;</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Working</TD>
<TD>Partial</TD>
</TR>
<TR VALIGN=TOP>
<TD>TOvcController<BR><IMG SRC="TOVCCONTROLLER.bmp"></TD>
<TD>TComponent</TD>
<TD>Key-to-command translator</TD>
<TD>Property editor uses TTabSet</TD>
<TD>?</TD>
<TD>?</TD>
<TD>?</TD>
<TD>?</TD>
<TD>?</TD>
</TR>
</TABLE>
<BR>
Notes:<BR>
(1) "Working" means control is basically functional. "Partial" means
control compiles, installs in IDE and displays at run-time, but doesn't function
correctly. "Not working" means control compiles and installs in IDE but
doesn't display correctly. "Widgetset doesn't support" means the widgetset
currently does not provide the support needed for the control.<BR>
(2) TOvcSimpleField and TOvcTable require a TOvcController on form.
However, TO32FlexEdit doesn't need TOvcController.<P>
<HR>
<A name="To_Do"></A><H3>To Do</H3>
<UL>
<LI>TOvcLabel
<UL>
<LI>Figure out why TOvcColorComboBox controls in Style Manager property editor
don't work on Windows.
<LI>Figure out why Color's default value (clNone) displays black
background with GTK. Workaround for now is to set TOvcLabel's
ParentColor to True in Object Inspector or select a different Color.
</UL>
<LI>TOvcVirtualListBox
<UL>
<LI><strike>Fix scrolling problems on Windows (not repainted right) and other platforms
(scrolls too many with each click of arrow).</strike> &lt;==<I>Fixed in 0.2.0 release.</I>
<LI><strike>Figure out why double-click doesn't work on GTK.</strike> &lt;==<I>Fixed.</I>
</UL>
<LI>TO32FlexEdit
<UL>
<LI><strike>Figure out why, on Windows, presence of XP manifest prevents setting Text.</strike>
&lt;==<I>Appears to be fixed with 20070401 Lazarus.</I>
<LI><strike>Come up with workaround for LCL's lack of MakeObjectInstance for making
callback function from method. Without this, control's validation is not
performed.</strike> &lt;==<I>Workaround in 0.1.3 release fixes this on win32 widgetset.</I>
&lt;==<I>Partial workaround in 0.2.0 release for other widgetsets is to call
SendMessage(TO32FlexEdit(Sender).Handle, OM_VALIDATE, 0, 0); in OnExit handler.
See TestFlexEdit example.</I>
<LI><strike>Can't tab out of control on Windows with win32 widgetset (tabbing works
with qt widgetset on Windows though).</strike> &lt;==<I>Fixed in 0.1.3 release.</I>
</UL>
<LI>TOvcTable
<UL>
<LI><strike>Custom cursors not visible when sizing and moving columns and rows.
Determine whether this is an LCL limitation.</strike> &lt;==<I>Recently fixed in
Lazarus for Windows.</I>
<LI>Sizing and moving columns and rows doesn't work at all with GTK or Carbon.
Determine whether this is a GTK/Carbon limitation.
<LI><strike>Table scroll bar "thumb" extends entire length of scrollbar with GTK.</strike>
&lt;==<I>Fixed in 0.2.0 release.</I>
<LI>Figure out how to move edit cell to stay with its row when scrolling
table (non-Windows only).
<LI>Figure out why scrolling table with keyboard doesn't repaint table with Carbon.
Possibly related to TestTable issue with Carbon where selecting a .bmp in the
combo box cell doesn't display the bitmap in the next column until form is resized.
</UL>
<LI>TOvcTCComboBox
<UL>
<LI>Figure out why, on Windows, won't drop down without presence of
XP manifest.
</UL>
<LI>TO32TCFlexEdit
<UL>
<LI><strike>Need a way of setting OnValidationError handler (an apparent omission
since TO32FlexEdit has it).</strike> &lt;==<I>Workaround in 0.2.0 release is to
set TO32TCFlexEditEditor(Sender).OnValidationError in UserValidation handler.</I>
</UL>
<LI>TOvcSimpleField and TOvcTCSimpleField
<UL>
<LI>Recent improvements in GTK and Carbon widgetsets mean these controls no
longer crash programs when they're used. However, they don't yet work as edit
controls. Determine whether this means more improvement in widgetsets is needed.
(Use TO32FlexEdit and TO32TCFlexExit in the meantime.)
</UL>
<LI>TOvcTCBitMap
<UL>
<LI><strike>This previously worked, but changes to Lazarus LCL now cause it to crash
when cell gets focus (win32 only).</strike> &lt;==<I>Fixed in 0.2.0 release.</I>
</UL>
<LI>TOvcController
<UL>
<LI>Rewrite ovccmdp0.pas property editor to use TTabControl instead of
TTabSet (not part of LCL).
</UL>
</UL>
<HR>
<A name="Other_Resources"></A><H3>Other Resources</H3>
Status of Lazarus widgetsets:<P>
<A HREF="http://wiki.lazarus.freepascal.org/Roadmap">http://wiki.lazarus.freepascal.org/Roadmap</A><P>
OS X tips for Lazarus:<P>
<A HREF="http://wiki.lazarus.freepascal.org/OS_X_Programming_Tips">http://wiki.lazarus.freepascal.org/OS_X_Programming_Tips</A><P>
<P>
<HR>
Last updated: Sept. 21, 2009
<P>
</BODY>
</HTML>