
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6124 8e941d3f-bd1b-0410-a28a-d453659cc2b4
777 lines
26 KiB
HTML
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>
|
|
|
|
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> </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> </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> </TD>
|
|
<TD> </TD>
|
|
<TD> </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.
|
|
<==<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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> <==<I>Fixed in 0.2.0 release.</I>
|
|
<LI><strike>Figure out why double-click doesn't work on GTK.</strike> <==<I>Fixed.</I>
|
|
</UL>
|
|
<LI>TO32FlexEdit
|
|
<UL>
|
|
<LI><strike>Figure out why, on Windows, presence of XP manifest prevents setting Text.</strike>
|
|
<==<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> <==<I>Workaround in 0.1.3 release fixes this on win32 widgetset.</I>
|
|
<==<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> <==<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> <==<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>
|
|
<==<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> <==<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> <==<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>
|