DM2003 QA list

Generated at: 09.06.2012 17:33:30

This file contains a list of open QA items for all binary units of DM2003 software. See also history.htm for additional information.


  • dm2003
  • Priority: 4
  • todo
DMAppHelper and interactive samples
in DM2003 HTML Help. It was discovered that help
viewer uses (by design!) separate thread so that
instances of helper object are in another COM
apartment and cannot be accessed without errors.
More details can be found here
So that, it is possible to modify DM2003 so that
help system will use the same thread and helper
object will work as expected.
========== 12:53 22.02.2012 ==============
Another solution (more versatile) may be deemed.
As in case of LocalServer, the ActiveX component 
may do thread synchronization! So that, DOM may
be accessed from non-main VCL thhread. However, 
at the moment there is no ideas how to do this!


  • dm2003
  • Priority: 4
  • bug
Reset of menus and toolbars from
dialog may include (as an option) creation
of appropriate ActionBandItems from INI files!
Certainly only items for appropriate ActionBar.
===== 20:50 12.05.2012 =====
A checkbox should be made near Reset button,
and, probably, a link to commandimport.htm


  • dm2003
  • Priority: 4
  • todo
UI - Toolbar behavior. May be useful
if separate actionBars on the main toolbar 
may depend on the active object, as in MS
Visual Studio or Office. To make such 
functionality scriptable, it's sufficient
to give access to the toolbar visibility
via Server.Options() property! With the
toolbar name as a parameter.


  • dm2003
  • Priority: 5
  • todo
Migration - problems with
DrawGrid, by default it has Themed
style. Probably style selection should
be added, also in the Properties dialog
a combobox for element's colors should 
be used instead of RG, with new items.
==== 10.05.2011 ====
Temporary fix applied - DrawingStyle set
in the TDataForm.FormCreate event handler.
Also in CoMain, doWorksheetProperties.


  • dm2003
  • Priority: 5
  • todo
Migration - cannot open 
Main Form because of TPopupActionBarEx,
that are replaced by new components.
Although compilation possible with old
unit, replacement should be considered
(or installation of those component?).


  • dm2003
  • Priority: 4
  • bug
Migration - additional 3
MDI buttons in the menu. Also, DM2003 eats
100% CPU when data window is maximized.
Modify the code for new versions? or try
to use old (patched) ones?!
======= 06.05.2011 ============
Patch from D7 applied (all of ActionBands)


  • dm2003
  • Priority: 4
  • bug
Migration - wrong focus
behavior: if there is a data window (focused)
and a docked Notes, and we click Alt to go to 
menu, focus jumps to Notes!! This is also the 
result of new ActionBands library.
======= 06.05.2011 ============
Patch from D7 applied (all of ActionBands)


  • dm2003
  • Priority: 5
  • todo
Migration - change all fonts in 
all forms to the Unicode font as in demos
======= 06.05.2011 ============
Almost all done. Exceptions are:
Splash itself (??); Reopen Menu button on Toolbar
(probably default Tahoma font is used), DateTime 
Help labels in Axis and Worksheet properties dialogs 
are without underline (???). MsgBoxes seem to use
Unicode-supported system font.
====== 20.06.2011 ========
If a series has Unicode symbols in Text, [+] tool
(Scroller) will display squares in Status Line!
Which seems to be missed!!! so that Unicode 
messages and hints will be unavailable!
=== 3:11 22.01.2012 ===
Graphics.DefFontData - instead of fixups?!!


  • dm2003
  • Priority: 4
  • bug
Migration - toolbar creep (XP)
======= 06.05.2011 ============
Coolbar.OnResize cleared as earlier.
======= 12.05.2011 ============
The problem persists!!! on Windows7, 
creeping again in Aero and simplified
modes (not in classic). Temporary 
workaround solution applied...


  • dm2003
  • Priority: 4
  • todo
COM - localserver performance.
As was determined (see test\localserver_perf),
localserver has bad performance because of
message synchronization, which forces Actions
update at every call to Object Model. As a 
workaround, it is possible to hide toolbar to 
minimize the number of updates.
However, there is an idea to catch these 
messages in the OnMessage event handler
and (depending on server option) block
action updates. This should be a definitive
solution for all these troubles.


  • dm2003
  • Priority: 5
  • todo
XML workspace import/export.
There are 2 possibilities: make it in
VCL code (may be in load/save desktop
members, by file extension - dmwz) and
using COM members (dmwx). First method
allows to save exact copy of binary DMW,
but must be implemented in DM2003 and 
potentially less portable. Second method 
has 2 directions: a) in script - easiest
but less compact, depends on installed
ActiveX; b) in provider - 2 actions for
import/export, more compact because it
can use TLB, more portable. Both methods
however can't produce full equivalent of
the DMWs. In addition to MergeDMWNotes
new OpenSaveFilter option should be made
for better user experience.
======== 1:19 24.02.2011 ============
Probably right version is a VCL-generated
compressed XML (as docx). How to check that 
all properties are saved: save, load, save
and compare two saves.
If not everything is saved, nobody will 
use this format - because binary is better.
If one needs some specific XML export, it is
already possible to implement via COM.
Also: make special DMW->XML convertor utility?


  • dm2003
  • Priority: 4
  • bug
