Disappointed with Curvy Controls

The more we use the curvy controls, the more disappointed we are with them.  They look nice.  And they have a couple of great features like the EmptyText property.

But they don't behave like "standard" controls.  First there was the SetFocus issue, which was fixed.  But then we determined that they don't behave well with TCustomForm.ActiveControl, because it is actually the hidden edit control that needs to be focused (all TCurvyEdit.SetFocus does is call FEdit.SetFocus).

Often times, standard "TEdit" functionality that you'd expect to work doesn't work.  Today I just threw together a hack so TCurvyEdit.SelectAll would work.  I notice in the latest update that TCurvyMemo.SelectAll was implemented but TCurvyEdit.SelectAll is still missing.  It boggles me that one would have been implemented but not the other.

In generally, I wish the components had a full native implementation of all functionality expected from the corresponding standard control, instead of using an internal "hidden" standard control to provide most of the control's functionality.

For example, because TCurvyEdit.Handle doesn't provide the handle of the control that is really being used, you can't pass messages to TCurvyEdit and it work as expected.

Even though TCurvyEdit is a descendent of TWinControl, it overrides the Controls property in a way that is not at all compatible with TWinControl.Controls.  As an example, here's what I found to work with ActiveControl:

    ActiveControl := TWinControl(TWinControl(edtPassword).Controls[0]);

I had to cast the TCurvyEdit to TWinControl to access that property so I could get to the internal FEdit (since it isn't publicly accessible) so I could assign it to ActiveControl.  Of course, edtPassword.SetFocus is easier.  But I prefer to use the ActiveControl property on a form at design-time to designate the control that will be active when the form is displayed.  This is standard VCL functionality that doesn't work with the Curvy Controls.  The exercise above was my way of trying to find a way that it could work.  If TCustomForm.SetWindowFocus were virtual, I could override it and get ActiveControl to work with the Curvy Controls on our forms.  But alas..

Some of the shortcomings we encounter, like SelectAll (and SetFocus before it) could easily be addressed by making the FEdit control publicly accessible.  Then we could just call the appropriate method on FEdit, rather than creating a hacked class to access FEdit or modifying the CurvyControls.pas source directly.  But even that won't solve the issue with ActiveControl.  :(

Thanks for reading this far.  Hopefully my disappointment will inspire some improvements.


I too thought the Curvy Controls were good initially until  I threw together a quick program last evening using them and these are the minor problems I have found (not mentioned above):

All Curvy Controls:
TabStop reverts to False each time the project is closed

Curvy Combobox:
No "Sort" property in the Object Inspector

We looked into this and improved several things.

1) Issue with ActiveControl is fixed
2) SelectAll/SelStart/SelLength/SelText are exposed in all Curvy* edit controls
3) Edit/Combo are exposed as public properties
4) TabStop issue is fixed
5) Sorted is exposed in TCurvyComboBox

All this will be available in the next release.

Many thanks.


Sorry, managed to delete the important part of the above post...

Could you create more Curvy Controls please especially the commonly used ones. For example ListBox (and descendants), RichEdit, GroupBox (and descendants) etc..

Many thanks.


Thank you Bruno!  Anxiously awaiting the next release!