Fíjate en estas líneas:
Código:
Edit1->Visible=true;
String s=Edit1->Text;
Haces visible el Edit e inmediatamente capturas el valor de Edit1->Text ... esto.... no estas dejando tiempo al usuario para que escriba algo

.
Ahí está el quid de la cuestión, ¿Cuando quieres hacer desaparecer el TEdit?
- Cuando el usuario pulse la tecla Intro (usar el TEdit.OnkeyUp para pintar el texto y después ocultar el TEdit)
- Cuando el foco salga del TEdit (usar evento TEdit.OnExit).