Will er selber ein INSERT machen, dann wäre SelStart schon relevant. (Inhalt auslesen, einfügen und wieder zuweisen)
Mit SelText kann man den selektierten Text an der Cursorposition ersetzen, also vorher noch ein SelLength:=0, da man sonst eventuell ersetzt und nicht einfügt.
So wie er das Vorgehen im ersten Post beschrieben hat (Caret im Edit an Einfügeposition setzen, dann auf ListBox klicken), muss nichts weiter geschehen. Das Standardverhalten beim Schreiben von TEdit.SelText ohne selektierten Text ist das Einfügen an die Caret-Position, was genau dem gewünschten Verhalten entspricht.
Sollte allerdings ein Text im Edit markiert sein, wird dieser ersetzt - ich vermute, das ist dann aber auch so erwünscht.
Diese ganze Rumrechnerei und der Code in EditMouseDown und EditKeyUp sind vollkommen überflüssig und lenken nur von der eigentlich sehr simplen Lösung ab.