Por lo que dices supongo que estás haciendo un programa de consola (modo texto). Lo que te sucede es el comportamiento normal y lógico del programa en cuestión. Como es un programa de consola al ejecutarse crea la ventana de consola, hace lo que tiene que hacer y al finalizar éste pues la ventana se destruye. Es diferente si lo ejecutas desde el símbolo de sistema porque la ventana de consola ya está creada y no es responsabilidad de tu programa destruirla.
La solución consiste en poner una pausa antes de que el programa termine. Por ejemplo poniendo un ReadLn(); antes del end final, eso hará que el programa no se termine hasta que presiones "enter".