Series Manager bug. How to
reproduce: launch nist nlsf test, 
browser and SM are docked! after
execution SM will display series!


  • dm2003
  • Priority: 4
  • todo
Rich text in Notes.
As we have implemented rich text in 
data windows, it's time to think
about Notes. Since tools like NLSF
save in Notes columns etc, we could
imagine that formatting may be used
as well... We need to implement however
programmatic insertion of formatting,
and actions like sub/sup and Ins Symbol


  • dm2003
  • Priority: 4
  • todo
Rich text - SeriesMgr.
We could implement really total support 
if we use Rich text in series manager, 
series combobox and DMForms combos.
BTW: seriesmgr can be relatively easily
implemented using Delphi Grid!


  • dm2003
  • Priority: 5
  • todo
Undo in series (mgr, plot)?
plot.saveundoinfo, plot.undo, plot.canundo.
Remember whole series array? how to be with 
individual series property changes?
========= 23:16 23.02.2011 =========
It was decided that Undo command is linked
to Copy/Paste in some sense. So that, not
every change can be rolled back. The most 
useful and intuitive would be to Undo changes
made in single series (SM) and label by Paste,
Cut, Delete and maybe Change Properties operation.
Technically, we can make special TSerie and 
TPlotLabel (as in TDMWorksheet.CopyToClipboard)
fields in Data Window. If IDMDocument2.SaveUndo
is called with a special Info parameter (a GUID
or some other constant, also available in TLB),
UndoContainer not used, but some label or series
(active? or which???) is assigned to that buffers.
Also, special hint should be displayed, as in case
of legacy SaveUndoInfo method.
Accordingly, IDMDocument2.CanUndo and Undo are
also aware of SaveUndo operation type, as 
displayed in the hint. Such changes may be useful
and do not require hard coding.
======= 1:03 13.05.2012 =========
Another good (at a glance) idea: it is possible
to use serialization instead of special undo 
objects!! And save/load state in the same way
as for desktops, into special memory stream. It
is possible to save window as a whole (may be 
not optimal if data array is big!), or separate
objects - plot, worksheet...


  • dm2003
  • Priority: 4
  • todo
Fitters - improvements.
1) Add checkbox in Fitting Results group 
to enable generation of plot label (brief
version of text in Notes)
2) Automatically (or by checkbox) set fit
color according to point color in data series,
also clear line visibility for data.
==== may 2010 ==============
Done for levmar fitter application! 
To do - main LM fitter. Also in standard NLSF
resizing of controls should be made.
===== also to do: ==========
a) automatic NLSF weighting (matlab)
b) reverse of selector (cutting off undesirable 
areas, may be several - see drawframes.htm sample)
c) manual point masking (special series)


  • dm2003
  • Priority: 4
  • todo
Mouse wheel - invokes scripted actions?
Problem: this ^ is simple, but not good - it
would be more consistent to change coordinates
of the axis where cursor is placed above.
========== 13:49 10.02.2007 =============
Following solution may be proposed: either 
add methods of DMPlot that change coordinates
and invoked from OnMouseWheel and actions; or
extend the event set so that information about 
clicked point will be included (Event object
as in Browser?).
========== 1:24 27.04.2011 ==============
More natural interface should have following
behaviour: if cursor is above axis area, wheel
shifts BOTH coordinates up/down; but if it is
inside frame, zoom/unzoom performed! Also it
should change coordinate if the middle button 
is pressed to avoid accidental changes.


  • dm2003
  • Priority: 4
  • bug
EXIT crash in Close. 
In spite of new QA number, this problem is known
since first versions. Symptoms are as follows: When
DM2003 terminates, sometimes (rarely and cannot be 
reproduced) an error message Cannot hide MDI window
is displayed followed by AV. Under debugger, AV occurs
in TDMDocument.CloseDoc, but it can't be trapped 
neither there nor in mainform.onclose.
After experiments with multiple sinks it was noticed 
that CloseDÓc is called AFTER destruction of main
application object, that is, data windows are killed 
after main form (MDI client). However, freeing in 
the beginning of MainForm.OnDestroy does not solve 
this problem. 
==== 2:58 22.08.2005 ====
Problem persists even after replacement Free<-Release
and waiting for all data window close. BTW, debugger 
points to the MENU! it seems that the problem is 
there (maybe because of UpdateMDIMenu call).
============ 2:01 24.02.2011 ===============
Resume: this bug is hard to reproduce and usually 
appears only after first start (when no config.bin 
exists), and its most probable origin is inside 
notorious ActionBands library.


  • dmeditor
  • Priority: 4
  • bug
