I think TDirectoryEdit has bug or malfunction.
OnAcceptDirectory called if user selects from Dialog.
OnEditingDone called if user press [enter] in TEdit .
I would change this and OnAcceptDirectory should be called for both cases.
Pressing to [enter] meaning "I want it, I selected this."
This will also be inconsistent:
You cannot simply call OnAccept* in EditingDone since that will be triggered also when the user, from inside the edit, clicks the button.
Why then call OnAccept* only when user pressed enter (as an indicator the he is done editing), but not when user exits the control?
The OnAccept* event IMO should anly be used for validation if DirectInput = False, or ReadOnly = True.
In other cases the input should be validated when it is used later on in the code.
Bart