Personally I forsee many problems because of the different published properties.
Yes, uhh!
Now I looked properly the recent development of derit's ButtonEdit. It has gone bad.
Last time I looked was the initial version when he started this thread.
It is the 2. commit in the repository, titled: "New Repo", SHA1: e0f751a0f5eba00b65f
What pulled my attention was this in constructor:
with FEdit do
begin
Align := alClient;
BorderStyle := bsNone;
Parent := Self;
ParentColor := True;
OnChange := @DoEditTextChange;
OnClick := @DoEditClick;
OnExit := @DoEditExit;
OnEnter := @DoEditEnter;
OnKeyDown := @DoEditKeyDown;
OnKeyPress := @DoEditKeyPress;
OnKeyUp := @DoEditKeyUp;
OnMouseDown := @DoEditMouseDown;
OnMouseUp := @DoEditMouseUp;
OnMouseEnter := @DoEditEnter;
OnMouseLeave := @DoEditMouseLeave;
OnMouseMove := @DoEditMouseMove;
end;
and how the Do... methods and the events were done. (The Do... methods should not be virtual though).
I thought, this guy must be clever. He got this right while others have failed.
Even his initial naming "ButtonedEdit" was superior to our current EditButton. (I think we should use the better name and make EditButton a deprecated alias).
After that things started to go wrong for some reason. Working with Lazarus sources did not work well, and this separate component has become worse. Now it is as bad as the Blaazen's version (sorry Blaazen).
I think I under-estimated the difficulty of this task. Sorry everybody about that. Now I see 2 ways to go:
1. I make the component based on commit "New Repo", SHA1: e0f751a0f5eba00b65f.
I can put it inside an IFDEF if really needed.
2. Bart has now a vision of this component and energy to implement it. I suggest Bart takes charge on the issue.
You can use the "New Repo" commit or any other code as a base.
Using IFDEFs is ok. Just don't make a completely separate component because we really need a replacement for the current buggy TEditButton.