simple_daq.htm - error! if Run 
button quickly pressed twice (Scan=on), sometimes
points appear twice for every scan (X) value!
This is of course an error in template...


  • dmeditor
  • Priority: 5
  • todo
Web Index improvements:
a) process DMW (include description in page body?)
b) context menu in HTML wizard (file list)
c) other files? images, etc??
d) use full page height instead of fixed
See also root todo_txt for more details.


  • library
  • Priority: 4
  • bug
long series with thick lines may
crash videodriver! especially log pens.
Solution: warning message in UI?
==== 21:00 19.08.2011 ====
On XP+ (for W9x this is not important!) it is
possible to show balloon! see [test\balloon\]
==== 12:08 01.09.2011 ====
10000 line segments work fine on l3c, so it is
important to determine real limitations!


  • library
  • Priority: 4
  • todo
PlotLabel - maybe, it will be
useful to return label size (in pixels) for
text labels and legends in the secondary
coordinate!!! As a result, it will be 
possible to make compound labels such as
shades, programmatically.
==== 21:00 19.08.2011 ====
Also, shades may be introduced by special 
tag, as in case of legends! Multi-column
legend also may be formatted using additional
html tags
==== 12:01 01.09.2011 ====
Another idea: since the texts and legends
determine its size by the text, it is very
consistent to RETURN another (unused) coordinate
which defines real position, that is, just make 
it read-only! There is the only problem - with
text alighment, but it is not overwhelming.


  • library
  • Priority: 4
  • todo
Axis label format string.
We use 3 numbers for backward compatibility
and a string for date/time. However, one
can use much more versatile solution - 
Format() procedure with strings! And this
is almost ready to implement. In this 
string, for example, one can add arbitrary
prefix and suffix to the label value, and
use more format specifiers.


  • library
  • Priority: 5
  • todo
Date/time labels and smart
ticks. It would be very convenient if
smart ticks take into account special
case of label formatting!


  • library
  • Priority: 5
  • bug
Axis bug (failed assertion).
fragility_tau_t.dmw, Beta_CD vs T (Insets)
window - enable autoscale to get error!
See also axis_bug_Assert_QA0109082010.dmw


  • library
  • Priority: 4
  • todo
Z order (series, areas, labels).
now we can only determine whether areas
painted just before their series or 
before ALL series. However, other modes
can be considered - for example, series
above or below labels, may be individually -
each label have appropriate flag. Or, the plot
may have special property.


  • library
  • Priority: 4
  • todo
New TData types. Currently
TData is abstract, TRealData is default
data items. However, both plot and 
worksheet can display (by design) other 
types. This ability should be tested!
TStringData (or TFunction) as in dm2kvcl,
plot and worksheet support - MAKE DEMO!
TStringData preferred since it can display
words, so worksheet may be like traditional
spreadsheet. Another ability is to make 
descendant of TRealData and redefine its
members (must be made virtual!), since 
a lot of code depends on columns. In this
way DM2003 may be enabled to display text
in worksheet cells!!!


  • library
  • Priority: 4
  • todo
Label editor status text.
At present, ShowCoordinates in MouseMove
displays hints by axes set in doLabelEdit.
So that, this information may be
inappropriate if axes scale not used.
====== 15:21 24.01.2011 =======
Recently status text was corrected for
date/time format, but NOT for label editing. 
The problem is that we should display different
values dependent on PinMode (for X,Y) and 
selected label point (x,y1 or x,y2). As a
result, special local sub may be required.


  • library
  • Priority: 4
  • bug
PaintAxes2 problem.
The matter is that axis must be painted before 
series - because series uses float->int scaling 
which is initialized in taxis.paint(). As a result,
series areas may hide inner ticks an grid lines,
and other axis elements if clippoints is off.
PaintAxes2 conditional directive just paints
axes again after series, which may be not good
since elements in metafile duplicated. Besides,
there's visual effect on cleartype-affected
fonts!!! At the moment there's no good solution.
==== 12:11 01.09.2011 ====
The main problem is as follows: in order to paint
data or labels before axis, we have to establish
real-integer scaling, which assumes that the position
of axis is known. But in AutoMargins mode it depends
on the tick label values!!! so that the amount of
calculations still very large. Also, we'll need 
additional props to define Z order.


  • proppage
  • Priority: 4
  • todo
New shell extension: thumbnails
for desktop files (from preview). Yes, it
is small, but may be still useful. Also:
1) implementation is system-dependent (W7)
2) shell extensions for data files: tooltips,
infotips and metadata (see other todo item).


  • fitter
  • Priority: 4
  • todo
levmar - it is possible to change
C++ source code of the library (conditional
compilation) to add a call to a function
where iteration counter is incremented.
Another improvement - to replace text
output by exceptions.


  • fitter
  • Priority: 5
  • todo
levmar - Other constraints modes
(and required for them LAPACK support)